A Model Context Protocol (MCP) plugin for automated accessibility testing using axe-core. It lets MCP‑aware clients (Claude Desktop, Cursor, etc.) or your terminal run:
- Single URL scans
- HTML string scans
- Batch URL scans
- Violation summarisation
All powered by Selenium under the hood.
pip install mcp-axeRequires Python 3.8+.
git clone https://github.com/manoj9788/mcp-axe.git
cd mcp-axe
python3 -m venv .venv && source .venv/bin/activate
pip install -e .[dev]For AI clients (e.g. Claude Desktop, Cursor, VS Code MCP extension), configure your <client>_config.json:
{
"mcpServers": {
"axe-a11y": {
"command": "python3",
"args": ["-m", "mcp_axe"],
"cwd": "."
}
}
}Or
"axe-a11y": {
"command": "uvx",
"args": [
"mcp-axe"
]
}Once the MCP server is running,
you can prompt like scan https://manojkk.com for accessibility issues will invoke the scan-url tool.
you can invoke tools like:
scan-url(params:{ "url": "https://google.com" })scan-html(params:{ "html": "<h1>Hello</h1>" })scan-batch(params:{ "urls": ["https://a.com","https://b.com"] })summarise-violations(params:{ "result": <axe result> })
{
"mcpServers": {
"axe-a11y": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "mcp_axe"],
"cwd": "/path/to/mcp-axe"
}
}
}Expose HTTP endpoints via:
from mcp_axe.server import app # FastAPI instance
import uvicorn
if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=9788, reload=True)Then:
curl -X POST http://localhost:9788/scan/url -H 'Content-Type: application/json' \
-d '{ "url": "https://google.com" }'- Fork the repo
- Create a branch (
git checkout -b feature/xyz) - Commit your changes
- Open a PR