home / mcp / mcp accessibility scanner mcp server

MCP Accessibility Scanner MCP Server

Provides automated WCAG accessibility scanning and browser automation via Playwright and Axe-core for LLM-assisted checks.

Installation
Add the following to your MCP client configuration file.

Configuration

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

You can run automated WCAG accessibility scans and browser automation through a dedicated MCP server. It uses Playwright and Axe-core to check compliance, capture annotated visuals, and produce detailed reports, enabling you to integrate accessibility checks into your workflow with local or remote MCP clients.

How to use

You will run this MCP server locally or connect to it from an MCP client to perform accessibility scans, navigate web pages, capture screenshots, and generate reports. Start by launching the server, then use the available tools to scan individual pages, audit entire sites, or perform keyboard and element interactions while collecting actionable results. You can tailor behavior with an optional configuration file and monitor outputs through JSON reports.

How to install

# Prerequisites: Node.js and npm must be installed on your system.
# Verify versions (optional):
node -v
npm -v

# Install the MCP Accessibility Scanner globally
npm install -g mcp-accessibility-scanner

# Optional: install in a project (if you prefer local installation)
npm install -D mcp-accessibility-scanner
{
  "mcpServers": {
    "accessibility-scanner": {
      "command": "npx",
      "args": ["-y", "mcp-accessibility-scanner"]
    }
  }
}

Configuration is optional but can tailor Playwright behavior, timeouts, and network rules. You can pass a config file to customize runtime options or run with defaults. This enables you to control the browser, timeouts, and allowed network origins for your scans.

Configuration and usage notes

Configure the MCP server to adjust how the browser launches and how long operations wait before timing out. You can specify which browser to use (Chromium, Firefox, WebKit), set headless mode, and choose a browser channel. You may also define navigation and default timeouts, along with network allow/deny lists.

"browser": {
  "browserName": "chromium",
  "launchOptions": {
    "headless": true,
    "channel": "chrome"
  }
},
"timeouts": {
  "navigationTimeout": 60000,
  "defaultTimeout": 5000
},
"network": {
  "allowedOrigins": ["example.com", "trusted-site.com"],
  "blockedOrigins": ["ads.example.com"]
}

You can extend the configuration by pointing to a config file at runtime. Use the following pattern to pass a path to your custom configuration.

"mcpServers": {
  "accessibility-scanner": {
    "command": "npx",
    "args": ["-y", "mcp-accessibility-scanner", "--config", "/path/to/config.json"]
  }
}

Tips for productive use

  • Always capture a snapshot before attempting to interact with page elements
  • Review the generated JSON reports after scans
  • Use the audit tools to aggregate results across a site

Available tools

scan_page

Performs a comprehensive accessibility scan on the current page using Axe-core. You supply violation tags to check, and you receive detailed results.

audit_site

Crawls and scans multiple internal pages, aggregating violations into a JSON report for the whole site.

scan_page_matrix

Runs Axe scans across multiple viewport/emoji variations and compares results against a baseline, producing per-variant deltas.

audit_keyboard

Audits keyboard focus behavior, checks focus visibility and traps, and can produce a screenshot on issues with an automated JSON report.

browser_navigate

Navigate the browser to a specified URL.

browser_click

Click on a page element using an element reference or description.

browser_type

Type text into an editable element, with optional submission and timing controls.

browser_hover

Hover over an element on the page to reveal tooltips or menus.

browser_drag

Drag and drop between two elements to simulate complex UI interactions.

browser_take_screenshot

Capture a screenshot of the current page or a specific element.

browser_pdf_save

Save the current page as a PDF file.

browser_close

Close the current page or tab.

browser_snapshot

Capture an accessibility snapshot of the current page to analyze structure and elements.

browser_tab_list

List all open browser tabs.

browser_tab_new

Open a new tab, optionally navigating to a URL.

MCP Accessibility Scanner MCP Server - justasmonkev/mcp-accessibility-scanner