MCP Server
Accessibility testing from your IDE — Claude Code, Cursor, VS Code Copilot. Scan, generate AI fixes, and apply directly to source.
The Abilyo MCP server lets your AI editor scan accessibility issues, generate framework-aware fix alternatives, and map them back to source files in your repo. Apply happens through your editor's native file edit — no DOM theater.
Install
IDE Setup
Claude Code
Or manually:
Cursor
VS Code Copilot
Tools
| Tool | Description |
|---|---|
scan_page | Scan a URL for WCAG issues — DOM/AST-based detectors. Fast, structural. |
flow_scan | Scan a multi-page user journey (login → checkout etc). Deduplicates issues across pages. |
visual_audit | NEW — Pixel-level audit using Claude vision. Catches what DOM scanners miss: icon contrast (1.4.11), focus visibility (2.4.7), affordance mismatches (4.1.2), text-on-images (1.4.5). |
detect_framework | Detect Tailwind / MUI / Bootstrap / WordPress / Next.js / plain CSS. |
generate_ai_fix | Generate framework-aware fix alternatives. 1–3 options per issue. Supports web + native (SwiftUI / UIKit / Compose / XML / RN). |
find_source | Map DOM selector → source file in your repo. |
Usage
In your IDE chat:
"Scan localhost:3000 for accessibility issues, then fix the top 5 in my code"
"Run a flow scan on https://staging.example.com/login and walk through to checkout"
"Find the source file for
.left-1\\/2and show me the dropdown menu code"
The editor will chain: scan_page → detect_framework → generate_ai_fix → find_source → file edit.
End-to-End Example
Tool Reference
scan_page
| Param | Type | Description |
|---|---|---|
url | string (required) | URL to scan — works on localhost, staging, production |
rootSelector | string | Limit scan to a CSS selector |
viewport | "desktop" | "tablet" | "mobile" | Viewport size (default: desktop) |
Returns structured JSON with summary, framework, and issues[] (id, impact, wcag, selector, html, fix).
flow_scan
| Param | Type | Description |
|---|---|---|
startUrl | string (required) | First page in the journey |
maxPages | number | Max pages to scan (default: 10) |
autoNavigate | string[] | Optional list of URLs to walk through automatically (CI mode). Omit for interactive — opens a browser, you click through, close when done. |
Returns one consolidated report with deduplicated issues. Each issue lists which pages it appears on.
detect_framework
| Param | Type | Description |
|---|---|---|
url | string (required) | URL to inspect |
Returns: tailwind | mui | bootstrap | wordpress | nextjs | plain-css.
generate_ai_fix
| Param | Type | Description |
|---|---|---|
issue | object (required) | Issue from scan_page |
html | string (required) | Element's outerHTML (~600 chars) |
context | string | Parent outerHTML for context |
url | string | Page URL |
framework | string (required) | From detect_framework |
brandColors | string[] | Detected brand colors for brand-aligned suggestions |
Returns 1–3 alternatives:
- Color contrast → 3 options: minimal change, brand-aligned, high contrast
- Labels / ARIA → 1–2 options: concise, descriptive
- Touch targets → 1 option that increases tap area without breaking layout
- Focus visibility → 1 option matching the framework's idiom
Each alternative includes: label, attribute, value, explanation (with contrast ratio), frameworkCode (paste-ready snippet).
Powered by DeepSeek V4 Flash via OpenRouter — ~$0.0001/fix. Free for now.
visual_audit
Pixel-level accessibility audit via Claude vision. Catches issues that DOM scanners fundamentally cannot — they need to see pixels, not just markup.
| Param | Type | Description |
|---|---|---|
url | string (required) | URL to audit |
viewport | "desktop" | "tablet" | "mobile" | Viewport size (default: desktop) |
fullPage | boolean | Capture full scrolled page instead of viewport (default: false) |
brandColors | string[] | Brand hex colors so the model knows what's intentional |
What it catches:
- WCAG 1.4.11 — icon, border, focus ring, divider contrast (≥3:1 against adjacent colors)
- WCAG 2.4.7 — focus visibility (often missing or too subtle)
- WCAG 4.1.2 — affordance mismatches: text/shapes that look like buttons but aren't tagged as interactive (or vice versa)
- WCAG 1.4.5 — text rendered as images (fails screen readers, can't be resized)
- WCAG 2.5.8 — touch target spacing exceptions
- Visual hierarchy mismatches (text size suggests heading but isn't tagged)
- Color-only state differentiation (toggles, validation)
- Reading order anomalies (z-pattern layouts that don't match linear screen reader flow)
Example chain in your editor:
"Visually audit https://my-site.com on mobile, then fix the top 3 issues in my code"
The agent runs visual_audit → for each issue, runs find_source to locate the file → applies the fix.
Cost: ~$0.001/audit. Free for now while in beta.
find_source
| Param | Type | Description |
|---|---|---|
selector | string (required) | CSS selector from a scan issue |
rootDir | string | Project root (defaults to cwd) |
Searches *.tsx, *.jsx, *.ts, *.js, *.vue, *.svelte, *.html, *.php, *.astro for the selector's identifying tokens (id, classes). Returns up to 10 candidate file paths.
Why MCP > Browser Apply
| Approach | Persists? | Works offline? | Source-aware? |
|---|---|---|---|
--show mode (browser DOM) | No — gone on page reload | Yes | No |
| Impeccable-style live mode | Yes (writes to disk) | localhost only | Yes |
| Abilyo MCP | Yes (editor edits files) | Anywhere | Yes |
The editor already has the repo open. We just give it the right tools.