home / mcp / accessibility testing mcp server
Runs axe-core and IBM Equal Access accessibility tests against URLs or HTML content across multiple viewports.
Configuration
View docs{
"mcpServers": {
"joe-watkins-accessibility-testing-mcp": {
"command": "node",
"args": [
"/path/to/accessibility-testing-mcp/build/index.js"
],
"env": {
"WCAG_LEVEL": "2.2_AA",
"A11Y_ENGINE": "axe",
"SCREEN_SIZES": "1280x1024,320x640",
"BEST_PRACTICES": "true",
"HEADLESS_BROWSER": "true"
}
}
}
}You can run Accessibility Testing MCP to evaluate web accessibility using two engines, Axe-core and IBM Equal Access, across multiple viewport sizes. This enables you to identify violations, gather recommendations, and verify improvements with repeatable, automated checks.
Choose your testing engine using the environment configuration to run Axe-core, IBM Equal Access, or both. You can test any URL or HTML content and get structured results for violations, recommendations, and manual checks. Run tests across multiple viewport sizes to catch responsive accessibility issues. The results clearly separate failures from passes and indicate when human review is needed.
Install the MCP server dependencies and build the project to prepare the executable that runs the accessibility tests.
npm install
npm run buildConfigure the MCP server with environment variables to select the testing engine, WCAG level, whether to include best practices, viewport sizes, and whether to run the browser headless. The WCAG level you choose automatically configures both Axe-core tags and IBM Equal Access policies.
Details you’ll commonly adjust include:
• A11Y_ENGINE: choose axe for Axe-core, ace for IBM Equal Access, or set up to use both depending on your needs.
• WCAG_LEVEL: select a WCAG version and level, such as 2.1_AA or 2.2_AA.
• BEST_PRACTICES: enable or disable best-practices recommendations.
• SCREEN_SIZES: list viewport sizes in WIDTHxHEIGHT format to test, for example 1280x1024,320x640.
• HEADLESS_BROWSER: set to true to run in headless mode or false to see a visible browser.
The following samples show how to configure the MCP client in common environments.
"mcp": {
"servers": {
"accessibility-testing-mcp": {
"type": "stdio",
"command": "node",
"args": ["/path/to/accessibility-testing-mcp/build/index.js"],
"env": {
"A11Y_ENGINE": "axe",
"WCAG_LEVEL": "2.2_AA",
"BEST_PRACTICES": "true",
"SCREEN_SIZES": "1280x1024,320x640",
"HEADLESS_BROWSER": "true"
}
}
}
}{
"mcpServers": {
"accessibility": {
"command": "node",
"args": ["/path/to/accessibility-testing-mcp/build/index.js"],
"env": {
"A11Y_ENGINE": "ace",
"WCAG_LEVEL": "2.2_AA",
"BEST_PRACTICES": "true"
}
}
}
}When you run Axe-core, you will see: Violations (definite accessibility failures), Incomplete (needs manual review), Passes (rules that passed), and Inapplicable (rules that don’t apply). IBM Equal Access provides Violations, Potential Violations, Recommendations (when BEST_PRACTICES is true), and Manual Checks (requires human testing).
Choose from the following levels to control which rules are applied during tests. The level you select affects both engines.
- 2.0_A: WCAG 2.0 Level A - 2.0_AA: WCAG 2.0 Level AA - 2.1_A: WCAG 2.1 Level A - 2.1_AA: WCAG 2.1 Level AA (default) - 2.1_AAA: WCAG 2.1 Level AAA - 2.2_A: WCAG 2.2 Level A - 2.2_AA: WCAG 2.2 Level AA - 2.2_AAA: WCAG 2.2 Level AAA
The MCP server relies on the following components to run the accessibility tests: @modelcontextprotocol/sdk, axe-core, accessibility-checker, and playwright for headless browser automation.
Environments shown here use placeholder paths for the runtime index file. Replace /path/to/accessibility-testing-mcp/build/index.js with the actual build output location in your setup. Ensure you have Node.js installed and that you have run the build step before starting the MCP runtime.
The MCP server exposes the following testing tools to interact with accessibility checks. You can choose a single engine or run both for comprehensive coverage.
Test any URL for accessibility issues using the selected engine(s) and report violations, incomplete items, and passes.
Test a URL and return the raw JSON output for programmatic processing.
Test HTML content directly for accessibility issues.
Test HTML content and return the raw JSON output.
List all available accessibility rules that can be checked by the engines.