这是一个使用Playwright和Axe-core提供自动化网页可访问性扫描的模型上下文协议(MCP)服务器。该服务器使LLMs能够执行WCAG合规性检查,捕获带注释的截图,并生成详细的可访问性报告。 一个强大的模型上下文协议(MCP)服务器,使用Playwright和Axe-core提供自动化网页可访问性扫描和浏览器自动化。此服务器使LLMs能够执行WCAG合规性检查,与网页交互,管理持久的浏览器会话,并生成带有视觉注释的详细可访问性报告。
✅ 全面的WCAG 2.0/2.1/2.2合规性检查(A、AA、AAA级别) 🖼️ 自动捕获带有违规高亮显示的截图 📄 详细的JSON报告,附有修复建议 🎯 支持特定的违规类别(颜色对比度、ARIA、表单、键盘导航等)
🖱️ 使用可访问性快照点击、悬停和拖动元素 ⌨️ 输入文本并处理键盘输入 🔍 捕获页面快照以发现所有交互元素 📸 拍摄屏幕截图并保存PDF 🎯 支持基于元素和基于坐标的交互
📑 多页工作流的标签管理 🌐 监控控制台消息和网络请求 ⏱️ 等待动态内容加载 📁 处理文件上传和浏览器对话框 🔄 在浏览器历史中导航
您可以使用以下任一方法安装该包:
使用npm:
npm install -g mcp-accessibility-scanner
使用VS Code CLI在VS Code中安装可访问性扫描器:
对于VS Code:
code --add-mcp '{"name":"accessibility-scanner","command":"npx","args":["mcp-accessibility-scanner"]}'
对于VS Code Insiders:
code-insiders --add-mcp '{"name":"accessibility-scanner","command":"npx","args":["mcp-accessibility-scanner"]}'
这里是Claude Desktop的配置:
{
"mcpServers": {
"accessibility-scanner": {
"command": "npx",
"args": ["-y", "mcp-accessibility-scanner"]
}
}
}
MCP服务器提供了全面的浏览器自动化和可访问性扫描工具:
scan_page对当前页面进行全面的可访问性扫描,使用Axe-core。
参数:
violationsTag: 要检查的WCAG/违规标签数组支持的违规标签:
wcag2a, wcag2aa, wcag2aaa, wcag21a, wcag21aa, wcag21aaa, wcag22a, wcag22aa, wcag22aaasection508cat.aria, cat.color, cat.forms, cat.keyboard, cat.language, cat.name-role-value, cat.parsing, cat.semantics, cat.sensory-and-visual-cues, cat.structure, cat.tables, cat.text-alternatives, cat.time-and-mediabrowser_navigate导航到URL。
url (字符串)browser_navigate_back返回上一页。
browser_navigate_forward前进到下一页。
browser_snapshot捕获当前页面的可访问性快照(比截图更适合分析)。
browser_click在网页元素上执行点击操作。
element (描述),ref (元素引用),doubleClick (可选)browser_type向可编辑元素输入文本。
element, ref, text, submit (可选), slowly (可选)browser_hover在页面上的元素上悬停。
element, refbrowser_drag在两个元素之间执行拖放操作。
startElement, startRef, endElement, endRefbrowser_select_option选择下拉菜单中的选项。
element, ref, values (数组)browser_press_key按下键盘上的键。
key (例如,'ArrowLeft' 或 'a')browser_take_screenshot拍摄当前页面的屏幕截图。
raw (可选), filename (可选), element (可选), ref (可选)browser_pdf_save将页面保存为PDF。
filename (可选,默认为 page-{timestamp}.pdf)browser_close关闭页面。
browser_resize调整浏览器窗口大小。
width, heightbrowser_tab_list列出所有打开的浏览器标签。
browser_tab_new打开一个新的标签。
url (可选)browser_tab_select通过索引选择一个标签。
indexbrowser_tab_close关闭一个标签。
index (可选,如果没有提供则关闭当前标签)browser_console_messages返回页面的所有控制台消息。
browser_network_requests返回自加载页面以来的所有网络请求。
browser_wait_for等待文本出现/消失或时间流逝。
time (可选), text (可选), textGone (可选)browser_handle_dialog处理浏览器对话框(警告、确认、提示)。
accept (布尔值), promptText (可选)browser_file_upload将文件上传到页面。
paths (绝对文件路径数组)browser_screen_capture拍摄用于基于坐标交互的屏幕截图。
browser_screen_move_mouse将鼠标移动到特定坐标。
element, x, ybrowser_screen_click在特定坐标处点击。
element, x, ybrowser_screen_drag从一个坐标拖动到另一个坐标。
element, startX, startY, endX, endYbrowser_screen_type输入文本(与坐标无关)。
text, submit (可选)1. 使用browser_navigate导航到example.com
2. 运行scan_page,设置violationsTag: ["wcag21aa"]
1. 使用browser_navigate导航到example.com
2. 运行scan_page,设置violationsTag: ["cat.color"]
1. 使用browser_navigate导航到example.com
2. 使用browser_snapshot捕获可用元素
3. 使用browser_click点击“登录”按钮
4. 使用browser_type输入"user@example.com"
5. 对登录页面运行scan_page
6. 使用browser_take_screenshot捕获最终状态
1. 导航到example.com
2. 使用browser_snapshot捕获所有交互元素
3. 使用browser_console_messages查看控制台消息
4. 使用browser_network_requests检查网络活动
1. 使用browser_tab_new打开一个新标签
2. 在每个标签中导航到不同的页面
3. 使用browser_tab_select在标签之间切换
4. 使用browser_tab_list列出所有标签
1. 导航到一个页面
2. 使用browser_wait_for等待特定文本出现
3. 与动态加载的内容进行交互
注意: 大多数交互工具需要来自browser_snapshot的元素引用。在尝试与页面元素交互之前,请始终捕获快照。
克隆并设置项目:
git clone https://github.com/JustasMonkev/mcp-accessibility-scanner.git
cd mcp-accessibility-scanner
npm install
MIT