{"_id":"@a11ygenius/mcp","name":"@a11ygenius/mcp","dist-tags":{"beta":"0.1.0","latest":"0.1.0"},"versions":{"0.1.0":{"name":"@a11ygenius/mcp","version":"0.1.0","description":"A11yGenius MCP Server — run the 183-rule WCAG engine against your localhost, map findings to source files, and fix them from any AI coding tool","type":"module","bin":{"a11ygenius-mcp":"bin/index.js"},"main":"dist/server.js","engines":{"node":">=18.0.0"},"keywords":["a11ygenius","mcp","model-context-protocol","accessibility","a11y","wcag","audit","claude","cursor","copilot"],"homepage":"https://a11ygenius.com","repository":{"type":"git","url":"git+https://github.com/efpacc/Accessibility-Auditing-Tool.git","directory":"packages/mcp"},"license":"SEE LICENSE IN LICENSE","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node bin/index.js","test":"tsc && node --test src/__tests__/*.test.mjs","prepublishOnly":"npm test","verify:capture":"tsc && node scripts/verify-capture.mjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","playwright-core":"^1.49.0","zod":"^3.24.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"gitHead":"6dcb4a3e884ab8cfd0bfd181202d79f174450a7a","types":"./dist/server.d.ts","_id":"@a11ygenius/mcp@0.1.0","bugs":{"url":"https://github.com/efpacc/Accessibility-Auditing-Tool/issues"},"_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-vEnltlh0Z7RXeEWop77elwrm7XjgdC5l/6leiz3ePM655hOHaz+wmyVw8LB2YE9M3wZ7DSyvQ9ZhLPZY999LbA==","shasum":"bbde0c14b11e45b7372eff0dcc9c63ae6d2f1219","tarball":"https://registry.npmjs.org/@a11ygenius/mcp/-/mcp-0.1.0.tgz","fileCount":26,"unpackedSize":170613,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEWLLbpAgAwhYllSQF7RNm8Qk0B87p5yEK5YRomqhuykAiEA5dD/Pd+wU9ComsCUjINd0EciE2zFXXwE9caDuMiGHPc="}]},"_npmUser":{"name":"efpacc","email":"amercedes@bluebeaconcreative.com"},"directories":{},"maintainers":[{"name":"efpacc","email":"amercedes@bluebeaconcreative.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.0_1786804057815_0.610096899812594"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T14:27:37.666Z","0.1.0":"2026-08-15T14:27:37.970Z","modified":"2026-08-15T14:27:38.170Z"},"maintainers":[{"name":"efpacc","email":"amercedes@bluebeaconcreative.com"}],"description":"A11yGenius MCP Server — run the 183-rule WCAG engine against your localhost, map findings to source files, and fix them from any AI coding tool","homepage":"https://a11ygenius.com","keywords":["a11ygenius","mcp","model-context-protocol","accessibility","a11y","wcag","audit","claude","cursor","copilot"],"repository":{"type":"git","url":"git+https://github.com/efpacc/Accessibility-Auditing-Tool.git","directory":"packages/mcp"},"bugs":{"url":"https://github.com/efpacc/Accessibility-Auditing-Tool/issues"},"license":"SEE LICENSE IN LICENSE","readme":"# @a11ygenius/mcp\n\nThe [A11yGenius](https://a11ygenius.com) 183-rule WCAG engine, running where your code is.\n\nScans your **localhost**, maps findings to **your source files**, and fixes them — from Claude Code, Cursor, or any MCP client.\n\n```bash\nclaude mcp add a11ygenius --env A11YGENIUS_API_KEY=a11y_sk_... -- npx -y @a11ygenius/mcp\n```\n\nGet a key at [a11ygenius.com/settings](https://a11ygenius.com/settings) → API & MCP. Requires a Pro plan.\n\n---\n\n## Why local\n\nThere is a hosted MCP at `a11ygenius.com/api/mcp` that needs no install. It can audit any public URL — and it can never reach your dev server or read your files, because it runs in a data centre.\n\nThis package runs on your machine, so it can:\n\n- render `http://localhost:3000` in the browser you already have\n- tell you a finding is in `src/components/Hero.tsx:42`, not just \"some `<img>`\"\n- lint files on disk with no browser at all\n- click through a form and audit the error state\n\nThe rule engine stays server-side. This package captures, locates, and fixes.\n\n---\n\n## The two loops\n\n**Writing UI** — catch it before it ships:\n\n```\nget_pattern → write the component → scan_source → audit_localhost → fix\n```\n\n**Fixing an audit** — you scanned a site on a11ygenius.com, now you're in the repo:\n\n```\nlink_repo → pull_findings → locate_finding → fix → verify_finding → resolve_finding\n```\n\n---\n\n## Tools\n\n| | |\n| --- | --- |\n| **Knowledge** | `lookup_rule` `search_rules` `check_contrast` `get_pattern` |\n| **Source** | `scan_source` `scan_diff` |\n| **Live** | `audit_localhost` `audit_flow` `audit_url` `audit_html` |\n| **Specialists** | `keyboard_walk` `screen_reader_preview` `focus_indicator_check` `touch_target_check` `heading_outline` `aria_inspect` `responsive_a11y` `link_text_check` `pdf_check` |\n| **Bridge** | `link_repo` `pull_findings` `locate_finding` `get_fix` `verify_finding` `resolve_finding` |\n| **Governance** | `baseline_set` `baseline_diff` `score_trend` |\n| **Setup** | `install_a11y_skill` `account_status` |\n\nPrompts: `fix-my-audit`, `a11y-guard`, `make-this-accessible`, `wcag-review`.\n\n### What each scan tool can actually see\n\n| Tool | Sees | Blind to |\n| --- | --- | --- |\n| `scan_source` | markup on disk | anything computed — contrast, focus order, size |\n| `audit_localhost` | the fully rendered page | states that need an interaction |\n| `audit_flow` | each state after a click or keystroke | — |\n| `audit_url` | a public page | localhost |\n\n`scan_source` marks anything it can only suspect with `needsLiveScan: true` rather than guessing.\n\n---\n\n## Source locations\n\n`locate_finding` returns a file, a line, and a **confidence**:\n\n| Confidence | Meaning |\n| --- | --- |\n| `exact` | captured at render time and confirmed on disk — go straight there |\n| `component` | a filename or component-name match — verify before editing |\n| `heuristic` | grep tokens matched — a lead, not an answer |\n| `none` | not found. Say so; do not guess |\n\nExact locations come from React's dev-build debug info. **React 19 removed it**, so on React 19 you'll get `heuristic` unless you add the source-tagging plugin (see below). The confidence level is never inflated to compensate.\n\n---\n\n## `.a11ygenius/`\n\n`link_repo` creates it. Commit it.\n\n| File | What it is |\n| --- | --- |\n| `link.json` | which audit this repo is bound to |\n| `findings.json` | findings + resolved source locations, so a new session resumes mid-fix |\n| `baseline.json` | accepted debt — `baseline_diff` fails only on newer issues |\n| `suppressions.json` | dismissed findings and why |\n\n---\n\n## Configuration\n\n| Variable | Purpose |\n| --- | --- |\n| `A11YGENIUS_API_KEY` | **Required.** From Settings → API & MCP |\n| `A11YGENIUS_BROWSER_PATH` | Override the browser used for local rendering |\n| `A11YGENIUS_PROJECT_ROOT` | Override the project root (defaults to the working directory) |\n| `A11YGENIUS_API_URL` | Point at a different A11yGenius instance |\n\n**Browser:** uses your system Chrome, Edge, or Chromium via `playwright-core` — no 300MB download. Without one, `scan_source`, `audit_url`, and `audit_html` still work.\n\n---\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\nSmoke-test over stdio:\n\n```bash\nprintf '%s\\n' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' \\\n  '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}' | node bin/index.js\n```\n\n---\n\n© Blue Beacon Labs. See LICENSE.\n","readmeFilename":"README.md","_rev":"1-a3fb1f5f97f438f4fc0a1c0cfd78e9f3"}