# mcp-accessibility-scanner

Runs axe checks, a Tab walkthrough and an accessibility-tree pass from inside your agent. Useful before shipping a page.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 57
- Author: JustasMonkev
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/JustasMonkev/mcp-accessibility-scanner
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/mcp-accessibility-scanner

## What it does

The server drives a Playwright browser and points axe-core at whatever page you name. Your agent can open a URL, scan the markup, step through interactive elements with Tab, and write the findings to JSON with node details and links to fixes. Add `annotateScreenshot: true` to `scan_page` and you also get a full-page PNG with the problems marked up. `audit_screen_reader` reads the accessibility tree, accessible names and element geometry. It never launches an actual screen reader, so manual testing still has to happen.

Install Google Chrome first — the npm package does not bring a browser. The install line is `npm install -g mcp-accessibility-scanner --allow-scripts=re2`, and that flag exists so the native `re2` module can build. Skip it and the server dies with `Cannot find module './build/Release/re2.node'`. No prebuilt binary means you need a native build toolchain. A Docker Hub image with Chromium inside is also available.

Then register the server as a stdio process in your client's MCP config, with `--headless`, `--isolated` and `--output-dir ./a11y-output`. `--isolated` spins up a clean browser profile instead of touching your own Chrome session. Output paths resolve against the server's working directory, so pass an absolute `--output-dir` if your client starts it somewhere else. Automated checks do not certify WCAG compliance — read the coverage warnings and note which page states you never exercised.

## Requirements
- Needs: Node.js (commands run via npx)
- Works with: Playwright

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add mcp-accessibility-scanner -- npx -y mcp-accessibility-scanner
```

### Codex

**Platform CLI**
```bash
codex mcp add mcp-accessibility-scanner -- npx -y mcp-accessibility-scanner
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-accessibility-scanner": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-accessibility-scanner"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-accessibility-scanner": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "mcp-accessibility-scanner"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add mcp-accessibility-scanner npx -y mcp-accessibility-scanner
```

## When to use it
- spot images that ship without alt text
- check text contrast before a release
- trace where keyboard focus disappears during Tab
- hand the team a JSON report of violations
- inspect accessible names on a form's fields

## Example prompts
- Open `http://localhost:3000` and run `scan_page` with `annotateScreenshot: true`
- Run `audit_keyboard` with `maxTabs: 30` and show me where focus jumps wrong
- Run `audit_screen_reader` and check the accessible names on the buttons

## Similar
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13169
- [mobile-mcp](https://affpapa.org/en/nevibecode/mcp/mobile-mcp.md) — MCP server · ★ 9946
- [e2e](https://affpapa.org/en/nevibecode/mcp/e2e.md) — MCP server · ★ 11912
- [mockserver](https://affpapa.org/en/nevibecode/mcp/mockserver.md) — MCP server · ★ 4996

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
