Skip to main content

accessibility-mcp-server

MCP-Server for Web Accessibility Checks (WCAG 2.1/2.2)

Gives AI agents the ability to check websites for accessibility issues, validate ARIA attributes, check color contrast ratios, and generate full accessibility reports — without any API key.

PyPI version License: MIT Python 3.10+

Features

  • WCAG 2.1 AA Compliance Checks — Automated checks for 10+ WCAG success criteria
  • Color Contrast Analyzer — Calculates contrast ratios and WCAG AA/AAA pass/fail
  • ARIA Validator — Checks ARIA roles and attributes for correctness
  • Heading Structure Analyzer — Validates heading hierarchy (H1→H2→H3...)
  • Image Alt Text Checker — Finds images missing alt attributes
  • Form Label Validator — Ensures all form inputs have accessible labels
  • Full A11y Report — Comprehensive report with accessibility score (0-100)
  • WCAG Rule Reference — Browse all WCAG 2.1 A/AA/AAA rules
  • No API Key Required — Works with any public website

Tools

Tool Description
check_url_accessibility Full WCAG 2.1 AA check for any URL
check_color_contrast Calculate contrast ratio between two colors
validate_aria Validate ARIA attributes in HTML snippet
check_heading_structure Analyze heading hierarchy on a page
check_images_alt Check all images for alt text
check_form_labels Check all form inputs for labels
generate_a11y_report Comprehensive accessibility report with score
list_wcag_rules List all WCAG 2.1 rules for a given level

Installation

pip install accessibility-mcp-server

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "accessibility": {
      "command": "accessibility-mcp-server"
    }
  }
}

Example Prompts

  • "Check https://example.com for accessibility issues"
  • "What is the contrast ratio between #333333 and #ffffff?"
  • "Generate a full accessibility report for https://mysite.com"
  • "Check if the images on https://example.com have alt text"
  • "Validate the ARIA in this HTML: <div role='buttn'>Click</div>"
  • "List all WCAG 2.1 AA rules"

WCAG Criteria Checked

Criterion Level Check
1.1.1 Non-text Content A Images without alt text
1.3.1 Info and Relationships A Heading hierarchy, landmark regions
1.4.3 Contrast (Minimum) AA Color contrast ratio calculator
2.4.1 Bypass Blocks A Skip links and landmarks
2.4.2 Page Titled A Missing or empty page titles
2.4.4 Link Purpose A Generic link text detection
3.1.1 Language of Page A Missing lang attribute
3.3.2 Labels or Instructions A Form inputs without labels
4.1.1 Parsing A Duplicate IDs
4.1.2 Name, Role, Value A ARIA validation, unlabeled buttons

Tech Stack

  • Python 3.10+ with FastMCP
  • httpx for async HTTP requests
  • BeautifulSoup4 + lxml for HTML parsing
  • WCAG formulas implemented directly (relative luminance, contrast ratio)

License

MIT — Free for personal and commercial use.


Built by AiAgentKarl | Part of the AI Agent Tools ecosystem

Release files for accessibility-mcp-server 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for accessibility-mcp-server 0.1.0
File Size Uploaded
accessibility_mcp_server-0.1.0.tar.gz 10.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for accessibility-mcp-server 0.1.0
File Interpreter ABI Platform
accessibility_mcp_server-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.4 kB

Release files / accessibility_mcp_server-0.1.0.tar.gz

Download URL accessibility_mcp_server-0.1.0.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
99d309935a1d8cb29d5f14d0610ccc208afd15cc0e3d946fa67304b4ace229a6
BLAKE2b-256 checksum
How to use checksums
ac19aeabcaea9d5297191b0f1defc8d8b8b79a976fa466167c13c42c40591d5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / accessibility_mcp_server-0.1.0-py3-none-any.whl

Download URL accessibility_mcp_server-0.1.0-py3-none-any.whl
Size 12.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
677516efd61a8130ddcf652fe50f15f6f37cfbe6dd1c444fd3bb9c767e1c00e7
BLAKE2b-256 checksum
How to use checksums
e733a470594659932d85e01b27a218b65335eeb01028ca2e065fee0a1d702db4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page