MCP server exposing axe-core accessibility auditing as tools for any MCP-compatible AI agent
Three well-named tools (audit_html, audit_file, audit_url) with clear verb-noun structure and solid descriptions (150-200 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented, responses are returned as JSON text blobs without a formal schema definition. Parameter descriptions are good but lack constraint details (e.g., no guidance on valid tag values). Error handling is minimal, no recovery guidance or categorization. Missing tool annotations (readOnlyHint, idempotentHint). Composition is clean: each tool does one thing, but no pagination or result limits are enforced.
Same checks as audit_html, reading the document from a local file path.
Runs axe-core against an HTML string (via jsdom) and returns WCAG violations. Catches structural/semantic issues (missing alt text, unlabeled inputs, missing lang/title, empty link text, etc.) — layout-dependent rules like color-contrast are not reliable in jsdom.
Fetches a URL and audits the raw response HTML — this does not execute client-side JavaScript, so client-rendered SPAs will show as empty. Best for server-rendered pages and static sites.
Output schema not documented. Tools return JSON text blobs without a formal schema definition. LLMs cannot reliably extract fields or plan downstream operations.
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared in the tool metadata.
Parameter 'tags' lacks constraint documentation. No guidance on valid axe-core tag values (wcag2a, wcag2aa, best-practice, etc.) or format. LLMs may hallucinate invalid tags.
No error handling or recovery guidance. If audit_url fails to fetch (network error, 404, timeout), the response is a raw error with no actionable next step for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No result limits or pagination. Large HTML documents could produce hundreds of violations, bloating the response and exhausting context windows. No guidance on result caps.