Kilotest
Ensemble testing of web pages for accessibility, usability, and web standards
What can you do with Kilotest?
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http kilotest 'https://kilotest.com/mcp'
{
"mcpServers": {
"kilotest": {
"type": "http",
"url": "https://kilotest.com/mcp"
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
Kilotest
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:
- How to run a thousand accessibility tests
- Testaro: Efficient Ensemble Testing for Web Accessibility
- Accessibility Metatesting: Comparing Nine Testing Tools
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.
- Clone the Testaro project into a new directory on host
T. - In that directory, install the Testaro dependencies:
npm install. - Update the Testaro dependencies and rebuild:
npm run deps. - Clone the Kilotest repository into a new directory on host
K. - In that directory, install the Kilotest dependencies:
npm install. - Copy the
env.testarofile from thekilotestdirectory to.envin thetestarodirectory and replace the__placeholder__values in.envwith actual values. - Copy the
env.examplefile in thekilotestdirectory to a new.envfile in the same directory and replace the__placeholder__values in.envwith actual values.TESTARO_WORKERSis a JSON object mapping each Testaro worker's ID to an object with itssecretand itsname; the ID and secret for a worker must match theNETWATCH_URL_WORKER_IDandNETWATCH_URL_AUTHvalues in that worker's.env. A worker authenticates each request with an HTTP BasicAuthorizationheader (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'snetWatch.jsrequest 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; thenameis written by Kilotest into a job's and report'ssources.workerproperty, which Testaro does not read or alter, so it is a distinct property fromsources.agent(Testaro's own, untrusted, self-reported label, which Kilotest ignores). Choose anamethat is safe to appear in every report Kilotest serves.ALLOW_INTERNAL_TARGETScontrols whether this deployment can be induced to test pages at private, loopback, or link-local addresses; seeSERVICE.mdbefore changing it from its default.
Usage
- In the
testarodirectory, make Testaro start listening for jobs:node call netWatch true nn true, wherennis 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 keepnnsmall. A reasonable value is between 10 and 20. - In the
kilotestdirectory, 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:
- Tutorial: authorizing AI assistants to use Kilotest
- AI-TOOLS.md: how Kilotest implements the MCP protocol
- Summary of Kilotest capabilities
- llms.txt: basic documentation for LLMs
- llms-full.txt: comprehensive documentation for LLMs
- lhm.plugin.json: documentation for registration with the LobeHub MCP Market
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:
- Stage, commit, and optionally push all changes.
- Execute
npm run prePR -- <level>(major,minor, orpatch). - Submit a pull request.
- When all checks succeed, squash-merge to
mainand delete the feature branch on GitHub. - Execute
npm run postPR(with interactive browser authentication). - Wait until
npmjs.comhas processed the publication. - Use
git pull,npm ci, andpm2 restart kilotest(but notnpm audit fix) to deploy the revisedmainbranch on the public server.
API changes
When you make an API or tool contract change in a feature branch:
lhm.plugin.json: Transform it to matchapi/schemas.tsandmcp.ts.llms.txt,llms-full.txt,capability.md,README.md: Update parameter and path names.- Stage, commit, and optionally push all changes.
- Execute
npm run prePR -- <level>(major,minor, orpatch). - Submit a pull request.
- When all checks succeed, squash-merge to
main. - Execute
npm run postPR(with interactive browser authentication). - Wait until
npmjs.comhas processed the publication. - Use
git pull,npm ci, andpm2 restart kilotest(but notnpm audit fix) to deploy the revisedmainbranch on the public server. - Visit the RapidAPI Studio and update the API definition at
Hub Listing→Definitions→CI/CD→Import OpenAPIby uploading the regeneratedopenapi-3.0.yaml.
If any step fails, see the details in docs/AI-TOOLS.md for troubleshooting instructions.
Frequently asked questions
What is Kilotest?
Ensemble testing of web pages for accessibility, usability, and web standards
How do I install Kilotest?
It runs as a remote server. In Claude Code: claude mcp add --transport http kilotest 'https://kilotest.com/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does Kilotest need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is Kilotest open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains Kilotest?
It is published by jrpool. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.