mcpField
A
A11Y Toolkit

A11Y Toolkit

本地服务
jquin.net开发工具2今天更新

关于 A11Y Toolkit

A11Y Toolkit 是面向编码 Agent 的 WCAG 2.2 无障碍审计与修复工具包,提供 MCP 服务和 CLI。它涵盖审计、交互测试、证据整理及报告生成,并明确区分自动检查与需人工验证的标准。

主要功能

  1. 01WCAG 2.2 网页及文档审计
  2. 02键盘、表单与重排测试
  3. 03对比度检查和自动修复
  4. 04无障碍声明及 VPAT 报告
  5. 05快照差异与证据包
  6. 06屏幕阅读器转录和盲测

适用场景

  1. 01在部署前检查网页无障碍回归
  2. 02筛查 PDF 和 DOCX 文件
  3. 03为文字配色查找合规颜色
  4. 04整理供人工签署的审计证据

MCP 相关

作为 MCP 服务提供 32 个工具和 6 个提示词,供 MCP 客户端执行无障碍审计、修复建议、文档生成及回归检查。另提供可安装的 Agent skill。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kinti-a11y-toolkit": {
"command": "uvx",
"args": [
"a11y-toolkit"
]
}
}
}
启动命令uvx a11y-toolkit

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypia11y-toolkit5.16.0

工具

24

收录的工具列表 · 更新于 2 天前

参数类型必填说明
urlstring否要获取并审核的 URL
htmlstring否要直接审核的原始 HTML(优先于 url)
langenum否输出语言(默认 en)es | en
pagesinteger否轻量同域爬取:最多审核 N 个页面,并按分数和重复出现的信号汇总(默认值 1,最大值 20)
timeoutnumber否获取超时时间(秒)(默认值 30)

详细介绍

a11y-toolkit — 面向 AI 编码 Agent 的无障碍层

为你的编码 Agent 提供 WCAG 2.2 支持——审计、修复、记录并持续监测。零依赖,支持西班牙语/英语。

CI PyPI Downloads License: MIT Python 3.9+ MCP Sponsor

32 个 MCP 工具、6 个提示词和一项技能,覆盖完整的 WCAG 2.2 流程:审计、修复、记录、监测、交接——现在还支持蒙眼可用性测试,Agent 会尝试执行真实任务,只感知屏幕阅读器呈现的内容。55 项 A/AA 标准中有 51 项带有自动化检测信号(93%),每条发现都附带可由 Agent 应用的具体修复方案,渲染工具可在你使用的任意浏览器中运行——Chromium、Firefox、WebKit、Chrome 或 Edge。

《欧洲无障碍法案》自 2025 年 6 月起生效,ADA 诉讼仍接连不断,而如今大多数网页都由 AI Agent 编写。扫描并不能构成防御:机器负责发现,人类负责签字。

a11y-toolkit 实际演示:审计(得分 64)、最接近达标的颜色、重新审计(94)——真实工具输出

快速开始

# MCP — one line, any MCP client (Claude, Cursor, Codex, Windsurf, …)
claude mcp add a11y-toolkit -- uvx --from a11y-toolkit a11y-toolkit-mcp

# CLI — same engine, one command
pip install a11y-toolkit
a11ytoolkit audit --url https://example.com
a11ytoolkit pair "#1f2328" "#fbfaf7"

静态审计、对比度计算、PDF/DOCX 筛查和证据包均可零依赖运行。渲染工具(图像上的真实对比度、键盘陷阱、重排、表单)还需要 Playwright: pip install playwright && playwright install chromium。

功能

能力axe-core / Lighthouse / pa11ya11y-toolkit
图像和渐变上的文本对比度(对真实背景进行像素采样)否是
根据证据包生成 VPAT 2.5(WCAG)草案——EAA 声明在美国/ADA 下的对应文件否是
表单错误测试:填入无效数据、实际提交并判断结果否是
键盘陷阱:实际 Tab 遍历 + Escape 释放测试,以及由焦点/输入触发的导航否是
无限滚动审计:焦点保持、播报、信息流结束否是
在 320px 宽度下重排,并测量 WCAG 文本间距覆盖效果否是
屏幕阅读器转录:盲人用户听到的线性化内容否是
通过实际悬停捕获忽略 Escape 的工具提示(1.4.13)否是
EAA / RD 1112/2018 法律声明,支持西班牙语和英语否是
可供人类签署的证据包——哈希、矩阵、空白签名栏否是
ACT 规则互操作:EARL 导出 + 对照 W3C 官方测试用例的逐规则一致性报告否是
WCAG 3 草案预览——将 2.2 的发现归入草案结果,不生成虚假分数否是
核心功能零依赖运行,支持西班牙语/英语,兼容你使用的任意浏览器运行时依赖庞大零依赖

工具(32 个)

完整参考——说明、参数、返回结构和行为——见 docs/tools.md。除非另有说明,所有工具都接受 lang(en|es);输出为 JSON。内容由 scripts/gen_readme.py 根据 server.TOOLS 生成。

工具类别功能
a11y_audit_url审计快速 WCAG 审计
a11y_audit_dom审计渲染后的 WCAG 审计
a11y_audit_pdf审计PDF 无障碍筛查
a11y_docx_screen审计DOCX 无障碍筛查
a11y_journey_verdict盲测盲测流程判定
a11y_autofix修复与对比度确定性安全自动修复
a11y_contrast_pair修复与对比度对比度及判定
a11y_contrast_image修复与对比度图像上的文字对比度
a11y_contrast_dom修复与对比度实时元素对比度采样
a11y_suggest_color修复与对比度最接近且达标的颜色
a11y_generate_declaration文档无障碍声明(EAA/RD 1112)
a11y_generate_vpat文档VPAT 2.5 报告(WCAG 版本)
a11y_badge文档真实的 SVG 徽章
a11y_snapshot监测(回归)无障碍快照及 Tab 顺序
a11y_diff监测(回归)快照回归差异
a11y_diff_urls监测(回归)暂存环境与生产环境差异
a11y_aria_live_snippet监测(回归)aria-live 监测代码片段
a11y_criterion知识与上下文WCAG 准则说明
a11y_html_validate知识与上下文W3C Nu 验证
a11y_keyboard交互键盘陷阱检测器
a11y_forms交互表单错误测试
a11y_hover交互悬停内容可关闭性(1.4.13)
a11y_reflow交互320px 重排检查
a11y_scroll交互无限滚动审计
a11y_sr_transcript交互屏幕阅读器转录文本
a11y_reduced_motion交互是否遵循 prefers-reduced-motion?
a11y_forced_colors交互forced-colors 兼容性启发式检查
a11y_vtt_check交互WebVTT 字幕质量
a11y_evidence覆盖与证据证据包(可验证的交接材料)
a11y_disprove覆盖与证据反证:重新验证发现项
a11y_ledger覆盖与证据覆盖台账(持久化)
a11y_wcag3_preview覆盖与证据WCAG 3 草案预览(不评分)

6 个提示词

  • audit-page(url*、language):针对 URL 的完整无障碍审计工作流:自动化工具,以及需要手动核查的内容(键盘、屏幕阅读器、缩放)。每个提示词均提供英文和西班牙文版本。

  • fix-contrast(fg*、bg*、context):引导式对比度修复:验证颜色组合(或文字叠加在图像上的区域),获取最接近的合格颜色,并将其应用到代码中。每个提示词均提供英文和西班牙文版本。

  • pre-deploy-check(url*、baseline):部署前回归检查:对 URL 进行快速审计,并将快照与基线快照进行差异比较。每个提示词均提供英文和西班牙文版本。

  • declaration-eaa(entity*、url*、status):生成《欧洲无障碍法案》/ RD 1112/2018 无障碍声明,并向用户收集缺少的法律字段。每个提示词均提供英文和西班牙文版本。

  • conformance-wcagem(url*、tier、language):网站 WCAG-EM 一致性评估阶梯式引导:快速筛查 → Agent 验证的代表性样本引导式评估 → 一致性报告所需信息。每个提示词均提供英文和西班牙文版本。

  • blindfold-task(url*、goal*、kind、language):蒙眼可用性测试 — Agent 仅感知无障碍树,并且只通过无障碍名称和键盘操作来尝试完成真实任务,逐步记录操作中的阻碍;最后给出 a11y_journey_verdict。这是其他无障碍工具都不具备的能力:基于任务的非视觉测试,Agent 就是屏幕阅读器用户。每个提示词均提供英文和西班牙文版本。

安装

mcp-name: io.github.kinti/a11y-toolkit · PyPI: a11y-toolkit · Zenodo DOI: 10.5281/zenodo.22843722

适用于任何支持 MCP 的客户端 — Claude Code/Desktop、Cursor、Windsurf、VS Code、 Codex CLI、OpenCode、ZCode、Zed、Cline、Continue、Kimi Code……所有经验证的配置格式请参见 docs/clients.md。

claude mcp add a11y-toolkit -- uvx --from a11y-toolkit a11y-toolkit-mcp

也可使用 JSON 配置:

{
  "mcpServers": {
    "a11y-toolkit": {
      "command": "uvx",
      "args": ["--from", "a11y-toolkit", "a11y-toolkit-mcp"],
      "timeoutMs": 60000
    }
  }
}

渲染类工具在 Playwright 存在时会使用它,并接受 browser 参数 (auto、chromium、firefox、webkit、chrome、msedge — 自动检测第一个可用的浏览器)。接受 auth_state(Playwright storage_state 路径),以审计登录后才能访问的页面。 其他所有功能均无需任何依赖。

技能
git clone https://github.com/kinti/a11y-toolkit && cd a11y-toolkit
./skill/install-skill.sh     # → ~/.zcode/skills and ~/.claude/skills

Agent 钩子 — a11ytoolkit init

自行读取 AGENTS.md 的 Agent 会获得重要规则 — 每次更改 UI 后,都要重新审计,再宣布工作 完成 — 以及精确的命令:

cd your-project
uvx --from a11y-toolkit a11ytoolkit init     # writes/merges the AGENTS.md hook (idempotent)

它还会打印 MCP 配置块和可选的技能安装步骤。 --check 会报告钩子是否存在(若不存在则退出码为 1 — 适用于 CI)。

语言 — 社区语言包

所有面向用户的消息(问题发现、修复建议、法律措辞)均存放在 语言包中 — 每种语言对应一个 JSON 文件,目前提供 es 和 en。添加一种语言只需提交一个文件的 PR:复制 _template.json,翻译时保留 {placeholders},然后运行 python3 tests/test_locales.py,即可通过机械化验证 (键、占位符、复数规则、完整性)。采用与 axe-core 语言包相同的社区协作模式 — 并增加了 axe-core 不具备的验证功能。指南: docs/i18n.md。下游产品可以通过叠加品牌措辞,而无需分叉。

CLI — 相同引擎,一个命令

使用 pip install a11y-toolkit(或 uv tool install a11y-toolkit)安装。

a11ytoolkit audit --changed                     # ONLY what changed since HEAD (CI gate)
a11ytoolkit audit --changed --base origin/main  # a branch's changes — exit 2 on high/medium
a11ytoolkit audit --url https://example.com --pages 5   # sitemap-first crawl
a11ytoolkit pair "#1f2328" "#fbfaf7"                    # contrast
a11ytoolkit image hero.jpg --text "#fff" --region 120,40,420,90
a11ytoolkit forms https://mysite/contact                # form errors
a11ytoolkit kbd https://mysite                          # keyboard traps + 3.2.1/3.2.2
a11ytoolkit reflow https://mysite                       # 320px reflow
a11ytoolkit scroll https://medium.com/feed              # infinite scroll
a11ytoolkit validate --url https://example.com          # W3C Nu
a11ytoolkit hover https://mysite                        # tooltip dismissibility
a11ytoolkit fix --file page.html -o fixed.html          # safe autofix
a11ytoolkit declaration --entity "Acme" --url https://… --status partial --framework eaa
a11ytoolkit snapshot https://mysite --out before.json   # before deploy
a11ytoolkit diff before.json after.json                 # after deploy
a11ytoolkit evidence audit.json -o pack.json            # verifiable evidence pack
a11ytoolkit disprove --url https://mysite               # re-verify findings
a11ytoolkit budget --budget budget.json --audit audit.json  # only NEW findings block
a11ytoolkit sarif --from-audit audit.json -o a11y.sarif # GitHub code scanning
a11ytoolkit badge --score 92 --out badge.svg            # honest SVG
a11ytoolkit contrast-dom https://mysite --selector ".hero h1"  # auto-region pixel sampling
a11ytoolkit vpat pack.json --product "Acme" -o vpat.html      # VPAT 2.5 (WCAG) draft
a11ytoolkit earl --from-audit audit.json -o earl.json          # ACT Rules / EARL export
a11ytoolkit wcag3 --from-audit audit.json                      # WCAG 3 draft preview (no score)

覆盖范围:55 项 WCAG 2.2 A/AA 标准中的 51 项(93%)

有自动化检测信号仅限人工检测(确实需要人工)
1.1.1, 1.2.2, 1.2.3, 1.2.5, 1.3.1–1.3.5, 1.4.1–1.4.5, 1.4.10–1.4.13, 2.1.1, 2.1.2, 2.1.4, 2.2.1, 2.2.2, 2.4.1–2.4.7, 2.4.11, 2.5.1–2.5.4, 2.5.7, 2.5.8, 3.1.1, 3.1.2, 3.2.1–3.2.4, 3.2.6, 3.3.1–3.3.4, 3.3.8, 4.1.2, 4.1.31.2.1(音频转录文本)、1.2.4(实时字幕)、2.3.1(闪烁检测)、3.3.7(重复输入)

4 项仅限人工检测的标准各自都有一个知识条目(a11y_criterion),告诉 Agent 如何逐项人工验证。每份报告都会打印这一边界。

a11y.es 背后的引擎

a11y.es 是一项面向西班牙市场的无障碍服务,运行着这个引擎。该服务使用独立代码库;本仓库则是引擎本身。

已在真实网页上验证

每月在真实网页上与 axe-core 4.10 进行基准测试(方法和结果)。在实际网站上进行基于任务的 Agent 基准测试,其中包括对西班牙最重要网页的分层抽样(方法和结果)。在 gov.uk 上发现了 axe 未报告的一项真实 WCAG 失败(蓝色按钮的对比度为 3.91:1,已人工验证)。也排除了我们自己的误报(隐藏的跳过链接、蜜罐字段、单上下文通用链接、图像替代文本 accname——每项都有回归测试样例)。

此外,还使用 W3C 官方 ACT 测试用例进行测试:scripts/act_report.py 会重新生成 EARL 实现报告——与其实现的每条已发布 ACT 规则均 100% 一致(355 个官方测试用例、20/20 条规则、零不一致;每次发布都会对照 w3c/wcag-act-rules 仓库进行验证;各规则的细分结果见 docs/act-report-summary.md)。WCAG 2.2 目录(86 项标准,A/AA/AAA)和 WCAG 3 成果注册表也同样依据 w3.org 的权威来源进行了验证(scripts/wcag22_ingest.py、scripts/wcag3_ingest.py)。

我为什么构建这个工具

自 2003 年以来,我一直在审查网站的无障碍性。二十年来,工具变得更快了,但问题依旧:同样缺失的替代文本、同样的键盘陷阱、同样会吞掉你劳动成果的表单。当 AI Agent 开始编写大多数网页时,审查能力的缺口不再是人手不足的问题,而成了基础设施问题。

于是,我构建了这款我一直希望审查时能用上的工具。不是又一个扫描器——扫描器已经够多了。而是一套工具包,能完成一半工作,明确说明检测范围的边界,并将剩余工作整理好,交给负责签字的人。上文提到的 gov.uk 问题并非合成基准测试案例:这个引擎发现了它,我也亲眼确认后才将其记录下来。

如果它能为你省下一个下午,请点个星——这确实能帮助下一位审查人员找到它。如果没有,请提交 issue 告诉我缺少什么。

内置诚实原则

每次审计都会说明:自动化可覆盖 55 项 A/AA 标准中的 93%(若计入 AAA 和确实需要人工的检查项,约占全部 WCAG 标准的三分之一)——其余部分需要人工处理。 audit-page 提示词和技能会让 Agent 使用人工检查清单检查它能检查的内容(键盘、焦点、缩放、已播报的错误)。这是筛选工具,不是最终判定。剩余的人工工作按标准项计价:MIN 23(阅读并确认)、MED 19(在浏览器中验证)、MAX 13(实际交互并作出判断);完整表格。证据包是交给负责签字人员的交接材料,其中也包含屏幕阅读器转录文本,让审查人员了解盲人用户听到的内容。

安全性与范围

这是一个本地工具:以你的用户身份在你的计算机上运行。a11y_audit_url 仅接受 http/https(不接受 file://——本地 HTML 请使用 --file/html)。a11y_html_validate 在 html 模式下会将内容 POST 到 W3C 服务(url 模式只会共享 URL; 支持自托管的 vnu)。path/output_path 会读取/写入本地路径——请在你信任的 MCP 客户端中使用。

开发

python3 tests/test_contrast.py && python3 tests/test_audit.py && python3 tests/test_v32.py \
  && python3 tests/test_dom.py && python3 tests/test_cli.py && python3 tests/test_solido.py \
  && python3 tests/test_mcp.py && python3 tests/test_png.py && python3 tests/test_vpat.py \
  && python3 tests/test_act.py

没有 Playwright 时,tests/test_dom.py 会自动跳过。tests/test_solido.py 会检查设计 不变量(目录一致性、版本对齐、数量覆盖、恶意 HTML 模糊测试)。 发布:make release V=X.Y.Z——以原子方式升级版本、执行门禁、创建标签并推送。

路线图

近期已完成:支持 shadow DOM 和状态对比度的渲染审计、表单错误 测试与自动修复、键盘陷阱、无限滚动、重排、W3C Nu 集成、SARIF 和错误预算、证据包(规范已发布、 可自验证)、站点地图爬取、登录后审计、浏览器 自动检测、屏幕阅读器转录,以及按准则计算的工作量 估价。完整历史记录见变更日志。

接下来,大致按以下顺序进行:

  • 证明交互机制:允许外部审计员的签名通过哈希引用证据包(采用他们的架构,我这边适配)
  • 发布 CI 中针对真实页面运行的 axe-core 月度基准测试结果
  • 将屏幕阅读器转录与 NVDA 和 VoiceOver 输出进行交叉核对
  • 添加更多经过验证的客户端配置(JetBrains AI、Gemini CLI),并采用与 docs/clients.md 相同的处理方式

作者

Jesús Quintana Fernández (jquin.net)——SEO/GEO 顾问及 自 2003 年起从事网页无障碍实践的专业人士。MIT © 2026。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。