mcp-accessibility-scanner

mcp-accessibility-scanner

7

The MCP Accessibility Scanner is an MCP server that automates web accessibility scanning using Playwright and Axe-core. It provides tools for WCAG compliance checks and generates detailed reports while capturing annotated screenshots of violations. This tool is essential for ensuring website accessibility and compliance.

MseeP.ai Security Assessment Badge

MCP Accessibility Scanner šŸ”

A Model Context Protocol (MCP) server that provides automated web accessibility scanning using Playwright and Axe-core. This server enables LLMs to perform WCAG compliance checks, capture annotated screenshots, and generate detailed accessibility reports.

Features

āœ… Full WCAG 2.1/2.2 compliance checking
šŸ–¼ļø Automatic screenshot capture with violation highlighting
šŸ“„ Detailed JSON reports with remediation guidance

Installation

You can install the package using any of these methods:

Using npm:

npm install -g mcp-accessibility-scanner

Docker Installation

The project includes a Dockerfile that sets up all necessary dependencies including Node.js v22 and Python 3.13.

  1. Build the Docker image:
docker build -t mcp-server . 
  1. Run the container:
docker run -it -e MCP_PROXY_DEBUG=true mcp-server

You can also run it in the background:

docker run -d -p 3000:3000 mcp-server

Installation in VS Code

Install the Accessibility Scanner in VS Code using the VS Code CLI:

For VS Code:

code --add-mcp '{"name":"accessibility-scanner","command":"npx","args":["mcp-accessibility-scanner"]}'

For VS Code Insiders:

code-insiders --add-mcp '{"name":"accessibility-scanner","command":"npx","args":["mcp-accessibility-scanner"]}'

Configuration

Here's the Claude Desktop configuration:

{
  "mcpServers": {
    "accessibility-scanner": {
      "command": "npx",
      "args": ["-y", "mcp-accessibility-scanner"]
    }
  }
}

Usage

The scanner exposes a single tool scan_accessibility that accepts:

  • url: The webpage URL to scan (required)
  • violationsTag: Array of accessibility violation tags to check (required)
  • viewport: Optional object to customize the viewport size
    • width: number (default: 1920)
    • height: number (default: 1080)
  • shouldRunInHeadless: Optional boolean to control headless mode (default: true)

Note: When running a scan, an annotated screenshot highlighting any accessibility violations will be automatically saved to your downloads folder.

Example usage in Claude:

Could you scan example.com for accessibility issues related to color contrast?

Advanced example with custom options:

Could you scan example.com for accessibility issues with a viewport of 1280x720 and show the browser window?

Development

Clone and set up the project:

git clone https://github.com/JustasMonkev/mcp-accessibility-scanner.git
cd mcp-accessibility-scanner
npm install

Start the TypeScript compiler in watch mode:

npm run watch

Test the MCP server locally:

npm run inspector

Docker Development

For development using Docker:

  1. Build the development image:
docker build -t mcp-server-dev .
  1. Run with volume mounting for live code changes:
docker run -it -v $(pwd):/app -p 3000:3000 -e MCP_PROXY_DEBUG=true mcp-server-dev

Project Structure

ā”œā”€ā”€ src/              # Source code
│   ā”œā”€ā”€ index.ts     # MCP server setup and tool definitions
│   └── scanner.ts   # Core scanning functionality
ā”œā”€ā”€ build/           # Compiled JavaScript output
ā”œā”€ā”€ Dockerfile       # Docker configuration for containerized setup
ā”œā”€ā”€ package.json     # Project configuration and dependencies
└── tsconfig.json    # TypeScript configuration

License

MIT