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.
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
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| accessibility_mcp_server-0.1.0.tar.gz | 10.8 kB | Without provenance | Details for accessibility_mcp_server-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| accessibility_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for accessibility_mcp_server-0.1.0-py3-none-any.whl |
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
|
Security for accessibility-mcp-server 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.