@mhdd_24/accessibility-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@mhdd_24/accessibility-mcpCheck accessibility of example.com against WCAG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@mhdd_24/accessibility-mcp
MCP server for WCAG/accessibility inspection.
Same architecture as @mhdd_24/sublime-mcp.
Full documentation: docs/WIKI.md
How it works (30 seconds)
You (chat) → MCP client → accessibility-mcp → Accessibility APIs / CLIs / local toolsRelated MCP server: WCAG Color Contrast MCP Server
Prerequisites
Requirement | Notes |
Node.js 18+ | ESM TypeScript MCP server |
Credentials / CLIs | See environment variables below |
Install
Option A — npm (after publish)
npm install -g @mhdd_24/accessibility-mcpOption B — npx
npx @mhdd_24/accessibility-mcpOption C — clone and build
git clone https://github.com/Mhdd-24/Accessibility-MCP.git
cd Accessibility-MCP
npm install
npm run build
node dist/index.jsConfigure Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"a11y": {
"command": "npx",
"args": ["-y", "@mhdd_24/accessibility-mcp"],
"env": {
"_": "optional"
}
}
}
}Local development:
{
"command": "node",
"args": ["/absolute/path/to/Accessibility-MCP/dist/index.js"]
}Environment variables
Variable | Description |
— | No required env |
Tools
Tool | Description |
| Show wcag/accessibility inspection configuration / health. |
| Analyze a page/site for wcag/accessibility inspection. |
| Generate a wcag/accessibility inspection report. |
| Quick wcag/accessibility inspection check. |
License
ISC
Available Tools
4 toolsa11y_analyzeC
Analyze a page/site for wcag/accessibility inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL or HTML path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose side effects, return behavior, or operational details. It only says 'Analyze', which implies a read operation but does not state whether it runs a scan, returns a report, requires authentication, or has any rate limits. The description is entirely silent on what happens when called.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is easy to parse and front-loaded with the action. However, it is so brief that it omits critical information, so it is not appropriately sized for a tool that likely has more complexity than one sentence can convey. It is concise but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and no annotations, the description is the sole source of guidance. It explains the basic purpose but fails to describe what the tool returns, how results are structured, or any constraints. An agent calling this tool would have no idea what to expect in the response, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter 'url' has a clear description ('URL or HTML path'). The description adds no additional context about the parameter's format, accepted schemes, or edge cases. Baseline of 3 is appropriate since the schema already covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Analyze) and resource (a page/site) and mentions the domain (wcag/accessibility). However, the term 'Analyze' is generic and does not distinguish this tool from siblings like a11y_check, a11y_report, or a11y_status, which likely have more specific scopes. It is not a tautology but lacks differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling tools. No conditions, prerequisites, or exclusions are mentioned. The agent has no way to know if this is the right tool for a quick check, a detailed report, or a status query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a11y_checkC
Quick wcag/accessibility inspection check.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | URL or selector |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'inspection check' without explaining what happens, what the output is, or any side effects. This is severely lacking for a tool that presumably performs an analysis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, which is concise, but it's under-specified and doesn't structure any additional useful information. It's more a placeholder than a helpful definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description still fails to convey what the check entails, how results are returned, or any relevant context. It's incomplete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (target: 'URL or selector'), so the schema already documents the parameter. The description adds no extra meaning, but the baseline of 3 applies because the schema fully covers semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('check') and resource ('accessibility'), but it's vague and doesn't differentiate from siblings like a11y_analyze or a11y_report. It lacks specificity about what kind of check or its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the siblings. The word 'Quick' hints at a lightweight option, but there's no explicit context, exclusions, or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a11y_reportC
Generate a wcag/accessibility inspection report.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL | |
| options | No | Options JSON/text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Generate a report' without specifying what the report contains, whether the operation is read-only or has side effects, or any other behavioral details. This is a significant gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the purpose. It contains no wasted words, but it is too terse to be highly effective, missing essential context that would make it more helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description should explain what the report returns and any relevant behavior. It does not, leaving the agent without information about the tool's output or side effects. The description is incomplete for an agent to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both url and options having descriptions in the schema. The tool description adds no parameter information beyond what the schema already provides, so it meets the baseline of 3 but does not enhance understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (generate) and a specific resource (wcag/accessibility inspection report). However, it does not differentiate from sibling tools like a11y_analyze, a11y_check, or a11y_status, which likely also relate to accessibility, so an agent cannot easily choose between them based on this description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. There is no mention of context, prerequisites, or scenarios where this tool is preferred over the sibling tools, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
a11y_statusB
Show wcag/accessibility inspection configuration / health.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Show', which implies a read-only operation, but does not explicitly state side effects, whether it makes network calls, or what 'health' entails. No detail about the nature of the configuration or health check is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. It efficiently states the purpose. However, it is so terse that it lacks specificity about the output or scope, but for a simple status tool it is appropriately concise without being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description should at least clarify what 'configuration / health' means or what the response will contain. It does not. For a tool with siblings that perform different actions, it would benefit from more context on what distinguishes 'showing status' from 'analyzing' or 'checking'. It is minimally adequate but leaves ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty (100% coverage trivially). The description does not need to explain parameters, and the baseline for 0 params is 4. The description adds nothing about parameters, which is acceptable since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Show') and resource ('wcag/accessibility inspection configuration / health'), conveying the tool's purpose as a read-only status view. However, it does not explicitly differentiate from sibling tools like a11y_analyze, a11y_check, or a11y_report, leaving some ambiguity about the exact scope of 'health' vs. other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the siblings. There is no mention of alternatives, prerequisites, or conditions that would select this over a11y_check or a11y_analyze. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
a11y_analyze - First observed
a11y_check - First observed
a11y_report - First observed
a11y_status
TDQS
Scored across 4 tools
a11y_analyze and a11y_check overlap in purpose, both performing inspection with only a depth/quick distinction. a11y_report and a11y_status are clearly distinct, but the boundary between analyze and check could confuse an agent.
All tools share the a11y_ prefix and follow the same verb-after-prefix pattern in lowercase snake_case, making the naming highly predictable and consistent.
Four tools is a well-scoped set for a focused accessibility inspection server, covering analysis, reporting, quick checks, and status without redundancy.
The core workflows of inspection, reporting, and configuration health are covered. A tool to list or retrieve specific violations would be a minor enhancement, but no critical gaps exist.
Maintenance
Related MCP Connectors
Accessibility and WCAG data for your own websites: fix lists, live checks, and fix validation.
Scan a web page for accessibility, security, privacy, quality and SEO issues, with fixes.
Scan URLs for WCAG 2.1 violations, generate AI fixes, and produce VPAT 2.5 compliance reports.
Deterministic axe-core accessibility scans (WCAG 2.1 AA, EN 301 549, PDF/UA) via your account.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables accessibility testing of websites and HTML content using axe-core and IBM Equal Access engines. Supports WCAG compliance checking, multi-viewport testing, and provides detailed violation reports with remediation guidance.51-
- FlicenseNot gradedqualityDmaintenanceEnables accurate WCAG color contrast checking and accessibility analysis by calculating actual contrast ratios between color pairs, checking compliance levels, and analyzing luminance values for web accessibility.-
- FlicenseNot gradedqualityDmaintenanceEnables automated WCAG 2.2 AA accessibility audits of Figma designs and webpages. Generates detailed markdown reports with severity-grouped violations, specific criterion references, and concrete fix recommendations.-
- AlicenseAqualityDmaintenanceEnables AI agents to perform comprehensive web accessibility checks (WCAG 2.1/2.2) including color contrast analysis, ARIA validation, and full accessibility report generation without requiring any API key.8MIT