axe-devtools-mcp
Click on "Install 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., "@axe-devtools-mcpScan https://example.com for accessibility issues."
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.
axe-devtools-mcp
An MCP server that runs axe-core accessibility audits and returns the results to any MCP client — including Claude Code, Claude Desktop, and Cursor.
It renders pages in headless Chromium (via Playwright), injects axe-core, and reports WCAG violations with impact levels, affected elements, and fix guidance.
Tools
Tool | Description |
| Load a URL (live site or local dev server) in headless Chromium and run an axe-core audit. |
| Run an axe-core audit against a raw HTML string. |
| Scan a local |
| Crawl a running site breadth-first from a start URL, following same-origin links, and audit every page (up to |
Both tools accept:
tags— WCAG / rule tags to run, e.g.["wcag2a", "wcag2aa", "wcag21aa", "best-practice"]rules— only run these axe rule ids, e.g.["color-contrast", "image-alt"]excludeRules— axe rule ids to skipdetail—"full"(default; lists offending elements + fixes) or"summary"(rule + counts only)maxNodes— max offending elements to list per rule whendetail="full"(default5)includeIncomplete— also report axe "incomplete" items: checks that need manual review (e.g. color-contrast over background images,aria-hiddenfocus). Off by default; settrueto surface likely issues that automated rules could not confirm.
scan_url and scan_file also accept include (CSS selector to scope the scan) and timeoutMs. scan_file takes a path (absolute, or relative to the server's working directory). scan_site additionally takes maxPages (default 5, max 50) and sameOriginOnly (default true).
Scanning your own site / codebase
axe-core is a runtime engine — it audits the rendered DOM, not your source files. To audit code you're building:
Running app (best): start your dev server (
npm run dev), thenscan_url http://localhost:3000/..., orscan_site http://localhost:3000to crawl every route in one call. This tests exactly what users get after your framework renders.Static build output:
scan_file ./dist/index.html. Note single-page-app builds are usually empty shells hydrated by JS, so scan the running server instead.Source-level linting (a different, complementary tool):
eslint-plugin-jsx-a11y,eslint-plugin-vuejs-accessibility, etc.
Related MCP server: A11y MCP Server
Requirements
Node.js >= 18
A Chromium browser managed by Playwright.
npm installrunsnpx playwright install chromiumautomatically; if that was skipped, run it manually:npx playwright install chromium
Use with Claude Code
Register the server with the Claude Code CLI:
# From npm (once published)
claude mcp add axe-devtools -- npx -y axe-devtools-mcp
# Or from a local clone
claude mcp add axe-devtools -- node /absolute/path/to/axe-devtool-mcp/dist/index.jsThen in Claude Code:
Scan https://example.com for accessibility issues.
Use with other MCP clients
This is a standard stdio MCP server, so it works in any MCP-capable client. Once published to npm, every client uses the same npx invocation; before publishing, replace it with node /absolute/path/to/axe-devtool-mcp/dist/index.js.
Claude Desktop
Edit claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows: %APPDATA%\Claude\claude_desktop_config.json), then restart the app:
{
"mcpServers": {
"axe-devtools": {
"command": "npx",
"args": ["-y", "axe-devtools-mcp"]
}
}
}VS Code / GitHub Copilot (Agent mode)
Add a .vscode/mcp.json in your workspace (note the servers key), then enable it from the Copilot Chat "Tools" picker in Agent mode:
{
"servers": {
"axe-devtools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "axe-devtools-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"axe-devtools": {
"command": "npx",
"args": ["-y", "axe-devtools-mcp"]
}
}
}Tip: some clients (e.g. background/headless runners) don't run npm lifecycle scripts, so the Chromium auto-install won't fire. If a scan fails to launch a browser, run
npx playwright install chromiumonce on that machine.
Run from source
git clone https://github.com/Ravindrabisht12/axe-devtool-mcp.git
cd axe-devtool-mcp
npm install
npm run build
node dist/index.js # speaks MCP over stdioPublish to npm
npm login
npm publish --access publicAfter publishing, anyone can run it with npx -y axe-devtools-mcp — no clone required.
How it works
MCP client (Claude Code)
│ stdio (JSON-RPC)
▼
axe-devtools-mcp ──► Playwright (headless Chromium) ──► axe-core injected into the page
▲ │
└────────────── formatted violations + fixes ◄──────────────┘License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ravindrabisht12/axe-devtool-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server