Catalog PyPI
Back to packageRELEASE DETAILS

0.1.0

PyPI

a11y-expert-mcp

Accessibility expert MCP server — helps developers build accessible components with WAI-ARIA patterns, code review, and WCAG guidance.

a11yaccessibilitymcpmodel-context-protocolwai-ariawcag
Published7 Apr 2026
Direct dependencies1
Transitive dependenciesNot calculated

README

Version 0.1.0 documentation

A11y Expert MCP

PyPI version Python 3.11+

An accessibility expert for your AI coding assistant. This MCP (Model Context Protocol) server gives AI tools like Claude, Cursor, and Windsurf real-time access to WAI-ARIA patterns, code review, contrast checking, and WCAG guidance — so the code they write is accessible from the start.

What's Inside

🔧 Tools

ToolWhat it does
get_patternGet the full WAI-ARIA implementation pattern for any UI component — roles, states, keyboard interaction, and code examples.
review_codePaste HTML/JSX/TSX/Vue/Svelte code and get a list of accessibility issues with specific fixes and WCAG references. Detects 10+ anti-patterns including missing labels, click-on-divs, broken heading hierarchy, missing dialog roles, and more.
list_patternsSee all 33 component patterns available in the knowledge base.
check_contrastCheck any two hex colors against WCAG AA and AAA contrast requirements for both normal and large text.

📚 Knowledge Base (33 Components)

Every pattern comes from the WAI-ARIA Authoring Practices and includes roles, states, properties, keyboard interaction, and code examples.

AccordionAlertAlert DialogBreadcrumbs
ButtonsCarouselCheckboxCombobox
Dialog (Modal)DisclosureFeedGrid
HeadingsImage LabelingLandmarksLink
ListboxMenuMenu ButtonMeter
RadioSliderSlider (Multi-thumb)Spinbutton
SwitchTablesTabsToolbar
TooltipTreeviewTreegridWindow Splitter
Accessibility (General)

💬 Prompts

Pre-built workflows your AI assistant can use:

PromptWhat it does
audit-componentStep-by-step accessibility audit — checks ARIA, keyboard, focus, contrast, headings, touch targets. Provide code + optional component type.
make-accessibleRewrites inaccessible code into a fully accessible implementation with WAI-ARIA patterns and comments explaining every change.
check-form-accessibilityForm-specific audit — labels, required fields, error handling, fieldsets, autocomplete, tab order, and submit feedback.
wcag-checklistGenerates a WCAG 2.2 compliance checklist (AA or AAA) organized by principle, tailored to your page or component.
aria-guideComplete ARIA implementation guide for a component — roles, attributes, keyboard table, focus management, screen reader script, and code example.

📖 Resources

Browsable knowledge base for MCP clients:

  • a11y://patterns — Index of all 33 component patterns
  • a11y://patterns/{component} — Full pattern detail for any component

Installation

Prerequisites

  • Python 3.11+
  • uv (recommended) or pip

Option 1: Run directly with uvx (no install needed)

uvx a11y-expert-mcp

Option 2: Install with pip

pip install a11y-expert-mcp

Then run:

a11y-expert-mcp

Option 3: Run from source

git clone https://github.com/Elizabeth1979/a11y-expert-mcp.git
cd a11y-expert-mcp
uv run a11y-expert-mcp

Configuration

Claude Desktop / Claude Code

Add to your MCP config (~/.claude/config.json or Claude Desktop settings):

{
  "mcpServers": {
    "a11y": {
      "command": "uvx",
      "args": ["a11y-expert-mcp"]
    }
  }
}

Or if running from source:

{
  "mcpServers": {
    "a11y": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/a11y-expert-mcp", "a11y-expert-mcp"]
    }
  }
}

Cursor / Windsurf / Other MCP Clients

Use the same command and args — check your editor's MCP configuration docs for the exact config file location.

Usage Examples

Once connected, your AI assistant can:

Get an accessible pattern:

"How do I build an accessible tabs component?" → The assistant calls get_pattern("tabs") and gets the full WAI-ARIA pattern with keyboard interaction and code.

Review code for issues:

"Check this modal for accessibility problems" → The assistant calls review_code(code, component_type="modal") and gets specific issues with fixes.

Check color contrast:

"Does #666 on #fff pass WCAG?" → The assistant calls check_contrast("#666", "#fff") and gets AA/AAA results for normal and large text.

Generate a WCAG checklist:

"Give me a WCAG AA checklist for my checkout page" → The assistant uses the wcag-checklist prompt to generate a tailored compliance checklist.

How It Works

The server bundles 33 WAI-ARIA pattern documents as a knowledge base. When your AI assistant asks about a component, it gets the real specification — not hallucinated ARIA attributes. The review_code tool runs 10+ static checks for common anti-patterns (click handlers on divs, missing labels, broken heading hierarchy, positive tabindex, etc.) and cross-references relevant patterns.

No external API calls. No database. Everything runs locally.

Tech Stack

  • MCP SDK (FastMCP)
  • Python 3.11+
  • WAI-ARIA Authoring Practices knowledge base (bundled markdown files)

License

MIT

Author

Elli (@Elizabeth1979)

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 1

Native requirements
1 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
mcp
Environment
{
  "extras": "cli",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
mcp[cli]>=1.27.0runtime

Distribution files

2 collected
a11y_expert_mcp-0.1.0-py3-none-any.whl

bdist_wheel · 10.94 KB · Python py3

Source file
a11y_expert_mcp-0.1.0.tar.gz

sdist · 9.42 KB · Python source

Source file

Repository

PENDING
elizabeth1979/a11y-expert-mcp

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 16:17 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:785f8c12ad3db4e02d501d90b4e06ecbd495c651cb49ffb4785cf60b83feb149

Other collected versions

View all collected versions →