关于 wcagc — accessibility scanning
wcagc-mcp 是通过 wcagc 执行确定性无障碍扫描的无状态适配器,面向需要扫描结果和问题明细的团队,并明确说明自动化检查不能证明符合标准。
主要功能
- 01使用 axe-core 扫描公开 URL
- 02检查公开 PDF 的 PDF/UA-1 结构
- 03读取扫描状态、严重级别统计和问题
- 04爬取已注册网站并查看运行结果
- 05归纳重复 DOM 模式并检查影响范围
- 06重放已保存流程并查看违规趋势
适用场景
- 01检查公开网页的无障碍问题
- 02依据 PDF/UA-1 检查 PDF 结构
- 03查看已注册网站爬取后的问题
- 04追踪重复模式或网站违规历史
MCP 相关
向 MCP 客户端提供 wcagc 扫描和结果管理工具。支持本地 stdio 与采用托管 OAuth 的远程 Streamable HTTP。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.wcagc.com/mcpclaude mcp add --transport http wcag-compliance https://mcp.wcagc.com/mcp{"mcpServers":{"wcag-compliance":{"type":"http","url":"https://mcp.wcagc.com/mcp"}}}在 Cursor 中打开{"servers":{"wcag-compliance":{"type":"http","url":"https://mcp.wcagc.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"wcag-compliance":{"type":"http","url":"https://mcp.wcagc.com/mcp"}}}{"mcpServers":{"wcag-compliance":{"serverUrl":"https://mcp.wcagc.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
wcagc-mcp
一个 MCP 服务,让 AI 助手(Claude、ChatGPT 或任何兼容 MCP 的客户端)通过 wcagc 执行真实、确定性的无障碍扫描——底层使用 axe-core,而不是由大模型猜测。每份扫描结果都明确说明覆盖范围免责声明,绝不声称“符合标准”:自动化测试只能发现一部分无障碍障碍,本工具会在每次响应中明确说明这一点。
此软件包是一个轻量、无状态的适配器。它不包含数据库、扫描逻辑,也不保存除 wcagc API 基础 URL 之外的任何密钥——它只将 MCP 工具调用转换为对 wcagc API 的 HTTP 调用,并转发调用者自己的 bearer。所有身份验证、权限、配额和扫描编排都由 API 负责;这段代码可以安全地从头到尾阅读。
两种运行方式
本地(stdio)——适用于 Claude Desktop、Cursor,或任何会启动本地进程的 MCP 客户端:
npx @wcagc/mcp
为 MCP 客户端配置:
{
"mcpServers": {
"wcagc": {
"command": "npx",
"args": ["-y", "@wcagc/mcp"],
"env": {
"WCAGC_MCP_KEY": "<your mcp:scan API key>"
}
}
}
}
在 wcagc 账户的“Settings → API keys”下创建一个 mcp:scan 密钥——所有套餐均可使用;Free/Starter 套餐有每日配额,Pro/Agency 套餐则不设限制。
托管(Streamable HTTP + 托管 OAuth)——Claude 网页版/桌面版/移动版连接器和 ChatGPT 使用的方式,因为它们都不会为你运行本地进程。添加此远程 MCP 连接器:
https://mcp.wcagc.com/mcp
客户端会发现 /.well-known/oauth-protected-resource/mcp,打开 wcagc 登录/授权流程,并将连接绑定到一个 Organization。无需复制粘贴密钥。本地 stdio 和 CI 仍支持 API 密钥 bearer 身份验证。
ChatGPT 是否可用取决于 ChatGPT 套餐,以及客户端是否允许使用操作工具;scan_url 会创建扫描,并非只读操作。请参阅 wcagc.com/integrations/mcp。
工具
| 工具 | 套餐 | 功能 |
|---|---|---|
scan_url | 所有套餐 | 扫描任意公开 URL,或扫描已注册站点以进行完整跟踪(Pro+)。 |
check_pdf | 所有套餐 | 对公开 PDF 执行 PDF/UA-1 结构检查。 |
get_scan · get_findings | 所有套餐 | 读取 scan_url 扫描的状态、严重程度计数和发现结果——包括已记录和一次性扫描。 |
list_sites | Pro+ | 列出账户中已注册的站点。 |
scan_site | Pro+ | 抓取已注册站点的所有可访问页面并进行扫描。 |
get_run · get_run_findings | Pro+ | 读取 scan_site 执行的全站运行结果。 |
get_root_causes | Pro+ | 对某次运行中重复出现的 DOM 模式分组,并返回基于事实的元素/页面影响范围。 |
run_journey | Pro+ | 重放已保存的多步骤流程并检查每一步。 |
get_trends | Pro+ | 读取站点违规数量随时间变化的历史记录。 |
一个 ID,一个轮询工具:无论 scan_url 对某个 URL 执行了什么操作,get_scan 和 get_findings 都可以读取其结果。get_run 和 get_run_findings 仅用于读取 scan_site 执行的全站运行结果。
每个会生成扫描结果的工具都会在文本内容和结构化内容中返回覆盖范围免责声明。工具不会给出分数、等级或符合性结论——自动化测试只能发现约 30–57% 的无障碍问题,其余部分需要人工审查。
配置
| 环境变量 | 使用方 | 含义 |
|---|---|---|
WCAGC_API_BASE_URL | 两者 | 要调用的 wcagc API。默认为 https://api.wcagc.com;仅在自托管时设置。 |
WCAGC_MCP_KEY | stdio | 你的 mcp:scan API 密钥。 |
PORT | 托管版 | 监听端口(默认 8080)。 |
WCAGC_MCP_ALLOWED_HOSTS | 托管版 | 以逗号分隔的 Host 请求头允许列表(绑定到 0.0.0.0 时用于防止 DNS 重绑定)。 |
WCAGC_MCP_INTROSPECT_TTL_SECONDS | 托管版 | 已验证 bearer 的缓存时长,超时后会向 API 重新验证(默认 60)。 |
WCAGC_MCP_OAUTH_ISSUER | 托管版 | 预期的 OAuth 颁发者(默认为 WCAGC_API_BASE_URL)。 |
WCAGC_MCP_OAUTH_JWKS_URL | 托管版 | 授权服务器的公开 JWKS URL。 |
WCAGC_MCP_URL | 托管版 | 标准 RFC 9728 受保护资源 URL(默认为 https://mcp.wcagc.com/mcp)。 |
WCAGC_MCP_JWKS_TTL_SECONDS | 托管版 | JWKS 缓存 TTL;遇到未知的 kid 时会立即重新获取。 |
WCAGC_OPENAI_APPS_CHALLENGE | 托管版 | OpenAI 插件目录的域名验证令牌;请将其保存在部署密钥存储中,切勿放入源代码。 |
开发
托管版对 /mcp 和发现端点的 HTTP 请求会生成 JSON 日志,其中包含生成的请求 ID、HTTP 状态、MCP 方法、错误代码和耗时。令牌、请求头、查询字符串、工具参数和结果不会记录。健康探测不会记录。
Docker 入口点会预加载 New Relic ESM Agent。设置 NEW_RELIC_AGENT_ENABLED=true、NEW_RELIC_APP_NAME=wcagc-mcp 和部署密钥 NEW_RELIC_LICENSE_KEY,即可启用 APM 并转发这些安全的请求日志。许可证密钥必须属于现有的 New Relic 账户;切勿提交该密钥。stdio 入口点不会加载 Agent。
npm install
npm run dev # hosted, watch mode
npm run start:stdio # stdio mode
npm run typecheck
npm run verify # node:test against a local fixture API
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。