comber-mcp
An MCP server for Comber — the
every-click QA agent. Point your editor's agent at a preview URL and it walks every inch of the
app, then reports the broken clicks, dead ends, console errors, and broken links right inline.
One server, every MCP client: Cursor, Claude Desktop, Claude Code, Windsurf, Zed.
Tools
comber_check | Crawl a web app / preview URL and report findings. Read-only by default. |
comber_api_check | Exercise an OpenAPI spec, GraphQL endpoint, or recorded HAR. |
comber_report | Pull the full findings list from a prior run. |
Checks are read-only by default — Comber does not submit forms or trigger mutations unless you
explicitly pass allowWrites. The optional LLM finding-judge only runs when you have your own
ANTHROPIC_API_KEY in the environment; nothing is billed to Comber.
Install
The server runs straight from npm — no clone, no build.
Cursor
Settings → MCP → Add new server, or drop this in .cursor/mcp.json (project) or
~/.cursor/mcp.json (global):
{
"mcpServers": {
"comber": {
"command": "npx",
"args": ["-y", "comber-mcp"],
"env": { "ANTHROPIC_API_KEY": "" }
}
}
}
Leave ANTHROPIC_API_KEY empty for heuristic-only checks, or set it to enable the LLM judge.
Claude Code
claude mcp add comber -- npx -y comber-mcp
Claude Desktop
In claude_desktop_config.json:
{
"mcpServers": {
"comber": { "command": "npx", "args": ["-y", "comber-mcp"] }
}
}
Windsurf
In ~/.codeium/windsurf/mcp_config.json — same mcpServers shape as above.
Zed
In settings.json:
{
"context_servers": {
"comber": { "command": { "path": "npx", "args": ["-y", "comber-mcp"] } }
}
}
Usage
Once installed, just ask your agent:
Run comber on https://my-branch.preview.app and fix anything that fails.
The agent calls comber_check, gets a coverage + findings summary back, and can call
comber_report for the full detail before proposing fixes.
Gate a merge:
Run comber with strict on the preview and block if there are any fail findings.
Notes
- The first web check may prompt Playwright to download a browser; run
npx playwright install chromium once if you hit a launch error.
- Runaway-cost backstops (
maxStates, maxActions) are exposed as tool inputs.
- Full engine docs: https://codecomber.io.