关于 Web Accessibility-Testing MCP Server (A11y MCP)
A11y MCP 是一个 MCP 服务,让 LLM 能够调用网页无障碍测试接口,检查网页或 HTML 片段是否符合 WCAG 标准。它基于 Deque 的 Axe-core 与 Puppeteer,面向前端开发者和无障碍测试人员。项目说明明确指出它并非 Deque Labs 的官方服务。
主要功能
- 01测试公开网页的无障碍问题
- 02测试 HTML 字符串
- 03按 WCAG 2.0、2.1、2.2 标准检查
- 04颜色对比度与 ARIA 属性检查
- 05查询可用的无障碍规则
- 06检测强制屏幕方向锁定
适用场景
- 01在开发过程中检查页面是否符合 WCAG 2.1 AA
- 02在桌面与移动视口下比较页面的无障碍结果
- 03检查颜色组合的对比度是否达标
MCP 相关
该项目是一个 MCP 服务,向 Claude Desktop、Claude Code、VS Code、Cursor 等 MCP 客户端提供无障碍测试工具,客户端可通过工具调用获取结构化的测试结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要测试的网页 URL |
| tags | array | 否 | 可选:要测试的无障碍标签数组(例如 "wcag2a"、"wcag2aa"、"wcag21a") |
| width | number | 否 | 视口宽度,单位为像素(默认值:1280) |
| height | number | 否 | 视口高度,单位为像素(默认值:800) |
详细介绍
Web 无障碍测试 MCP 服务(A11y MCP)
https://github.com/user-attachments/assets/316c6d44-e677-433e-b4d5-63630b4bab2b
A11y MCP 是一个 MCP(模型上下文协议) 服务,可让大模型使用 Web 无障碍测试 API。
此服务使用 Deque Axe-core API 和 Puppeteer,让大模型能够分析 Web 内容是否符合 WCAG 标准,并发现无障碍问题。
注意: 这不是 Deque Labs 官方提供的 MCP 服务。
功能
- 测试网页:测试任意公开 URL 的无障碍问题,并可自定义视口尺寸
- 测试 HTML 片段:测试原始 HTML 字符串中的无障碍问题
- WCAG 合规性测试:根据不同的 WCAG 标准(2.0、2.1、2.2)检查内容
- 自定义测试:指定要测试的无障碍标签/标准
- 规则探索:获取可用无障碍规则的信息
- 色彩对比度分析:检查色彩组合是否符合 WCAG 标准
- ARIA 验证:测试 ARIA 属性的使用是否正确
- 屏幕方向锁定检测:识别强制使用特定屏幕方向的内容
安装
前置条件
- Node.js 18 或更高版本
- 兼容 MCP 的客户端(Claude Desktop、Claude Code、VS Code、Cursor 等)
Claude Desktop
编辑 MCP 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
将服务添加到 mcpServers 对象中:
{
"mcpServers": {
"a11y-accessibility": {
"command": "npx",
"args": ["-y", "a11y-mcp-server"]
}
}
}
Claude Code(CLI)
claude mcp add a11y-accessibility -- npx -y a11y-mcp-server
这会为当前项目注册此服务。若要在所有项目中使用:
claude mcp add --scope user a11y-accessibility -- npx -y a11y-mcp-server
验证服务是否已注册:
claude mcp list
注意: 重启 Claude Code 会话后,MCP 工具才会生效。
VS Code(Copilot)
将配置添加到 VS Code 的 settings.json 或 .vscode/settings.json:
{
"mcp": {
"servers": {
"a11y-accessibility": {
"command": "npx",
"args": ["-y", "a11y-mcp-server"]
}
}
}
}
Cursor
将配置添加到 Cursor 的 MCP 配置文件(.cursor/mcp.json):
{
"mcpServers": {
"a11y-accessibility": {
"command": "npx",
"args": ["-y", "a11y-mcp-server"]
}
}
}
Windsurf
将配置添加到 Windsurf 的 MCP 配置文件(~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"a11y-accessibility": {
"command": "npx",
"args": ["-y", "a11y-mcp-server"]
}
}
}
可用工具
test_accessibility
测试 URL 是否存在无障碍问题。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
url | 是 | 要测试的网页 URL |
tags | 否 | 要测试的 WCAG 标签数组(例如,["wcag2aa"]) |
width | 否 | 视口宽度,单位为像素(默认值:1280) |
height | 否 | 视口高度,单位为像素(默认值:800) |
示例 — 桌面视口(默认):
{
"url": "https://example.com",
"tags": ["wcag2aa"]
}
示例 — 移动视口(iPhone 12/13):
{
"url": "https://example.com",
"tags": ["wcag2aa"],
"width": 390,
"height": 844
}
test_html_string
检查 HTML 字符串中的无障碍问题。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
html | 是 | 要检查的 HTML 内容 |
tags | 否 | 要检查的 WCAG 标签数组(例如,["wcag2aa"]) |
width | 否 | 视口宽度(像素;默认值:1280) |
height | 否 | 视口高度(像素;默认值:800) |
示例 — 默认视口:
{
"html": "<div><img src='image.jpg'></div>",
"tags": ["wcag2aa"]
}
示例 — 移动视口:
{
"html": "<div><img src='image.jpg'></div>",
"tags": ["wcag2aa"],
"width": 375,
"height": 812
}
get_rules
获取可用无障碍规则的信息,可选择筛选条件。返回规则对象数组,每个对象包含 ruleId、description、help、helpUrl 和 tags。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
tags | 否 | 按标签筛选规则(例如,["wcag2a", "wcag2aa", "best-practice"]) |
示例 — 按 WCAG 2.1 AA 筛选规则:
{
"tags": ["wcag21aa"]
}
示例 — 获取所有规则(不筛选):
{}
check_color_contrast
检查前景色与背景色的组合是否符合 WCAG 对比度要求。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
foreground | 是 | 前景色(例如,"#000000"、"rgb(0,0,0)") |
background | 是 | 背景色(例如,"#FFFFFF"、"rgb(255,255,255)") |
fontSize | 否 | 字体大小(像素;默认值:16) |
isBold | 否 | 文本是否为粗体(默认值:false) |
示例:
{
"foreground": "#777777",
"background": "#EEEEEE",
"fontSize": 16,
"isBold": false
}
check_aria_attributes
检查 HTML 中的 ARIA 属性使用是否正确。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
html | 是 | 要检查 ARIA 属性使用情况的 HTML 内容 |
示例:
{
"html": "<div role='button' aria-pressed='false'>Click me</div>"
}
check_orientation_lock
检查内容是否强制采用特定方向。
参数:
| 参数 | 必填 | 描述 |
|---|---|---|
html | 是 | 要检查方向锁定问题的 HTML 内容 |
示例:
{
"html": "<html><head><meta name='viewport' content='width=device-width, orientation=portrait'></head><body>Content</body></html>"
}
响应格式
服务以结构化 JSON 格式返回无障碍测试结果:
{
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast",
"affectedNodes": [
{
"html": "<div style=\"color: #aaa; background-color: #eee;\">Low contrast text</div>",
"target": ["div"],
"failureSummary": "Fix any of the following: Element has insufficient color contrast of 1.98 (foreground color: #aaa, background color: #eee, font size: 12.0pt, font weight: normal)"
}
]
}
],
"passes": 1,
"incomplete": 0,
"inapplicable": 2,
"timestamp": "2025-04-25T16:45:33.655Z",
"url": "about:blank",
"testEngine": {
"name": "axe-core",
"version": "4.10.3"
}
}
WCAG 标签参考
可用于 tags 参数的常见标签:
| 标签 | 描述 |
|---|---|
wcag2a | WCAG 2.0 A 级 |
wcag2aa | WCAG 2.0 AA 级 |
wcag2aaa | WCAG 2.0 AAA 级 |
wcag21a | WCAG 2.1 A 级 |
wcag21aa | WCAG 2.1 AA 级 |
wcag22aa | WCAG 2.2 AA 级 |
best-practice | 最佳实践(不严格属于 WCAG) |
依赖项
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
