关于 A11yScope
A11yScope 是面向 AI 编码 Agent 和开发者的 MCP 服务,用于在本地检查网页和 HTML 的 WCAG 2.2 AA 可访问性。它在 headless Chrome 中运行扫描,并返回带选择器和修复指引的规则检查结果。
主要功能
- 01扫描 URL、本地 HTML 和 HTML 字符串
- 02提供 31 项 WCAG 2.2 检查及指引
- 03结果包含选择器和代码片段
- 04区分待审核、通过和不适用状态
- 05使用本地 headless Chrome 扫描
适用场景
- 01开发时审查本地运行的页面
- 02集成前检查生成的 HTML
- 03查看可访问性问题并据此修复
MCP 相关
A11yScope 向 MCP 客户端提供 `scan_page`、`scan_html` 和 `list_rules`。客户端可扫描页面或标记内容,并查看适用的 WCAG 规则和检查结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | http(s) URL、file:// URL,或 HTML 文件路径(相对于服务器的工作目录)。 |
| wait_ms | integer | 否 | 加载后额外等待的时间,适用于延迟渲染的页面。 |
| include_passed | boolean | 否 | 同时列出没有发现问题的规则,每条规则附带 passed 或 inapplicable 状态及其检查数量。 |
| include_review | boolean | 否 | 同时返回需要人工判断的项目(非失败项)。 |
| viewport_width | integer | 否 | |
| viewport_height | integer | 否 | |
| max_findings_per_rule | integer | 否 | 限制每条规则返回的发现项数量。 |
详细介绍
a11yscope-mcp
为 AI 编码 Agent 提供 WCAG 2.2 AA 检查。使用与 A11yScope Chrome 扩展程序相同的引擎,并将其作为 MCP 服务公开,让 Claude Code、Cursor、Claude Desktop 和其他 MCP 客户端能够审核它们构建的页面并修复发现的问题。
在本地无头 Chrome 中运行。不会上传任何内容,无需账户,也没有遥测。
安装
Claude Code
claude mcp add a11yscope -- npx -y a11yscope-mcp
Cursor / Claude Desktop / 任意 MCP 客户端 — 添加到 MCP 配置中:
{
"mcpServers": {
"a11yscope": {
"command": "npx",
"args": ["-y", "a11yscope-mcp"]
}
}
}
需要 Node 20 或更高版本,以及基于 Chromium 的浏览器。安装时不会下载任何内容:首次扫描会使用机器上已有的 Chrome、Chromium、Edge 或 Brave;只有在未找到这些浏览器时,才会将 Chrome for Testing 构建版(约 150 MB,仅下载一次)下载到 Puppeteer 的缓存中。若要指定浏览器,请将 A11YSCOPE_CHROME 设置为可执行文件路径。
工具
| 工具 | 功能 |
|---|---|
scan_page | 在无头 Chrome 中加载 URL 或本地 HTML 文件,并按规则分组返回违规项;每项都附有 CSS 选择器、HTML 片段,以及说明需要如何修改的消息。 |
scan_html | 对 Agent 刚生成的 HTML 字符串执行相同检查。如果标记引用了可访问服务器上的样式表,请传入 base_url;否则请将 CSS 内联,因为对比度检查需要计算后的样式。 |
list_rules | 列出 31 项检查,每项均包含其对应的 WCAG 2.2 成功标准、级别、影响和修复指南。 |
两个扫描工具都支持以下选项:include_review(需要人工判断的项目)、include_passed、max_findings_per_rule、视口大小。
scan_page 还支持 wait_ms,用于等待较晚才渲染的页面。
如果网站返回机器人检查页面(例如 Cloudflare 的“Just a moment…”),scan_page 会报错并拒绝扫描,而不会扫描该中间页面;扫描结果几乎没有问题,也毫无意义。
典型提示词:“使用 a11yscope 扫描 http://localhost:3000 并修复所有违规项,然后再次扫描。”
解读结果
每条规则都会返回一个 status(failed、review、passed 或
inapplicable)和一个 checked 计数:规则目标类型的元素在 DOM 中的数量(img-alt 统计每个 <img>,link-name 统计每个链接,页面级规则为 1)。没有可检查内容的规则状态为 inapplicable,而不是 passed;因此,摘要会分别统计 rulesPassed 和 rulesNotApplicable。所以,“修复后重新扫描”有个值得留意的地方:如果 img-alt 的 checked 从 3 变为 0,说明图片被删除了,而不是添加了描述。excluded 表示规则跳过的已检查元素数量,这些元素可能因隐藏(aria-hidden、display:none)或装饰性用途(role="presentation")而被跳过。若某次扫描的 checked 为 3、excluded 为 0,之后变成 checked 为 3、excluded 为 3,说明图片被隐藏了,而不是添加了描述;真正的装饰性图片确实存在,因此这应作为问题交由人工判断。比较前后的 checked 和 excluded,不要只看违规数量。若替代文本是文件名或填充词(image、photo、icon……),则会被 img-alt-redundant 标记。
如果标记是片段(此时页面级检查描述的是该片段,而不是它将嵌入的页面),或没有样式表(此时对比度和焦点结果反映的是浏览器默认设置),scan_html 会添加 notes。
范围:顶层文档及其中任意深度的所有同源框架。框架中的发现会在选择器中带上框架路径(iframe#chat >>> button);页面级检查(语言、标题、h1、地标、跳过链接、标题顺序)则仅适用于顶层文档。跨源框架属于作者无法更改的第三方内容,因此会计入 summary.iframesNotEntered,并在备注中列出,不会进行扫描。开放的影子根也会以同样方式进入;任何在页面中运行的程序都无法读取封闭的影子根。
检查内容
文本替代内容(图片、表单标签、按钮、链接、框架、SVG)、颜色对比度(应用大号文本和粗体文本豁免,并合成半透明背景)、文档结构(语言、标题、各级标题、main 地标、跳过链接、表格、列表、重复 id),以及键盘、指针和 ARIA(缩放锁定、正值 tabindex、可聚焦的 aria-hidden 元素、嵌套交互控件、24×24 目标尺寸、自动播放、字幕、无效角色、必需的 ARIA 状态、自动补全、焦点可见性)。
我们以无障碍领域从业者构建的网站为基准进行校准:gov.uk、 webaim.org、deque.com、a11yproject.com 和 w3.org/WAI 均报告零项违规。这些网站上的任何报告都会先被视为我们的缺陷,直至证实并非如此;因此,你能提供的最有用反馈就是误报。
不会检查的内容
自动化检查只能发现大约三分之一的无障碍障碍。结果干净是个好兆头,但不代表符合标准。替代文本是否准确、页面对屏幕阅读器用户来说是否易于理解、键盘用户能否完成任务——没有工具能回答这些问题,本工具也不会声称自己可以。凡是无法判断的内容,都会返回 review,而不是通过或失败。本工具不能替代专家评估,也不会认证是否符合 EAA、ADA、KWCAG 或任何其他标准。
许可
版权所有 © 2026 Perceivable。可通过 npm 和 MCP 客户端免费安装和运行,包括商业用途。引擎源代码已发布,以便用户能够验证“没有内容离开你的设备”,而不必仅凭信任;但它并非开源,也未授予复制、修改、再分发或发布衍生作品的许可。完整条款请参阅本软件包中的 LICENSE 文件及仓库根目录下的 LICENSE 文件。问题和误报反馈:
https://github.com/perceivable/a11yscope/issues.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。