Skip to main content
Glama

A11y MCP Server

An MCP (Model Context Protocol) server for performing accessibility audits on webpages using axe-core. Use the results in an agentic loop with your favorite AI assistants (Cline/Cursor/GH Copilot) and let them fix a11y issues for you!

Features

  • Perform detailed accessibility audits on any webpage

  • Get a summary of accessibility issues

  • Filter audits by specific WCAG criteria

  • Include HTML snippets in the results for easier debugging

Related MCP server: A11y MCP Server

Installation

# Install globally
npm install -g a11y-mcp

# Or use directly with npx
npx a11y-mcp

Configuration

To use this MCP server with Cline, you need to add it to your MCP settings configuration file.

MCP configuration

Add the following to the mcpServers object:

{
  "mcpServers": {
    "a11y": {
      "command": "npx",
      "args": ["a11y-mcp"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

Available Tools

audit_webpage

Performs a detailed accessibility audit on a webpage.

Parameters:

  • url (required): URL of the webpage to audit

  • includeHtml (optional): Whether to include HTML snippets in the results (default: false)

  • tags (optional): Array of specific accessibility tags to check (e.g., wcag2a, wcag2aa, wcag21a, best-practice)

Example:

Use the a11y MCP server to audit example.com for accessibility issues

get_summary

Gets a summary of accessibility issues for a webpage.

Parameters:

  • url (required): URL of the webpage to audit

Example:

Give me an accessibility summary of example.com

Example Usage

Once configured, you can ask Claude to use the MCP server to perform accessibility audits:

  1. "Can you check example.com for accessibility issues?"

  2. "Audit my website at https://mywebsite.com for WCAG 2.1 AA compliance"

  3. "Give me a summary of accessibility issues on https://example.com"

  4. "Check if my local development server at http://localhost:3000 has any critical accessibility problems"

Development

To run the server locally for development:

npm start

Releasing

This project includes a release script to help with versioning and publishing to npm. The script handles version bumping, running tests, git tagging, and npm publishing.

To release a new version:

# Make sure the script is executable
chmod +x release.sh

# Release a patch version (default)
./release.sh

# Release a minor version
./release.sh --minor

# Release a major version
./release.sh --major

# Release a specific version
./release.sh --version=1.2.3

# Skip git operations
./release.sh --skip-git

# Dry run (no changes will be made)
./release.sh --dry-run

# Force release even with uncommitted changes
./release.sh --force

For more information, run:

./release.sh --help

License

MPL 2.0

Credits

This project builds atop the awesome work done by axe-core

Available Tools

2 tools
audit_webpageC

Perform an accessibility audit on a webpage

ParametersJSON Schema
NameRequiredDescriptionDefault
includeHtmlNoWhether to include HTML snippets in the results
tagsNoSpecific accessibility tags to check (e.g., wcag2a, wcag2aa, wcag21a, best-practice)
urlYesURL of the webpage to audit

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but fails to mention critical aspects like whether it requires authentication, has rate limits, returns structured data, or handles errors. This leaves significant gaps in understanding how the tool behaves in practice.

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, clear sentence with no wasted words, making it highly concise and front-loaded. Every part of the sentence directly contributes to understanding the tool's purpose, earning its place effectively.

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 the complexity of an accessibility audit tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the audit returns, how results are formatted, or any behavioral traits, leaving the agent with incomplete information to use the tool effectively in context.

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 the input schema already documents all parameters thoroughly. The description doesn't add any additional meaning or context beyond what's in the schema, such as explaining the relationship between parameters or typical use cases. This meets the baseline for high schema coverage.

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 action ('perform an accessibility audit') and the target resource ('on a webpage'), making the purpose immediately understandable. However, it doesn't differentiate from the sibling tool 'get_summary', which might be related but isn't explicitly contrasted, preventing a perfect score.

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 provides no guidance on when to use this tool versus alternatives, such as the sibling 'get_summary'. It lacks context about prerequisites, scenarios, or exclusions, leaving the agent with minimal usage direction beyond the basic purpose.

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

get_summaryC

Get a summary of accessibility issues for a webpage

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the webpage to audit

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but fails to describe key behavioral traits such as whether it performs a live scan, uses cached data, requires authentication, has rate limits, or what the output format looks like. This is inadequate for a tool with no annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero waste.

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 the lack of annotations and output schema, the description is incomplete. It does not explain what the summary includes, how it's formatted, or any behavioral context needed for effective use. For a tool with no structured data support, this leaves significant gaps in understanding.

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 schema description coverage is 100%, with the single parameter 'url' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as URL format requirements or validation rules. Baseline 3 is appropriate when the schema does the heavy lifting.

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's purpose with a specific verb ('Get') and resource ('summary of accessibility issues for a webpage'). It distinguishes from the sibling tool 'audit_webpage' by focusing on summary retrieval rather than a full audit, though the distinction could be more explicit.

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 provides no guidance on when to use this tool versus the sibling 'audit_webpage'. It lacks explicit instructions on alternatives, prerequisites, or exclusions, leaving the agent to infer usage from the tool name and description alone.

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

TDQS

B3.1/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: 'audit_webpage' performs an accessibility audit, while 'get_summary' retrieves a summary of issues, with no overlap in functionality. An agent can easily differentiate between initiating an audit and fetching results.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern ('audit_webpage', 'get_summary'), using snake_case and clear action-oriented verbs. This uniformity makes the tool set predictable and easy to understand.

Tool Count2/5

With only 2 tools, the server feels thin for the domain of web accessibility, lacking operations like detailed issue retrieval, filtering, remediation suggestions, or batch processing. This minimal set may limit agent workflows.

Completeness2/5

The tool set is severely incomplete for web accessibility auditing; it covers audit initiation and summary retrieval but misses essential functions such as getting detailed issue reports, updating audits, or handling multiple pages, leaving significant gaps for practical use.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A lightweight local MCP server that runs axe-core accessibility audits via Playwright and returns compressed, actionable results optimized for Claude's context window.
    5
    15
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server for WCAG accessibility auditing in AI coding agents, providing tools to audit HTML, files, URLs, and diffs, plus a prompt for React component auditing.
    5
    3,204
    6
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/priyankark/a11y-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server