Kilotest

io.github.jrpool由 GitHub 帳號 jrpool 發布v64.0.0更新於 Nov 8, 2026

Ensemble testing of web pages for accessibility, usability, and web standards

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取開發者工具

概覽

AI 產生的概覽

Kilotest 以多規則引擎組合測試網頁的無障礙性、可用性與 Web 標準,並讓助理瀏覽及下單取得測試報告。

可以做什麼
  • 找出已測試頁面及其最新報告識別碼
  • 檢視報告中的問題、違反問題的元素,以及各引擎提出的診斷
  • 一次呼叫取得完整報告的 JSON
  • 申請或立即下單新測試與重測,並等待結果
  • 提交功能請求與對診斷的異議,交由管理員審核
  • 讀取服務概觀、工作流程與結果結構說明
適用情境
適合讓助理檢查網頁的無障礙性、可用性或 HTML、CSS、ARIA、WCAG 合規情況,檢視既有測試結果,或觸發一次新測試並讀取產生的報告。
執行需求
透過 streamable HTTP 連線到 kilotest.com 的遠端 MCP 端點;README 說明此 MCP 伺服器不需驗證。未宣告任何套件、環境變數或標頭。實際測試由 Testaro 工作節點執行,單一頁面測試通常需 2 到 4 分鐘。
安裝前請注意
多個工具會送出請求或訂單並改變伺服器端狀態:新測試、重測、功能請求與診斷異議。訂單會自動核准或拒絕並實際排入測試工作,佔用工作節點資源。報告可能包含受測頁面的細節,除非部署本來就針對內部頁面,否則不要送出內部或敏感網址。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Kilotest,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.jrpool%2Fkilotest/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "kilotest": {
      "type": "http",
      "url": "https://kilotest.com/mcp"
    }
  }
}

README

Kilotest

[npm version] [license] [MCP Registry] [GitHub stars] [Indexed on TensorBlock MCP Index] [mcptry] [SealKeeper Service SEAL]

An ensemble testing and reporting service for front-end web quality

Features

This application uses an ensemble of 12 rule engines to test web pages for front-end quality (i.e. accessibility, usability, and web standards, including HTML, CSS, ARIA, and WCAG).

The testing paradigm employed by Kilotest is discussed in these papers:

Kilotest acts as a web server for human users, an MCP server (streamable HTTP, no authentication) for AI platforms, and an API for programmatic access.

Testing for Kilotest is performed by one or more workers (testing agents) that obtain jobs from Kilotest, perform them, and send reports of the results back to Kilotest. Those agents are instances of the Testaro package. Thus, the pages that Kilotest tests need not be on the public Internet. They need only be reachable by the Testaro workers that do the testing for Kilotest. So, one or more Testaro workers running inside a private intranet can test internal pages, as well as any external ones reachable from inside the intranet.

An active production instance of Kilotest may require multiple Testaro workers to handle the load, because testing one web page typically takes 2 to 4 minutes and workers test only one page at a time.

Getting started locally with 1 worker

Installation

In the steps below, hosts T and K may be the same host or two different hosts. Host T can be a Debian stable, Ubuntu LTS, Windows, or macOS host. Host K can be any server host that can run the latest LTS version of Node.js. If hosts T and K differ, then they must be open to https traffic and host K must permit https requests from host T.

  1. Clone the Testaro project into a new directory on host T.
  2. In that directory, install the Testaro dependencies: npm install.
  3. Update the Testaro dependencies and rebuild: npm run deps.
  4. Clone the Kilotest repository into a new directory on host K.
  5. In that directory, install the Kilotest dependencies: npm install.
  6. Copy the env.testaro file from the kilotest directory to .env in the testaro directory and replace the __placeholder__ values in .env with actual values.
  7. Copy the env.example file in the kilotest directory to a new .env file in the same directory and replace the __placeholder__ values in .env with actual values. TESTARO_WORKERS is a JSON object mapping each Testaro worker's ID to an object with its secret and its name; the ID and secret for a worker must match the NETWATCH_URL_WORKER_ID and NETWATCH_URL_AUTH values in that worker's .env. A worker authenticates each request with an HTTP Basic Authorization header (id:secret, base64-encoded); as of this writing that header is not yet sent by the published Testaro package, so this scheme requires a matching update to Testaro's netWatch.js request code (only to send the header; no change to Testaro's handling of jobs or reports is needed). The ID is a credential and is never published; the name is written by Kilotest into a job's and report's sources.worker property, which Testaro does not read or alter, so it is a distinct property from sources.agent (Testaro's own, untrusted, self-reported label, which Kilotest ignores). Choose a name that is safe to appear in every report Kilotest serves. ALLOW_INTERNAL_TARGETS controls whether this deployment can be induced to test pages at private, loopback, or link-local addresses; see SERVICE.md before changing it from its default.

Usage

  1. In the testaro directory, make Testaro start listening for jobs: node call netWatch true nn true, where nn is the number of seconds to wait between checks for new jobs. Note that Kilotest promises nearly immediate review and, on approval, immediate execution of “orders” for tests and retests, with typical total elapsed time 2 to 4 minutes. That promise implies a promise to keep nn small. A reasonable value is between 10 and 20.
  2. In the kilotest directory, start the Kilotest service: node index.

Contributing

Contributions are welcome! You can use GitHub issues to initiate discussions and propose changes. If you want to contribute code, please fork the repository and create a pull request.

Making Kilotest a service

See the SERVICE.md file for instructions on how to make Kilotest a service.

Using Kilotest as an AI tool

Kilotest is not only a web application but also an API and an MCP server. AI platforms and models can use Kilotest via those interfaces.

The public URL for models using the MCP server at kilotest.com is https://kilotest.com/mcp. The MCP server is registered at several registries. See AI-TOOLS.md for details.

There is additional documentation at:

Maintenance

These are the routine steps for maintaining Kilotest as currently deployed.

No API changes

When you make a change in a feature branch without any API or tool contract change:

  1. Stage, commit, and optionally push all changes.
  2. Execute npm run prePR -- <level> (major, minor, or patch).
  3. Submit a pull request.
  4. When all checks succeed, squash-merge to main and delete the feature branch on GitHub.
  5. Execute npm run postPR (with interactive browser authentication).
  6. Wait until npmjs.com has processed the publication.
  7. Use git pull, npm ci, and pm2 restart kilotest (but not npm audit fix) to deploy the revised main branch on the public server.

API changes

When you make an API or tool contract change in a feature branch:

  1. llms.txt, llms-full.txt: Update narrative descriptions of the changed tools or parameters.
  2. capability.md and README.md: Update their prose to describe the changed behavior.
  3. Stage, commit, and optionally push all changes.
  4. Execute npm run prePR -- <level> (major, minor, or patch).
  5. Submit a pull request.
  6. When all checks succeed, squash-merge to main.
  7. Execute npm run postPR (with interactive browser authentication).
  8. Wait until npmjs.com has processed the publication.
  9. Use git pull, npm ci, and pm2 restart kilotest (but not npm audit fix) to deploy the revised main branch on the public server.
  10. Visit the RapidAPI Studio and update the API definition at Hub Listing → Definitions → CI/CD → Import OpenAPI by uploading the regenerated openapi-3.0.yaml.
  11. Visit the Claude directory, edit any changed entries, and submit the changes.

If any step fails, see the details in docs/AI-TOOLS.md for troubleshooting instructions.

來源:README.md,提交 2a56386

工具

11

getOverview

Explain Kilotest and its tools

Explains what Kilotest is, what its tools do, and how its results are structured. Use this before any other tool when the available tools or workflow are unclear; it is unnecessary once you know which tool you need. Returns a prose overview of the Kilotest domain, the tool workflow, and links to further documentation. Kilotest tests web pages for front-end quality with an ensemble of rule engines.

無需輸入參數。

listPages

List tested pages

Lists all pages Kilotest has tested. Use this first to discover whether a page already has any reports before requesting a test. Returns, for each tested page, its description, URL, and the identifier of its latest available report. Entries are sorted by page description and are not paginated.

無需輸入參數。

listIssues

List issues in a report

Lists the issues reported in one report, along with the history of all reports about the same page. Use this after listPages to switch to an earlier or later report or to begin examining this report. The reportID is the latest report’s identifier from listPages or an earlier identifier from the history this tool returns. Returns the history and the basics about this report’s issues, sorted by summary and not paginated; an unknown or malformed reportID produces an error. The returned issue identifiers are inputs to the listViolators tool. Use getReport instead when the entire report is needed in one call.

輸入參數reportID必填

listViolators

List elements exhibiting an issue

Lists the elements of a tested page that were reported as exhibiting one issue in one report. Use this after listIssues to drill down from an issue to the elements violating rules belonging to that issue; the issueID must be one of the issue identifiers listIssues returned for the same reportID; call listIssues first if you do not have an issueID. Returns basics about each violating element, sorted by catalog index and not paginated; an unknown issueID or reportID produces an error.

輸入參數issueID必填reportID必填

listDiagnoses

List diagnoses of a violation

Lists the diagnoses that rule engines gave for how one element exhibited one issue in one report. Use this after listViolators to get details about the element as a violator of the issue; the catalogIndex is the element’s identifier in the listViolators output for that issue and report. Use getReport instead when all diagnoses in the report are needed at once. Returns, for each rule engine that reported a violation by the element of a rule belonging to the issue, the diagnosis given by the rule engine; an unknown report, issue, or element produces an error.

輸入參數issueID必填reportID必填catalogIndex必填

questionDiagnosis

Question a diagnosis

Questions or contests a diagnosis shown by the listDiagnoses tool; queued for review by management. Use this after listDiagnoses when you believe a rule violation was incorrectly diagnosed or classified into an issue, providing the issueID, reportID, catalogIndex, engineID, and ruleID shown in the diagnosis and your reason. No authorization is required; a nonexistent report, element, or diagnosis produces an error. Returns a confirmation with disposition details.

輸入參數reason必填ruleID必填issueID必填engineID必填reportID必填catalogIndex必填

getReport

Get a full report

Retrieves one entire report as JSON, with all of its issues, violators, and diagnoses. Use this instead of drilling down through listIssues, listViolators, and listDiagnoses when the full report is needed in one call; for only part of a report, drill down with those tools instead. The reportID comes from listPages or from the report history that listIssues returns, and an unknown or malformed one produces an error. The report can exceed 1 MB; its exact size is disclosed by the listIssues tool.

輸入參數reportID必填

requestNewTest

Request testing of a new page

Submits a request to test a page that has no report yet. Set reviewImmediately to true for immediate review with immediate approval or rejection and immediate enqueueing if approved (testing then typically takes 2 to 4 minutes); set it to false to queue the request for review by management, which typically takes 1 hour to 1 day. The description uniquely names the page in later listPages output and the reason is what the reviewer evaluates. A refusal, such as an existing report, a duplicate request, or a full queue, is reported in the disposition. Returns a confirmation with disposition details, including, on immediate approval, a report identifier and a question about whether to wait for completion with the awaitTest tool.

輸入參數URL必填reason必填description必填reviewImmediately

requestRetest

Request a retest

Submits a request to retest a page whose existing report is considered obsolete. Set reviewImmediately to true for immediate review with immediate approval or rejection and immediate enqueueing if approved (testing then typically takes 2 to 4 minutes); set it to false to queue the request for review by management, which typically takes 1 hour to 1 day. The reportID must belong to the page’s latest report and the reason is what the reviewer evaluates. A refusal, such as a superseded report, a duplicate request, or a full queue, is reported in the disposition. Returns a confirmation with disposition details, including, on immediate approval, a report identifier and a question about whether to wait for completion with the awaitTest tool.

輸入參數reason必填reportID必填reviewImmediately

requestFeature

Request a feature

Submits a request to add a new feature or improve an existing one; queued for review by management. Use questionDiagnosis instead to question a specific diagnosis shown by listDiagnoses. The feature text describes the proposed feature or improvement. A request identical to one awaiting review is refused, and otherwise the disposition confirms the request was logged and the manager notified. Returns a request confirmation with disposition details.

輸入參數feature必填

awaitTest

Wait for an ordered job to finish

Waits for a job that a requestNewTest or requestRetest call with reviewImmediately set to true ordered, using the report identifier that call returned. Use this instead of polling listIssues when an immediate answer is preferred. The reportID identifies a pending or in-progress job and remains the finished report’s identifier for listIssues and getReport. Blocks until the report is ready, the job fails, or a maximum wait time elapses (5 minutes by default), sending no interim notices; returns the finished job’s status and, if ready, its report identifier.

輸入參數reportID必填

版本歷史

30
  1. v63.2.2Nov 7, 2026
  2. v63.2.0Nov 6, 2026
  3. v63.1.8Nov 5, 2026
  4. v63.1.7Nov 4, 2026
  5. v63.1.6Nov 4, 2026
  6. v63.1.5Nov 4, 2026
  7. v63.1.2Nov 3, 2026
  8. v63.0.0Oct 31, 2026
  9. v62.0.0Oct 30, 2026
  10. v61.0.0Oct 30, 2026
  11. v60.9.1Oct 29, 2026
  12. v60.9.0Oct 26, 2026
  13. v60.8.0Oct 26, 2026
  14. v60.7.1Oct 25, 2026
  15. v60.4.1Oct 23, 2026
  16. v60.3.0Oct 22, 2026
  17. v60.2.0Oct 21, 2026
  18. v60.1.10Oct 21, 2026
  19. v60.1.8Oct 21, 2026
  20. v60.1.7Oct 20, 2026
  21. v60.1.4Oct 19, 2026
  22. v60.1.1Oct 19, 2026
  23. v60.0.9Oct 18, 2026
  24. v60.0.4Oct 18, 2026
  25. v60.0.2Oct 18, 2026
  26. v59.1.3Oct 17, 2026
  27. v59.1.0Oct 16, 2026
  28. v59.0.0Oct 10, 2026
  29. v57.0.0Sep 29, 2026
  30. v2.1.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分