@wcag-checkr/mcp
v1.18.0
Published
Model Context Protocol server for wcagcheckr. Lets LLM-IDEs (Claude Code, Cursor, Continue, etc.) drive accessibility audits, verify forensic receipts, and look up tier features programmatically. Same audit engine as the Chrome extension and CI runner.
Maintainers
Readme
@wcag-checkr/mcp
Model Context Protocol server for wcagcheckr. Lets LLM-IDEs drive accessibility audits, verify forensic receipts, and look up tier features via tool-use.
Why this matters
axe DevTools shipped an MCP server in 2026 (paid tier). We ship one for free, with one extra: it audits across our 108-state matrix (hover/focus/dark/RTL/breakpoints), so the LLM gets findings competitors' single-state audits would miss.
Tools exposed
| Tool | What it does |
|---|---|
| audit_url | Run a multi-state accessibility audit on a URL. Returns structured findings (JSON / SARIF / JUnit). |
| verify_receipt | Independently verify a wcagcheckr forensic-anchor receipt's ed25519 signature against the published public key. |
| get_tier_config | Fetch the per-product tier feature flags. |
Install
npm install -g @wcag-checkr/mcp @wcag-checkr/ci
npx playwright install chromiumUse with Claude Code
Add to ~/.claude/mcp.json (or use claude mcp add if available in your version):
{
"mcpServers": {
"wcagcheckr": {
"command": "wcagcheckr-mcp"
}
}
}Then in any conversation:
"Audit https://staging.example.com for accessibility issues."
Claude will call audit_url and return findings, ready for fix-it discussion.
Use with Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"wcagcheckr": {
"command": "wcagcheckr-mcp"
}
}
}Use with Continue
Add to your Continue config under mcpServers:
{
"mcpServers": [
{
"name": "wcagcheckr",
"command": "wcagcheckr-mcp"
}
]
}Environment variables
| Var | Default | Purpose |
|---|---|---|
| WCAGCHECKR_SERVER_URL | https://api.wcagcheckr.com | Override the server base URL (e.g. for self-hosted instance) |
| WCAGCHECKR_PRODUCT_SLUG | wcagcheckr | Override the product slug |
| WCAGCHECKR_CI_PATH | bundled | Override the path to the CI runner (used by audit_url) |
Examples — what an LLM can do with this
Auditing a deployment preview
User: "Audit my Vercel preview at https://my-site-pr-42.vercel.app — fail the build if there are any serious violations."
Claude calls
audit_urlwiththreshold: serious, gets back JSON, summarizes findings, and tells the user the exit code mapping.
Validating a forensic receipt
User: pastes a forensic-log entry copied from a defense bundle
"Is this receipt actually from wcagcheckr?"
Claude calls
verify_receipt, gets a "✓ valid signature" response, explains what was verified (and what wasn't — i.e., directs the user toopenssl ts -verifyfor the TSA token).
Tier-feature questions
User: "Does the Solo plan include forensic anchoring?"
Claude calls
get_tier_config, findsfeatures.forensicAnchoring: truefor the solo plan, answers.
Limitations (v0)
audit_urlshells out to@wcag-checkr/ciwhich spawns Chromium with the loaded extension. Heavy — single audits take 15-60s. Don't expect sub-second response.verify_receiptonly verifies our ed25519 signature. Full RFC 3161 timestamp verification against FreeTSA's CA chain is intentionally out of scope (useopenssl ts -verifyfor that — seehttps://api.wcagcheckr.com/verifyfor openssl-command instructions tailored to a specific receipt).- No streaming. Audits report results when done, not incrementally.
License
UNLICENSED until commercial release. See wcagcheckr.com/license.
