Skip to main content
Glama

A11y Feedback MCP

为编码和设计智能体提供真正的可访问性反馈循环,而不是又一条“遵循 WCAG”的提醒。

a11y-feedback-mcp 在 Chromium 中渲染界面,运行 axe-core,并向任何 Model Context Protocol 客户端返回可操作的证据:违反的规则、影响、CSS 选择器、DOM 片段、计算样式、边界框、修复步骤以及满足数学对比度要求的候选值。

它可直接与 Codex 和 Claude Code 配合使用。对于 Claude Design,可靠的流程是将 Claude Code 同时连接到 Claude Design 的 MCP 服务器和本服务器,然后审计生成的 HTML 或实时预览,并通过设计工作流将更正发送回去。

这是一个自动化测试辅助工具,而非 WCAG 认证服务。它有意报告不完整的检查,并要求人工测试键盘、焦点、屏幕阅读器、缩放、动效、认知和内容质量。

“实时反馈”意味着什么

flowchart TD
    A["Agent creates or changes UI"] --> B["Render at target viewport"]
    B --> C["Run axe + contrast analysis"]
    C --> D["Return evidence and correction"]
    D --> E["Agent proposes or applies code fix"]
    E --> F["Re-run same audit"]
    F --> G["Human checks incomplete behavior"]

该服务器是只读的。它绝不会静默修改项目。连接的智能体会利用这些证据进行局部更改,然后重新运行审计以验证更改。

Related MCP server: Accessibility MCP Server

工具

工具

用途

audit_url

审计已渲染的公共或本地开发 URL

audit_html

在托管前审计生成的 HTML

audit_file

审计允许的项目根目录内的本地 .html/.htm 文件

check_contrast

计算颜色对和文本样式的 WCAG 对比度

suggest_contrast_fix

提出最小的黑色/白色定向颜色调整方案,使其通过

explain_issue

将 axe 规则 ID 转化为实现和验证指南

get_wcag_checklist

返回完整的 A/AA/AAA 成功准则集,包含 W3C 链接以及自动化/手动覆盖

所有工具都被标注为只读。服务器还提供一个 accessibility-fix-loop 提示词。

标准级别

审计工具支持 wcag2a、wcag2aa、wcag2aaa、wcag21aa、wcag21aaa、wcag22aa、wcag22aaa 和 best-practice。AA 级别包含所有必需的 A 级和 AA 级成功准则;AAA 级别包含 A、AA 和 AAA 级成功准则。wcag22aa 仍是默认值,因为 W3C 推荐使用最新的 WCAG 版本,并提醒不要将整个站点的 AAA 作为通用政策。将 AAA 作为明确的增强目标,并按成功准则级别报告进度。

axe 映射意味着部分自动化覆盖,绝不意味着完整的成功准则已被测试。get_wcag_checklist 公开了 WCAG 2.2 AA 所需的全部 55 项成功准则,或 WCAG 2.2 AAA 所需的全部 86 项成功准则,包括自动化无法完成的人工工作。

要求

  • Node.js 20 或更高版本

  • 推荐使用 Chrome 或 Edge

  • Windows、macOS 或 Linux

服务器会首先查找已安装的 Chrome/Edge。在受支持的 Linux 环境中,它可以回退到捆绑的 @sparticuz/chromium。您可以将 A11Y_MCP_BROWSER_PATH 设置为明确的浏览器可执行文件。默认情况下,Chromium 沙箱保持启用;仅在受限容器或 Lambda 风格的运行时无法以其他方式启动 Chrome 时,才设置 A11Y_MCP_NO_SANDBOX=true。

在 Windows 上安装

在您存放项目的文件夹中打开 PowerShell:

git clone https://github.com/aditya-ariosity/a11y-feedback-mcp.git
cd a11y-feedback-mcp
npm install
npm run build

如果仓库尚未在 GitHub 上,请先下载或复制此文件夹,然后在其中运行最后三条命令。

连接 Codex

在 PowerShell 中,使用构建后的入口点的绝对路径:

codex mcp add a11y-feedback -- node "C:\full\path\to\a11y-feedback-mcp\dist\index.js"

或者将等效配置添加到 ~/.codex/config.toml:

[mcp_servers.a11y_feedback]
command = "node"
args = ["C:\\full\\path\\to\\a11y-feedback-mcp\\dist\\index.js"]
startup_timeout_sec = 30
tool_timeout_sec = 90

[mcp_servers.a11y_feedback.env]
A11Y_MCP_ALLOWED_ROOT = "C:\\full\\path\\to\\your-projects"

重启 Codex,然后询问:

以 1440×900 和 390×844 审计此页面。修复关键和严重问题,重新运行两次审计,并列出剩余的人工检查。

有关验证和故障排除,请参阅 docs/codex.md。

连接 Claude Code

claude mcp add --scope user a11y-feedback -- node "C:\full\path\to\a11y-feedback-mcp\dist\index.js"

运行 claude mcp list 以确认连接。有关 Claude Design 桥接工作流,请参阅 docs/claude-code-and-design.md。

开发

npm install
npm run check
npm test
npm run test:e2e
npm run build

npm test 涵盖颜色数学、网络保护、修复和 MCP 契约。npm run test:e2e 会启动 Chromium 并审计特意设计为不可访问的测试夹具。

启动本地 stdio 服务器:

npm run dev

启动可选的 Streamable HTTP 传输:

npm run build
npm run start:http

端点为 http://127.0.0.1:3000/mcp;健康检查为 http://127.0.0.1:3000/health。HTTP 默认绑定到 127.0.0.1。

环境变量

变量

默认值

含义

A11Y_MCP_BROWSER_PATH

自动检测

Chrome/Chromium/Edge 可执行文件的绝对路径

A11Y_MCP_ALLOWED_ROOT

服务器工作目录

仅可审计此根目录下的本地 HTML

A11Y_MCP_ALLOW_PRIVATE

stdio 上为 true,HTTP 上为 false

允许 localhost/专用网络 URL 目标

A11Y_MCP_ENABLE_FILE_AUDIT

HTTP 上为 false

在根目录限制后允许通过 HTTP 进行本地文件审计

A11Y_MCP_BROWSER_CONCURRENCY

2

最大并发 Chromium 审计

A11Y_MCP_AUDIT_TIMEOUT_MS

25000

axe 审计阶段的截止时间

A11Y_MCP_NO_SANDBOX

false

仅当运行时需要时才在无沙箱的情况下启动 Chromium

HOST / A11Y_MCP_HOST

127.0.0.1

HTTP 绑定地址

A11Y_MCP_ALLOWED_HOSTS

localhost 名称

HTTP 模式接受的逗号分隔的 Host 头

A11Y_MCP_BODY_LIMIT

4mb

HTTP JSON 请求体限制;必须保持在 audit_html 架构限制以上

PORT

3000

HTTP 传输端口

请勿将参考 HTTP 服务器直接暴露到公共互联网。在其前面设置身份验证、TLS、速率限制、请求大小限制和租户隔离。请阅读 docs/security.md。

当前范围

MVP 涵盖已渲染的 Web UI 和确定性的对比度计算。它尚不检查原生移动应用、PDF、画布、视频字幕或原始 Claude Design 像素。计划中的适配器可以在不更改 MCP 契约的情况下添加框架感知的补丁、截图/OCR 辅助、设计令牌集成、CI 注释和一流的画布连接器。

项目文档

许可证

MIT

Available Tools

7 tools
audit_fileAudit a local HTML fileA
Read-onlyIdempotent

Render a local .html or .htm file beneath the configured allowed root and return accessibility findings and corrections. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoViewport width in CSS pixels.
heightNoViewport height in CSS pixels.
filePathYesAbsolute path, or path relative to the server working directory, to an HTML file.
standardNoWCAG ruleset to test. Use best-practice to include additional axe guidance.wcag22aa
maxIssuesNoMaximum violation groups returned; summary totals still cover the full run.
maxNodesPerIssueNoMaximum affected elements returned per rule.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds the constraint that files must be 'beneath the configured allowed root', which is a behavioral safety detail not present in any structured field. It also reinforces the read-only nature. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences that front-load the core purpose ('Render a local .html or .htm file') and key constraints ('beneath the configured allowed root', 'Read-only'). No fluff or redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters (fully documented in schema), annotations, and no output schema, the description is largely complete. It covers the file type constraint, the allowed root security boundary, the read-only nature, and the expected output (accessibility findings and corrections). Missing is explanation of what 'render' entails (e.g., headless browser, JavaScript execution), but this is minor and compensated by the schema details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter (filePath, width, height, standard, maxIssues, maxNodesPerIssue) already has a description in the schema. The tool description adds no additional information about parameters beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Render' and 'return accessibility findings and corrections') and resource ('local .html or .htm file beneath the configured allowed root'). It distinguishes itself from sibling tools like audit_url (which works on URLs) by explicitly specifying 'local file' and the file path restriction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any explicit guidance on when to use this tool versus the available siblings (audit_url, audit_html, etc.). It does not state alternatives, prerequisites (e.g., file must be accessible), or exclusion criteria (e.g., not for raw HTML strings). The purpose implicitly suggests local files, but no clear usage context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_htmlAudit an HTML documentA
Read-onlyIdempotent

Render supplied HTML in an isolated headless browser and return WCAG findings plus evidence and suggested corrections. Use for generated UI before it is hosted. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesComplete HTML document or fragment to render and test.
widthNoViewport width in CSS pixels.
heightNoViewport height in CSS pixels.
baseUrlNoOptional http(s) base URL used to resolve relative assets.
standardNoWCAG ruleset to test. Use best-practice to include additional axe guidance.wcag22aa
maxIssuesNoMaximum violation groups returned; summary totals still cover the full run.
maxNodesPerIssueNoMaximum affected elements returned per rule.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds 'isolated headless browser' and 'Read-only' which align with and reinforce the annotations. No contradictions. The description provides modest additional context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundant or filler content. The first sentence clearly states the action and outcome, and the second provides usage guidance and a read-only note. Every part earns its place, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description covers the core purpose, usage context, and safety (read-only). It mentions the output type (WCAG findings, evidence, corrections) at a high level. However, it does not explain how parameters like standard or maxIssues influence behavior, though the schema descriptions handle those details. The description is sufficiently complete for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description in the input schema. The tool description does not add specific parameter-level details, but it does describe the output (WCAG findings, evidence, corrections), which indirectly informs parameter usage. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Render') and resource ('supplied HTML') with a clear outcome ('return WCAG findings plus evidence and suggested corrections'). It also distinguishes from sibling tools like audit_url and audit_file by stating 'Use for generated UI before it is hosted', making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use for generated UI before it is hosted', which provides clear context for when to use this tool. While it does not explicitly list alternatives or when not to use, the sibling tool names (audit_url, audit_file) imply the distinction, and the guidance is sufficient for an agent to select this over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_urlAudit a rendered URLA
Read-onlyIdempotent

Load a public or local web page in headless Chromium, run axe-core, and return prioritized WCAG findings, DOM evidence, computed styles, and contrast corrections. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute http:// or https:// URL to render and test.
widthNoViewport width in CSS pixels.
heightNoViewport height in CSS pixels.
standardNoWCAG ruleset to test. Use best-practice to include additional axe guidance.wcag22aa
maxIssuesNoMaximum violation groups returned; summary totals still cover the full run.
maxNodesPerIssueNoMaximum affected elements returned per rule.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint true, and destructiveHint false. The description adds context: it uses headless Chromium, is read-only (reinforcing safely), and lists concrete outputs (WCAG findings, DOM evidence, computed styles, contrast corrections). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence front-loaded with the primary action and outputs, then ends with 'Read-only.' Every part is essential and no filler. Excellent structure and brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters (100% schema coverage), rich annotations, and no output schema, the description provides enough context for an AI agent to select and invoke the tool correctly. It covers inputs, behavior, and safety. Slight deduction because it doesn't mention pagination or error handling for invalid URLs, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value beyond schema by summarizing the overall return structure (prioritized findings, evidence, contrast corrections), but doesn't detail individual parameter behaviors beyond what schema provides. Slight extra context earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool loads a page, runs axe-core, and returns prioritized WCAG findings with specific outputs like DOM evidence and computed styles. It distinguishes itself from siblings like audit_html and audit_file, which operate on different input types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates usage for accessibility auditing of rendered URLs and mentions 'Read-only.' However, it does not explicitly contrast with siblings like check_contrast or explain_issue, nor does it specify when not to use this tool (e.g., for non-public pages or HTML fragments).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_contrastCheck a color pairA
Read-onlyIdempotent

Calculate the WCAG contrast ratio for foreground and background colors and determine whether the pair passes for the supplied text size and weight.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoAA
backgroundYesBackground CSS sRGB color such as white, #ffffff, rgb(), hsl(), or color(srgb ...).
fontSizePxNo
fontWeightNo
foregroundYesForeground CSS sRGB color such as white, #767676, rgb(), hsl(), or color(srgb ...).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as false, so the tool's safe behavior is clear. The description adds value by explaining the return includes ratio and pass/fail for given text size/weight, but does not disclose any edge cases (e.g., handling of transparent colors, out-of-gamut colors) or limits (e.g., only sRGB). A 3 is appropriate as annotations carry the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the main action and includes key details (ratio, pass determination, text attributes). It is concise and efficient, though it could be slightly more scannable by breaking into two sentences. No redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters (2 required) and no output schema, the description covers the main computation (contrast ratio and pass/fail) but omits specifics about return format (e.g., numeric ratio, boolean pass, object). For a calculation tool with moderate complexity, additional context about the scope (sRGB only) or limitations (e.g., does not handle transparency) would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 40%, so the parameter descriptions in the schema partially explain foreground/background colors as 'CSS sRGB color'. However, the tool description clarifies that both 'fontSizePx' and 'fontWeight' are used to determine the pass level, adding meaning beyond the schema's default values and constraints. It compensates for the missing schema descriptions on those parameters, though the level parameter's enum (AA, AAA) is already clear in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Calculate' and the resource 'WCAG contrast ratio', and distinguishes the tool from siblings like 'suggest_contrast_fix' by specifying the output includes both the ratio and a pass/fail determination based on text size and weight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking color contrast but does not explicitly state when to use this tool versus alternatives like 'suggest_contrast_fix'. It lacks guidance on prerequisites or context (e.g., checking multiple pairs vs. one). Without sibling differentiation, the agent may not know when to choose this over other audit tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_issueExplain an accessibility ruleA
Read-onlyIdempotent

Return implementation-focused remediation steps and the axe rule reference for a rule ID found in an audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleIdYesaxe rule ID such as color-contrast, button-name, or label.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only and non-destructive. The description adds that it returns 'remediation steps' and 'axe rule reference', which is useful but does not elaborate on any potential limits or side effects. Given the annotations cover the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence that front-loads the core purpose ('return implementation-focused remediation steps') and adds the specific context about axe rule reference. No wasted words, but could be slightly more concise by removing 'the axe rule reference' redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is a single required parameter with full schema coverage and no output schema, the description sufficiently explains what the tool does and what it returns. It does not need to detail return structure since there's no output schema. The tool is straightforward and the description covers the key aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a detailed description for the 'ruleId' parameter (axe rule ID pattern), so schema coverage is 100%. The description does not add new parameter information beyond what the schema states, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns remediation steps and a reference for a given rule ID. It specifies the verb 'return' and the resource 'implementation-focused remediation steps and axe rule reference', and distinguishes from sibling tools like 'check_contrast' which are more specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when a rule ID from an audit is known, but does not explicitly state when NOT to use it or suggest alternatives. For example, it doesn't mention that if you need to run a new audit you should use 'audit_url' instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wcag_checklistGet the complete WCAG requirement checklistA
Read-onlyIdempotent

Return every success criterion required by a WCAG 2.0, 2.1, or 2.2 A/AA/AAA profile, with W3C references, axe rule mappings, and explicit automated-partial versus manual coverage. Use this to plan the checks that a browser audit cannot complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
standardNowcag22aa
principleNo
evaluationNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds context about the output (references, coverage types) but does not disclose additional behavioral traits such as response size, pagination, or performance implications. Given the rich annotations, a 3 is appropriate as the description adds some value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, each adding value. The first sentence clearly defines what the tool returns, and the second sentence provides usage guidance. There is no wasted text, and no repetition of schema information. This is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has three optional parameters, no output schema, and moderate complexity (WCAG profiles with multiple dimensions), the description is too minimal. It does not mention that all parameters are optional, the default value for 'standard' (wcag22aa), or what the response structure looks like (e.g., list of criteria with metadata). For a checklist tool used for planning, users need more context about how the parameters affect the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the parameters (standard, principle, evaluation) have no descriptions in the schema. Although the parameter names and enum values are somewhat self-explanatory (e.g., 'standard' with values like 'wcag2aa'), the description does not explain how these parameters filter the checklist or fill the gap left by the schema. The description should at least describe the effect of providing these optional parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it returns 'every success criterion required by a WCAG 2.0, 2.1, or 2.2 A/AA/AAA profile, with W3C references, axe rule mappings, and explicit automated-partial versus manual coverage.' This clearly distinguishes the tool from sibling audit tools (audit_url, audit_html, audit_file) which perform automated checking, and from issue-specific tools (check_contrast, etc.). The verb 'return' and resource 'checklist' are precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use this to plan the checks that a browser audit cannot complete,' giving a clear use case and implying differentiation from automated audit tools. However, it does not explicitly state when not to use this tool or mention alternative tools for other scenarios, which would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_contrast_fixSuggest a passing colorA
Read-onlyIdempotent

Find the nearest black-or-white-directed foreground or background adjustment that reaches the selected WCAG contrast threshold. Returns a mathematical candidate, not an automatic edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoAA
adjustNoforeground
backgroundYesBackground CSS sRGB color such as white, #ffffff, rgb(), hsl(), or color(srgb ...).
fontSizePxNo
fontWeightNo
foregroundYesForeground CSS sRGB color such as white, #767676, rgb(), hsl(), or color(srgb ...).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is safe and non-destructive. The description adds key behavioral context: it returns a 'mathematical candidate' and explicitly states it is 'not an automatic edit.' This goes beyond annotations by clarifying that the user must apply the suggestion themselves, fully disclosing the tool's scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, each sentence earns its place. The first sentence states the core function concisely; the second clarifies the non-destructive, advisory nature. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters (2 required, 2 enums), moderate complexity. The description explains the what and the result, but lacks details like what happens when no adjustment can reach the threshold (returns null/error?). Additionally, there is no output schema, so the return format is left to experimentation. For a mathematical suggestion tool, the description is largely complete, but could mention error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, meaning the schema documents only two parameters (foreground, background) with descriptions. The description adds meaning by explicitly mentioning 'black-or-white-directed' adjustments and connecting parameters to WCAG thresholds. It does not detail each parameter beyond what the schema provides, but for the low coverage, it compensates well by explaining the tool's purpose. The enum parameters (level, adjust) are left for the schema to define, which is acceptable given the tool's focused purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Find', 'adjustment') and resources ('foreground', 'background', 'WCAG contrast threshold'). It clearly identifies the tool's output as a mathematical candidate, distinguishing it from automatic edits and sibling tools like check_contrast or explain_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like check_contrast or get_wcag_checklist. However, the mention of 'nearest...adjustment that reaches the selected WCAG contrast threshold' implies it is used when a user needs a suggestion to fix contrast, and 'Returns a mathematical candidate, not an automatic edit' distinguishes it from an auto-fix. No explicit exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.4
    • First observedaudit_file
    • First observedaudit_html
    • First observedaudit_url
    • First observedcheck_contrast
    • First observedexplain_issue
    • First observedget_wcag_checklist
    • First observedsuggest_contrast_fix

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a clear and distinct task: three different methods for auditing (by URL, HTML string, or file), a contrast checker, a contrast fix suggester, an issue explainer, and a checklist retriever. There is no overlap or ambiguity among them.

Naming Consistency4/5

Tool names mostly follow a verb_noun pattern (audit_url, audit_html, audit_file, check_contrast, explain_issue, get_wcag_checklist). The only minor deviation is 'suggest_contrast_fix', which is a verb_verb_noun but still clear and consistent in style.

Tool Count5/5

7 tools is an ideal number for this domain. Each tool covers a necessary function without unnecessary redundancy: three audit entry points, two contrast helpers, one explainer, and one checklist reference. The scope is well-scoped and focused on WCAG accessibility.

Completeness5/5

The tool set provides a complete lifecycle for accessibility auditing: multiple ways to ingest content for auditing, contrast analysis and remediation, issue explanation, and a checklist for manual coverage. There are no obvious gaps for the intended use case of assessing and fixing WCAG compliance.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with web accessibility analysis tools via MCP, enabling checks for alt text, heading hierarchy, color contrast, ARIA validation, and form accessibility.
    52 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables auditing web pages for WCAG violations, applying deterministic fixes and PRs, all through MCP clients like Claude Desktop.
    7
    MIT