MCP server for accessibility testing with Cloudflare bypass using Camoufox and axe-core
Project description
a11y-mcp
MCP server for running axe-core accessibility audits. Uses Camoufox to bypass Cloudflare and other bot protection.
Install
# Claude Code
claude mcp add a11y -- uvx a11y-mcp
# Or with pip
pip install a11y-mcp
Configuration
For Claude Desktop, add to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"a11y": {
"command": "uvx",
"args": ["a11y-mcp"]
}
}
}
Other editors (Cursor, VS Code, Zed, etc.)
Most editors use the same format. Add to your MCP config:
{
"mcpServers": {
"a11y": {
"command": "uvx",
"args": ["a11y-mcp"]
}
}
}
Config locations:
- Cursor:
~/.cursor/mcp.json - VS Code (Continue):
.continue/config.jsonunderexperimental.modelContextProtocolServers - VS Code (Cline): Cline MCP settings
- Zed:
~/.config/zed/settings.jsonundercontext_servers
Tools
| Tool | Description |
|---|---|
scan_page |
Scan a URL for WCAG violations |
scan_element |
Scan a specific CSS selector |
get_violations |
Get detailed violation info from last scan |
get_full_report |
Full axe results (violations, passes, incomplete) |
export_report |
Export as JSON, HTML, or CSV |
set_wcag_level |
Set WCAG level (A, AA, AAA, 21A, 21AA, 22AA) |
configure_rules |
Enable/disable specific axe rules |
Usage
> Scan https://example.com for accessibility issues
> Export an HTML report for the last scan
> Check WCAG 2.2 AA compliance for https://adobe.com
WCAG Levels
| Level | Standard |
|---|---|
A, AA, AAA |
WCAG 2.0 |
21A, 21AA |
WCAG 2.1 |
22AA |
WCAG 2.2 |
Default is AA.
Cloudflare Bypass
This uses Camoufox, an anti-detect browser with fingerprint spoofing at the C++ level. It handles JavaScript challenges, Turnstile, and most bot detection automatically.
On first run, Camoufox downloads a browser binary (~300MB).
Requirements
- Python 3.10+
- macOS, Linux, or Windows
Troubleshooting
Browser won't launch: Run python -c "import camoufox; camoufox.install()"
Cloudflare still blocking: Some sites have aggressive detection. The first visit may require manual verification.
axe-core won't inject: Likely a strict CSP. Try a different page on the same domain.
Development
git clone https://github.com/anthropics/a11y-mcp && cd a11y-mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
python -m camoufox fetch
pytest
Debug with the MCP inspector:
npx @modelcontextprotocol/inspector uvx a11y-mcp
License
MIT License - see LICENSE for details.
Credits
- axe-core - Accessibility testing engine by Deque
- Camoufox - Anti-detect browser
- MCP - Model Context Protocol by Anthropic
Related Projects
- mcp-server-fetch - Web content fetching
- mcp-server-puppeteer - Browser automation
- mcp-server-playwright - Playwright browser control
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file a11y_mcp-0.1.1.tar.gz.
File metadata
- Download URL: a11y_mcp-0.1.1.tar.gz
- Upload date:
- Size: 165.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
022eebdf869c4d91e8670bd208351f62cda8c7ee497d1420d972fa81237ad38a
|
|
| MD5 |
508a2390c26e21b24b47739aec459650
|
|
| BLAKE2b-256 |
8c1fc8bda548f1696ebfbe19559e2de18d858348f26bffb0756522771f4bb310
|
File details
Details for the file a11y_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: a11y_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 167.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11b349b88dcaa3198fe83d77e2b128b38546c5d10d312c92340c4b956f90f9a5
|
|
| MD5 |
0691e98865b7046e3ffa5c05963380c2
|
|
| BLAKE2b-256 |
5eed4b13eb7996fef5edaedc62d6b56c32b333b351785db0cfa01339b5f8f01d
|