A11yScope

io.github.perceivablev0.1.2Updated Oct 11, 2026

WCAG 2.2 AA accessibility checks for pages and HTML, run locally in headless Chrome.

VerifiedSTDIODesktop onlyDeveloper ToolsBrowser Automation

Overview

AI-generated overview

Runs local WCAG 2.2 AA accessibility checks on web pages and HTML snippets in headless Chrome and returns grouped violations with fixes.

What it does
A11yScope exposes the engine behind the A11yScope Chrome extension as an MCP server. Its scan_page tool loads a URL or local HTML file in headless Chrome and returns violations grouped by rule, each with a CSS selector, an HTML snippet and a message describing what to change. scan_html does the same for markup an agent just generated, and list_rules describes the 31 checks with their WCAG 2.2 success criteria, level, impact and fix guidance. Scan options include review items, passed checks, per-rule finding limits, viewport size and a wait time for late-rendering pages.
When to use it
Useful when an assistant writes or edits web pages and should verify accessibility before finishing, for example scanning a local development server and fixing violations in a loop. Also suited to checking generated HTML snippets for contrast, labels, structure and ARIA issues.
Requirements
Runs locally as a stdio process via npx (package a11yscope-mcp). Needs Node 20 or newer and a Chromium-based browser already installed; if none is found, a Chrome for Testing build (~150 MB) is downloaded once into Puppeteer's cache. The optional A11YSCOPE_CHROME environment variable points at a specific browser executable. No account, API key or network service is required.
Before you install
Scans run locally and nothing is uploaded, with no account or telemetry. The first scan may download a Chrome for Testing build if no Chromium-based browser is present. Automated checks cover only part of accessibility barriers; results are not a conformance claim, and items needing human judgement come back as review rather than pass or fail.

Installation

In SourceWeft

  1. Open A11yScope in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

a11yscope-mcp

WCAG 2.2 AA checks for AI coding agents. The same engine as the A11yScope Chrome extension, exposed as an MCP server so Claude Code, Cursor, Claude Desktop and other MCP clients can audit the pages they build and fix what they find.

Runs locally in headless Chrome. Nothing is uploaded, no account, no telemetry.

Install

Claude Code

bash
claude mcp add a11yscope -- npx -y a11yscope-mcp

Cursor / Claude Desktop / any MCP client — add to the MCP config:

json
{  "mcpServers": {    "a11yscope": {      "command": "npx",      "args": ["-y", "a11yscope-mcp"]    }  }}

Needs Node 20 or newer and a Chromium-based browser. Installing downloads nothing: the first scan uses the Chrome, Chromium, Edge or Brave already on the machine, and only if none is found does it fetch a Chrome for Testing build (~150 MB, once) into Puppeteer's cache. To point it at a specific browser, set A11YSCOPE_CHROME to the executable path.

Tools

ToolWhat it does
scan_pageLoads a URL or a local HTML file in headless Chrome and returns violations grouped by rule, each with a CSS selector, an HTML snippet and a message that says what to change.
scan_htmlSame, for an HTML string the agent just generated. Pass base_url if the markup references stylesheets on a reachable server; otherwise inline the CSS, since contrast checks need computed styles.
list_rulesThe 31 checks, each with its WCAG 2.2 success criteria, level, impact and fix guidance.

Options on both scan tools: include_review (items that need a human decision), include_passed, max_findings_per_rule, viewport size. scan_page also takes wait_ms for pages that render late.

Typical prompt: "Scan http://localhost:3000 with a11yscope and fix every violation, then scan again."

What it checks

Text alternatives (images, form labels, buttons, links, frames, SVG), colour contrast with the large-text and bold exemptions applied and translucent backgrounds composited, document structure (language, title, headings, main landmark, skip link, tables, lists, duplicate ids), and keyboard, pointer and ARIA (zoom lock, positive tabindex, aria-hidden focusable, nested interactive controls, 24×24 target size, autoplay, captions, invalid roles, required ARIA states, autocomplete, focus visibility).

Calibrated against sites built by accessibility practitioners: gov.uk, webaim.org, deque.com, a11yproject.com and w3.org/WAI all report zero violations. Anything reported there is treated as our bug until proven otherwise, and false-positive reports are the most useful thing you can send.

What it does not do

Automated checks find roughly a third of accessibility barriers. A clean result is a good sign, not a conformance claim. Whether alt text is accurate, whether a page makes sense in a screen reader, whether a keyboard user can finish a task — no tool can answer those, and this one does not pretend to. Anything it cannot decide comes back as review, not as pass or fail. It is not a substitute for an expert evaluation and does not certify compliance with the EAA, ADA, KWCAG or any other standard.

Licence

Copyright © 2026 Perceivable. Free to install and run, including commercially, through npm and MCP clients. The engine source is published so that "nothing leaves your machine" can be verified rather than trusted; it is not open source, and no licence is granted to copy, modify or redistribute it or to publish derivative works. Full terms: the LICENSE file in this package and at the repository root. Problems and false positives: https://github.com/perceivable/a11yscope/issues.

Source: mcp/README.md at commit c7a0aa6

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.1.2LatestOct 11, 2026