{"_id":"@ali0113/accessibility-audit-mcp-server","_rev":"4-c572ab5c0c28d90d535c479eddcbee45","name":"@ali0113/accessibility-audit-mcp-server","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@ali0113/accessibility-audit-mcp-server","version":"1.0.0","keywords":["mcp","accessibility","a11y","audit"],"author":"","license":"MIT","_id":"@ali0113/accessibility-audit-mcp-server@1.0.0","maintainers":[{"name":"ali0113","email":"shekhaliul44@gmail.com"}],"dist":{"shasum":"77466debaa868d94cdd76778fbb186237061a09a","tarball":"https://registry.npmjs.org/@ali0113/accessibility-audit-mcp-server/-/accessibility-audit-mcp-server-1.0.0.tgz","fileCount":59,"integrity":"sha512-tichxj7fcTe6y1beBqC+kph/dHxXn1N0DVpFyCOaowyaP50jgA1asp5gGv2XmCNjutBiJa2qW7o/5lOskVMF8g==","signatures":[{"sig":"MEQCIHCgrfV/hKlZr6PQ1bNzovHzaw6IYq+XIavSeje++f9/AiAYBwif3R3fUzGTZSXvZjRJLAVgeC2l+Ws9kmA22/EkKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":874688},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a62ae420bb9145de60bd54c376dd86d9b4e3d8f0","scripts":{"dev":"tsx watch src/server.ts","build":"tsc","start":"node dist/server.js","test:phase1":"npm run build && node test-phase1-compiled.js","test:phase2":"tsx test-phase2-analysis.ts"},"_npmUser":{"name":"ali0113","email":"shekhaliul44@gmail.com"},"_npmVersion":"11.3.0","description":"MCP server for accessibility auditing","directories":{},"_nodeVersion":"24.2.0","dependencies":{"playwright":"^1.40.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accessibility-audit-mcp-server_1.0.0_1768040764302_0.20765143117574247","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ali0113/accessibility-audit-mcp-server","version":"1.0.1","keywords":["mcp","accessibility","a11y","audit"],"author":"","license":"MIT","_id":"@ali0113/accessibility-audit-mcp-server@1.0.1","maintainers":[{"name":"ali0113","email":"shekhaliul44@gmail.com"}],"bin":{"accessibility-audit-mcp":"bin/server.js"},"dist":{"shasum":"bbc27bf294803a45061e7aec7acbcd148647bfd6","tarball":"https://registry.npmjs.org/@ali0113/accessibility-audit-mcp-server/-/accessibility-audit-mcp-server-1.0.1.tgz","fileCount":60,"integrity":"sha512-VTuHSbgtXYWJtdvEbbbhfzG8gqws6ecc7KTkohCDAAdtJYokff+aaFTq/plEkg7vuiNpe7kpuNR6SJ53OCA4AA==","signatures":[{"sig":"MEQCIEgKHYFkBAexfa09/5E019xFdxzgCS/qvVEOHBFmnxm4AiA4R3xMEHanoMrgi+gb0rnl6R/nWu0pjVtPt5jMDh0YRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":875013},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a62ae420bb9145de60bd54c376dd86d9b4e3d8f0","scripts":{"dev":"tsx watch src/server.ts","build":"tsc","start":"node dist/server.js","test:phase1":"npm run build && node test-phase1-compiled.js","test:phase2":"tsx test-phase2-analysis.ts"},"_npmUser":{"name":"ali0113","email":"shekhaliul44@gmail.com"},"_npmVersion":"11.3.0","description":"MCP server for accessibility auditing","directories":{},"_nodeVersion":"24.2.0","dependencies":{"playwright":"^1.40.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accessibility-audit-mcp-server_1.0.1_1768041190955_0.6284961170328793","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ali0113/accessibility-audit-mcp-server","version":"1.0.2","keywords":["mcp","accessibility","a11y","audit"],"author":"","license":"MIT","_id":"@ali0113/accessibility-audit-mcp-server@1.0.2","maintainers":[{"name":"ali0113","email":"shekhaliul44@gmail.com"}],"bin":{"accessibility-audit-mcp":"bin/server.js"},"dist":{"shasum":"84c885d483ec44f708d14bbfcf5aadef574217c3","tarball":"https://registry.npmjs.org/@ali0113/accessibility-audit-mcp-server/-/accessibility-audit-mcp-server-1.0.2.tgz","fileCount":60,"integrity":"sha512-fMX1pXrKLC1OsXQDnYNRJS/0pre4Dom1Qz0nIVxnEZHqjY5eqt5Ps7kua33+ye7XCXP5sEYwbldm029d3xcC4w==","signatures":[{"sig":"MEQCIDRKdnaC8tnNpLt5Nd3d03XBlHyeBCXZ/9YtGPM7+jDUAiAf4NQE0yBBZjNXxuu2hQFt1TzdcPiodhqyNowoVWKqwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":875787},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a62ae420bb9145de60bd54c376dd86d9b4e3d8f0","scripts":{"dev":"tsx watch src/server.ts","build":"tsc","start":"node dist/server.js","test:phase1":"npm run build && node test-phase1-compiled.js","test:phase2":"tsx test-phase2-analysis.ts"},"_npmUser":{"name":"ali0113","email":"shekhaliul44@gmail.com"},"_npmVersion":"11.3.0","description":"MCP server for accessibility auditing","directories":{},"_nodeVersion":"24.2.0","dependencies":{"playwright":"^1.40.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accessibility-audit-mcp-server_1.0.2_1768041531630_0.04989405058199936","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ali0113/accessibility-audit-mcp-server","version":"1.1.0","description":"MCP server for accessibility auditing with export, filter, aggregation, and visualization tools","main":"dist/server.js","type":"module","bin":{"accessibility-audit-mcp":"bin/server.js"},"scripts":{"build":"tsc","dev":"tsx watch src/server.ts","start":"node dist/server.js","prepublishOnly":"npm run build"},"keywords":["mcp","accessibility","a11y","audit","wcag","export","csv","excel","dashboard"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/alii13/accessibility-audit.git","directory":"mcp-server"},"dependencies":{"@modelcontextprotocol/sdk":"^0.5.0","playwright":"^1.40.0","xlsx":"^0.18.5"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0","tsx":"^4.7.0"},"engines":{"node":">=18.0.0"},"_id":"@ali0113/accessibility-audit-mcp-server@1.1.0","gitHead":"a62ae420bb9145de60bd54c376dd86d9b4e3d8f0","types":"./dist/server.d.ts","bugs":{"url":"https://github.com/alii13/accessibility-audit/issues"},"homepage":"https://github.com/alii13/accessibility-audit#readme","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-3v215avOdAy9Qxuwl78FegiHZNoxi0wMt9YYWi5Q+GX3AlalHk0+oZ+g54ZoWKXjnQFtL8j8CG/8r5aPbOQbDg==","shasum":"d92f09639321b839fdda195b6ce461a1ba75175e","tarball":"https://registry.npmjs.org/@ali0113/accessibility-audit-mcp-server/-/accessibility-audit-mcp-server-1.1.0.tgz","fileCount":80,"unpackedSize":1202652,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOW1WTKSXWlMY2YDGkzWGIysC6r3D0r9gyp+3nhqp/aQIhAIJ2eDzLQ2cOX9o/gaToJ1gMei2NAi4+Gpu45WA4PP7o"}]},"_npmUser":{"name":"ali0113","email":"shekhaliul44@gmail.com"},"directories":{},"maintainers":[{"name":"ali0113","email":"shekhaliul44@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/accessibility-audit-mcp-server_1.1.0_1768042759663_0.8039097127929928"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-10T10:26:04.154Z","modified":"2026-01-10T10:59:20.053Z","1.0.0":"2026-01-10T10:26:04.502Z","1.0.1":"2026-01-10T10:33:11.138Z","1.0.2":"2026-01-10T10:38:51.818Z","1.1.0":"2026-01-10T10:59:19.851Z"},"license":"MIT","keywords":["mcp","accessibility","a11y","audit","wcag","export","csv","excel","dashboard"],"description":"MCP server for accessibility auditing with export, filter, aggregation, and visualization tools","maintainers":[{"name":"ali0113","email":"shekhaliul44@gmail.com"}],"readme":"# ♿ Accessibility MCP Server\n\nA Model Context Protocol (MCP) server that provides conversational, actionable accessibility testing. This server exposes accessibility auditing tools that can be used by AI agents and chat interfaces.\n\n## ✨ Features\n\n- **Conversational Results**: Results formatted for natural language understanding, not raw data\n- **Session Management**: Reusable authenticated sessions for testing protected pages\n- **Tag Filtering**: Filter results by specific WCAG levels (wcag2a, wcag2aa, wcag21a, etc.)\n- **Educational Focus**: Tools that explain issues in plain language with code examples\n- **Code-Level Fixes**: Actual before/after code examples, not just descriptions\n- **Progress Updates**: Streaming progress for long-running batch operations\n- **Smart Prioritization**: AI-powered issue prioritization with quick wins identification\n- **Compliance Reports**: Automated VPAT/WCAG/ADA compliance documentation\n- **Trend Tracking**: Historical data and predictions for accessibility improvements\n\n## 📋 Prerequisites\n\n- Node.js 18+ \n- Playwright browsers (installed automatically)\n\n## 🚀 Installation & Setup\n\n### Step 1: Install Dependencies\n\n```bash\ncd mcp-server\nnpm install\n```\n\n### Step 2: Install Playwright Browsers\n\n```bash\nnpx playwright install --with-deps chromium\n```\n\n### Step 3: Build the Project\n\n```bash\nnpm run build\n```\n\n### Step 4: Verify accessibility script\n\nThe `wave.min.js` file should be present in the `mcp-server` directory. This file contains the accessibility engine and is required for all audits. If it's missing, copy it from the project root:\n\n```bash\ncp ../wave.min.js ./wave.min.js\n```\n\n## 🔧 Running the MCP Server\n\n### Development Mode (with watch)\n\n```bash\nnpm run dev\n```\n\n### Production Mode\n\n```bash\nnpm start\n```\n\n## ⚙️ MCP Client Configuration\n\nAdd this server to your MCP client configuration (e.g., Claude Desktop, Cursor):\n\n### Claude Desktop Configuration\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"accessibility-audit\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/wave-accessibility-audit/mcp-server/dist/server.js\"]\n    }\n  }\n}\n```\n\n### Cursor Configuration\n\nAdd to your Cursor MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"accessibility-audit\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/wave-accessibility-audit/mcp-server/dist/server.js\"]\n    }\n  }\n}\n```\n\n**Note**: Use absolute paths in your configuration. Replace `/absolute/path/to/` with the actual path to your project.\n\n## 🛠️ Available Tools\n\n### Tier 1: Core Audit Tools\n\n#### `audit_url` - Single URL Audit\n\nTest a single URL for accessibility issues with conversational, actionable results.\n\n**Inputs:**\n- `url` (required): Full URL or relative path\n- `domain` (optional): Base domain if URL is relative\n- `tags` (optional): Array of accessibility tags to check (e.g., `[\"wcag2a\", \"wcag2aa\", \"wcag21a\", \"best-practice\"]`). If not provided, all tags are checked.\n- `waitForLoad` (optional): Wait strategy - `\"networkidle\"` (default) | `\"load\"` | `\"domcontentloaded\"`\n- `timeout` (optional): Timeout in seconds (default: 30)\n\n**Example:**\n```json\n{\n  \"url\": \"https://example.com\",\n  \"tags\": [\"wcag21aa\"],\n  \"timeout\": 45\n}\n```\n\n**Output:** Structured JSON with summary, prioritized violations, WCAG compliance breakdown, quick fix suggestions, and conversational explanation.\n\n#### `audit_multiple_urls` - Batch Audit\n\nTest multiple URLs efficiently with progress updates.\n\n**Inputs:**\n- `urls` (required): Array of URLs or comma-separated string\n- `domain` (optional): Base domain\n- `tags` (optional): Array of accessibility tags\n- `parallel` (optional): Number of parallel tests (default: 1)\n- `continueOnError` (optional): Continue if one fails (default: true)\n\n**Example:**\n```json\n{\n  \"urls\": [\"/home\", \"/about\", \"/contact\"],\n  \"domain\": \"https://example.com\",\n  \"tags\": [\"wcag2aa\"],\n  \"parallel\": 2\n}\n```\n\n**Output:** Per-URL results, aggregated summary, and progress updates (streaming).\n\n#### `audit_site` - Smart Site Audit\n\nIntelligent site-wide audit with prioritization.\n\n**Inputs:**\n- `domain` (required): Base domain\n- `tags` (optional): Array of accessibility tags. Applied to all pages.\n- `strategy` (optional): `\"critical\"` | `\"comprehensive\"` | `\"custom\"` (default: `\"comprehensive\"`)\n- `maxPages` (optional): Maximum pages to test (default: 50)\n- `priorityPaths` (optional): Array of high-priority paths to test first\n\n**Example:**\n```json\n{\n  \"domain\": \"https://example.com\",\n  \"strategy\": \"critical\",\n  \"priorityPaths\": [\"/\", \"/login\", \"/checkout\"],\n  \"tags\": [\"wcag21aa\"],\n  \"maxPages\": 20\n}\n```\n\n**Output:** Prioritized results (critical pages first), site-wide score, and trend analysis if previous audits exist.\n\n### Tier 2: Session Management\n\n#### `create_session` - Authenticated Session\n\nCreate a reusable authenticated session for testing protected pages.\n\n**Inputs:**\n- `domain` (required): Base domain\n- `username` (required): Login username\n- `password` (required): Login password\n- `loginUrl` (optional): Custom login URL (default: `{domain}/login`)\n- `loginSelectors` (optional): Custom selectors for login form:\n  - `usernameSelector` (default: `\"input[type='email'], input[name='username'], input[id='username']\"`)\n  - `passwordSelector` (default: `\"input[type='password']\"`)\n  - `submitSelector` (default: `\"button[type='submit'], input[type='submit']\"`)\n- `sessionId` (optional): Custom session identifier (auto-generated if not provided)\n\n**Example:**\n```json\n{\n  \"domain\": \"https://app.example.com\",\n  \"username\": \"user@example.com\",\n  \"password\": \"password123\",\n  \"loginUrl\": \"https://app.example.com/auth/login\"\n}\n```\n\n**Output:**\n- `sessionId`: Reusable session identifier\n- `expiresAt`: Session expiration time (ISO 8601)\n- `testUrl`: Test URL to verify session\n\n**Differentiator**: Only MCP with reusable session management for authenticated pages.\n\n#### `audit_with_session` - Authenticated Audit\n\nRun an audit using an existing authenticated session.\n\n**Inputs:**\n- `sessionId` (required): Session from `create_session`\n- `url` (required): URL to test (can be relative)\n- `domain` (optional): Base domain\n- `tags` (optional): Array of accessibility tags\n- `waitForLoad` (optional): Wait strategy (default: `\"networkidle\"`)\n- `timeout` (optional): Timeout in seconds (default: 30)\n\n**Example:**\n```json\n{\n  \"sessionId\": \"session-abc123\",\n  \"url\": \"/dashboard\",\n  \"domain\": \"https://app.example.com\",\n  \"tags\": [\"wcag21aa\"]\n}\n```\n\n**Output:** Same as `audit_url` but for authenticated pages.\n\n### Tier 3: Analysis & Reporting\n\n#### `get_accessibility_score` - Calculate Score\n\nCalculate accessibility score (0-100) with detailed breakdowns.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `weights` (optional): Custom weights for different issue types:\n  - `errors` (default: 10)\n  - `contrast` (default: 8)\n  - `alerts` (default: 5)\n  - `features` (default: 3)\n  - `structural` (default: 6)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"weights\": {\n    \"errors\": 15,\n    \"contrast\": 10\n  }\n}\n```\n\n**Output:**\n- Overall score (0-100)\n- Breakdown by category (contrast, navigation, forms, etc.)\n- WCAG level compliance (A, AA, AAA)\n- Trend if historical data available\n\n#### `prioritize_issues` - Smart Prioritization\n\nIntelligently prioritize issues, identifying quick wins and critical blockers.\n\n**Inputs:**\n- `results` (required): Audit result object\n- `criteria` (optional): `\"impact\"` | `\"wcag\"` | `\"fixability\"` | `\"user-impact\"` (default: `\"impact\"`)\n- `limit` (optional): Top N issues to return (default: 10)\n\n**Example:**\n```json\n{\n  \"results\": { /* audit result object */ },\n  \"criteria\": \"fixability\",\n  \"limit\": 5\n}\n```\n\n**Output:**\n- Prioritized list with reasoning\n- Quick wins (easy fixes with high impact)\n- Critical blockers\n\n#### `explain_issue` - Educational Tool\n\nExplain what an accessibility issue means in plain language.\n\n**Inputs:**\n- `ruleId` (required): Accessibility rule ID (e.g., `\"alt_missing\"`, `\"contrast\"`, `\"label_missing\"`)\n- `context` (optional): Additional context about the issue (HTML element, page URL, etc.)\n\n**Example:**\n```json\n{\n  \"ruleId\": \"alt_missing\",\n  \"context\": \"Image on homepage hero section\"\n}\n```\n\n**Output:**\n- Plain language explanation\n- Why it matters (user impact)\n- How to fix (with code examples)\n- WCAG reference\n- Common mistakes\n\n**Differentiator**: Educational focus - helps users learn accessibility.\n\n#### `get_quick_fixes` - Actionable Fixes\n\nGet specific fix suggestions with before/after code examples.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `format` (optional): `\"markdown\"` | `\"html\"` | `\"json\"` (default: `\"json\"`)\n- `includeCode` (optional): Include code examples (default: true)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"format\": \"markdown\",\n  \"includeCode\": true\n}\n```\n\n**Output:**\n- List of fixes with:\n  - Current code (if available)\n  - Fixed code\n  - Explanation\n  - Impact estimate\n\n**Differentiator**: Code-level fixes, not just descriptions.\n\n#### `generate_compliance_report` - Compliance Documentation\n\nGenerate compliance reports in various formats.\n\n**Inputs:**\n- `results` (required): Audit result object\n- `format` (optional): `\"VPAT\"` | `\"WCAG\"` | `\"ADA\"` | `\"Section508\"` (default: `\"WCAG\"`)\n- `level` (optional): `\"A\"` | `\"AA\"` | `\"AAA\"` (default: `\"AA\"`)\n- `includeRemediation` (optional): Include fix suggestions (default: true)\n\n**Example:**\n```json\n{\n  \"results\": { /* audit result object */ },\n  \"format\": \"VPAT\",\n  \"level\": \"AA\",\n  \"includeRemediation\": true\n}\n```\n\n**Output:**\n- Formatted compliance report\n- WCAG mapping\n- Remediation plan\n- Executive summary\n\n#### `get_wcag_compliance` - WCAG Status\n\nCheck WCAG compliance status with per-criterion breakdown.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `level` (optional): `\"A\"` | `\"AA\"` | `\"AAA\"` (default: `\"AA\"`)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"level\": \"AA\"\n}\n```\n\n**Output:**\n- Compliance status (pass/fail/partial)\n- Per-criterion breakdown\n- Missing requirements\n- Compliance percentage\n\n### Tier 4: Comparison & Tracking\n\n#### `compare_accessibility` - Before/After Comparison\n\nCompare two audits to track improvements.\n\n**Inputs:**\n- `before` (required): Previous audit result or URL\n- `after` (required): Current audit result or URL\n- `format` (optional): `\"summary\"` | `\"detailed\"` | `\"diff\"` (default: `\"summary\"`)\n\n**Example:**\n```json\n{\n  \"before\": \"https://example.com/v1\",\n  \"after\": \"https://example.com/v2\",\n  \"format\": \"detailed\"\n}\n```\n\n**Output:**\n- Issues fixed\n- Issues introduced\n- Score improvement\n- Remaining issues\n- Visual diff (if applicable)\n\n#### `track_accessibility` - Historical Tracking\n\nTrack accessibility over time with trend analysis.\n\n**Inputs:**\n- `url` (required): URL to track\n- `timeframe` (optional): `\"7d\"` | `\"30d\"` | `\"90d\"` | `\"all\"` (default: `\"30d\"`)\n- `metric` (optional): `\"score\"` | `\"issues\"` | `\"wcag-compliance\"` (default: `\"score\"`)\n\n**Example:**\n```json\n{\n  \"url\": \"https://example.com\",\n  \"timeframe\": \"90d\",\n  \"metric\": \"score\"\n}\n```\n\n**Output:**\n- Historical data\n- Trend visualization (text-based)\n- Predictions\n- Recommendations\n\n### Tier 5: Export & Data Management\n\n#### `export_to_csv` - Export to CSV\n\nExport audit results to CSV format for spreadsheet analysis, including metadata and violation rows.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `includeMetadata` (optional): Include test information and environment data (default: `true`)\n- `includeViolations` (optional): Include detailed violation rows (default: `true`)\n- `format` (optional): `\"standard\"` | `\"detailed\"` | `\"minimal\"` (default: `\"standard\"`)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"format\": \"detailed\",\n  \"includeMetadata\": true,\n  \"includeViolations\": true\n}\n```\n\n**Output:**\n- CSV content as string with metadata section and violation rows\n- Format type used\n- Total issues count\n\n**Use case**: Import into Excel, share with stakeholders, data analysis\n\n#### `export_to_excel` - Export to Excel\n\nExport audit results to Excel/XLSX format with formatting. Requires `xlsx` package.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `includeCharts` (optional): Generate charts for score trends and category breakdown (default: `false`)\n- `formatting` (optional): Apply colors, headers, and styling (default: `true`)\n\n**Example:**\n```json\n{\n  \"results\": { /* audit result object */ },\n  \"includeCharts\": true,\n  \"formatting\": true\n}\n```\n\n**Output:**\n- Excel file content (base64 encoded)\n- Format type (`xlsx`)\n- Total issues count\n\n**Use case**: Professional reports, presentations, stakeholder sharing\n\n**Note**: Requires `xlsx` package. Install with `npm install xlsx`.\n\n#### `export_to_json` - Export to JSON\n\nExport audit results as structured JSON with optional raw results.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `pretty` (optional): Pretty-print JSON (default: `true`)\n- `includeRaw` (optional): Include raw accessibility engine results (default: `false`)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"pretty\": true,\n  \"includeRaw\": false\n}\n```\n\n**Output:**\n- JSON string with audit results\n- Pretty-print status\n- Raw results inclusion status\n\n**Use case**: API integration, data processing, backup\n\n#### `export_to_html_report` - Generate HTML Report\n\nGenerate standalone HTML report with styling and optional visual charts.\n\n**Inputs:**\n- `results` (required): Audit result object or URL string\n- `template` (optional): `\"default\"` | `\"minimal\"` | `\"detailed\"` (default: `\"default\"`)\n- `includeCharts` (optional): Include visual charts (default: `true`)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"template\": \"detailed\",\n  \"includeCharts\": true\n}\n```\n\n**Output:**\n- HTML string with embedded CSS/JS\n- Template used\n- Charts inclusion status\n\n**Use case**: Web sharing, email reports, documentation\n\n### Tier 6: Filtering & Search\n\n#### `filter_issues` - Filter Issues\n\nFilter issues from audit results by various criteria (rule IDs, categories, impact levels, WCAG levels, etc.). Supports include/exclude modes.\n\n**Inputs:**\n- `results` (required): Audit result object\n- `filters` (required): Object with filter criteria:\n  - `ruleIds` (optional): Array of rule IDs to include/exclude\n  - `categories` (optional): Array of categories (error, contrast, etc.)\n  - `impactLevels` (optional): Array of impact levels (`\"critical\"`, `\"serious\"`, `\"moderate\"`, `\"minor\"`)\n  - `wcagLevels` (optional): Array of WCAG levels (`\"A\"`, `\"AA\"`, `\"AAA\"`)\n  - `minCount` (optional): Minimum occurrence count\n  - `elementTypes` (optional): Filter by HTML element types (e.g., `[\"img\", \"input\", \"button\"]`)\n- `mode` (optional): `\"include\"` | `\"exclude\"` (default: `\"include\"`)\n\n**Example:**\n```json\n{\n  \"results\": { /* audit result object */ },\n  \"filters\": {\n    \"impactLevels\": [\"critical\", \"serious\"],\n    \"wcagLevels\": [\"A\", \"AA\"]\n  },\n  \"mode\": \"include\"\n}\n```\n\n**Output:**\n- Filtered audit result object\n- Original issue count\n- Filtered issue count\n- Filters applied\n\n**Use case**: Focus on specific issue types, exclude false positives\n\n#### `search_issues` - Search Issues\n\nSearch issues by text content, selector, XPath, or description. Supports case-sensitive and case-insensitive search.\n\n**Inputs:**\n- `results` (required): Audit result object\n- `query` (required): Search query string\n- `fields` (optional): Array of fields to search (`\"description\"`, `\"element\"`, `\"xpath\"`, `\"selector\"`, `\"ruleId\"`, `\"userImpact\"`, `\"fix\"`, `\"all\"`) (default: `[\"all\"]`)\n- `caseSensitive` (optional): Case-sensitive search (default: `false`)\n\n**Example:**\n```json\n{\n  \"results\": { /* audit result object */ },\n  \"query\": \"missing alt\",\n  \"fields\": [\"description\", \"userImpact\"],\n  \"caseSensitive\": false\n}\n```\n\n**Output:**\n- Array of matching issues\n- Total matches count\n- Fields searched\n\n**Use case**: Find specific issues, locate elements\n\n### Tier 7: Aggregation & Statistics\n\n#### `aggregate_audit_results` - Aggregate Results\n\nCombine and aggregate multiple audit results. Groups issues by URL, category, rule, or none, and provides aggregated summary statistics.\n\n**Inputs:**\n- `results` (required): Array of audit result objects\n- `groupBy` (optional): `\"url\"` | `\"category\"` | `\"rule\"` | `\"none\"` (default: `\"url\"`)\n- `includeSummary` (optional): Include aggregated summary statistics (default: `true`)\n\n**Example:**\n```json\n{\n  \"results\": [\n    { /* audit result 1 */ },\n    { /* audit result 2 */ }\n  ],\n  \"groupBy\": \"category\",\n  \"includeSummary\": true\n}\n```\n\n**Output:**\n- Aggregated audit result with combined statistics\n- Grouping strategy used\n- Total results aggregated\n- Grouped issues (if applicable)\n\n**Use case**: Site-wide reports, batch analysis, trend identification\n\n#### `get_statistics` - Generate Statistics\n\nGenerate detailed statistics from audit results with breakdowns by category, impact, WCAG level, or rule ID. Supports single or multiple audit results.\n\n**Inputs:**\n- `results` (required): Audit result object or array of audit results\n- `breakdown` (optional): Array of breakdown dimensions (`\"category\"`, `\"impact\"`, `\"wcag\"`, `\"rule\"`) (default: all dimensions)\n\n**Example:**\n```json\n{\n  \"results\": [\n    { /* audit result 1 */ },\n    { /* audit result 2 */ }\n  ],\n  \"breakdown\": [\"category\", \"impact\", \"wcag\"]\n}\n```\n\n**Output:**\n- Total issues count\n- Average accessibility score\n- WCAG compliance breakdown\n- Statistics by category, impact, WCAG level, and rule ID\n- Counts, percentages, and distributions\n\n**Use case**: Dashboard data, reporting, analysis\n\n### Tier 8: Visualization & Reporting\n\n#### `generate_dashboard` - Generate Dashboard\n\nCreate a visual dashboard summary of audit results with key metrics, charts, and summaries. Supports multiple formats and optional charts.\n\n**Inputs:**\n- `results` (required): Audit result object, array of audit results, URL string, or array of URL strings\n- `format` (optional): `\"text\"` | `\"markdown\"` | `\"html\"` | `\"json\"` (default: `\"markdown\"`)\n- `includeCharts` (optional): Include ASCII/text charts (default: `true`)\n\n**Example:**\n```json\n{\n  \"results\": [\"https://example.com/page1\", \"https://example.com/page2\"],\n  \"format\": \"markdown\",\n  \"includeCharts\": true\n}\n```\n\n**Output:**\n- Formatted dashboard with key metrics, charts, and summaries\n- Format used\n- Total results processed\n\n**Use case**: Quick overview, presentations, status reports\n\n#### `generate_summary_report` - Generate Summary Report\n\nGenerate executive summary report with key findings and recommendations. Supports multiple formats and detail levels.\n\n**Inputs:**\n- `results` (required): Audit result object, array of audit results, URL string, or array of URL strings\n- `format` (optional): `\"text\"` | `\"markdown\"` | `\"html\"` (default: `\"markdown\"`)\n- `level` (optional): `\"executive\"` | `\"detailed\"` | `\"technical\"` (default: `\"executive\"`)\n\n**Example:**\n```json\n{\n  \"results\": \"https://example.com\",\n  \"format\": \"markdown\",\n  \"level\": \"executive\"\n}\n```\n\n**Output:**\n- Summary report with key findings and recommendations\n- Format used\n- Detail level used\n- Total results processed\n\n**Use case**: Stakeholder communication, documentation\n\n## 🏷️ Supported Accessibility Tags\n\nFilter results by specific WCAG levels or best practices:\n\n- `wcag2a` - WCAG 2.0 Level A\n- `wcag2aa` - WCAG 2.0 Level AA\n- `wcag2aaa` - WCAG 2.0 Level AAA\n- `wcag21a` - WCAG 2.1 Level A\n- `wcag21aa` - WCAG 2.1 Level AA (most common requirement)\n- `wcag21aaa` - WCAG 2.1 Level AAA\n- `best-practice` - Best practice recommendations\n\n**Example Usage:**\n```json\n// Only check WCAG 2.1 AA compliance\n{\n  \"url\": \"https://example.com\",\n  \"tags\": [\"wcag21aa\"]\n}\n\n// Check multiple WCAG levels\n{\n  \"url\": \"https://example.com\",\n  \"tags\": [\"wcag2a\", \"wcag2aa\", \"best-practice\"]\n}\n```\n\n## 📊 Result Format\n\nAll audit tools return structured results in the following format:\n\n```typescript\n{\n  summary: {\n    totalIssues: number\n    score: number\n    wcagCompliance: { A: number, AA: number, AAA: number }\n    byCategory: Record<string, number>\n    byImpact: Record<string, number>\n  }\n  prioritizedIssues: Array<{\n    ruleId: string\n    impact: 'critical' | 'serious' | 'moderate' | 'minor'\n    description: string\n    wcagLevel: string\n    tags: string[] // Array of tags this violation matches\n    element: string\n    xpath: string\n    fix: {\n      current: string\n      suggested: string\n      explanation: string\n    }\n    userImpact: string\n    priority: number\n  }>\n  conversationalSummary: string\n  quickWins: Array<{\n    ruleId: string\n    description: string\n    impact: string\n    fix: string\n  }>\n  criticalBlockers: Array<{\n    ruleId: string\n    description: string\n    impact: string\n  }>\n  appliedFilters?: {\n    tags?: string[]\n    originalIssueCount?: number\n  }\n}\n```\n\n## 📝 Usage Examples\n\n### Basic URL Audit\n\n```json\n{\n  \"tool\": \"audit_url\",\n  \"arguments\": {\n    \"url\": \"https://example.com\",\n    \"tags\": [\"wcag21aa\"]\n  }\n}\n```\n\n### Authenticated Audit Flow\n\n**Step 1: Create Session**\n```json\n{\n  \"tool\": \"create_session\",\n  \"arguments\": {\n    \"domain\": \"https://app.example.com\",\n    \"username\": \"user@example.com\",\n    \"password\": \"password123\"\n  }\n}\n```\n\n**Step 2: Audit Protected Page**\n```json\n{\n  \"tool\": \"audit_with_session\",\n  \"arguments\": {\n    \"sessionId\": \"<session-id-from-step-1>\",\n    \"url\": \"/dashboard\",\n    \"tags\": [\"wcag21aa\"]\n  }\n}\n```\n\n### Batch Audit with Progress\n\n```json\n{\n  \"tool\": \"audit_multiple_urls\",\n  \"arguments\": {\n    \"urls\": [\"/home\", \"/about\", \"/contact\", \"/products\"],\n    \"domain\": \"https://example.com\",\n    \"parallel\": 2,\n    \"tags\": [\"wcag2aa\"]\n  }\n}\n```\n\n### Get Quick Fixes\n\n```json\n{\n  \"tool\": \"get_quick_fixes\",\n  \"arguments\": {\n    \"results\": \"https://example.com\",\n    \"format\": \"markdown\",\n    \"includeCode\": true\n  }\n}\n```\n\n### Compare Before/After\n\n```json\n{\n  \"tool\": \"compare_accessibility\",\n  \"arguments\": {\n    \"before\": \"https://example.com/v1\",\n    \"after\": \"https://example.com/v2\",\n    \"format\": \"detailed\"\n  }\n}\n```\n\n### Generate Compliance Report\n\n```json\n{\n  \"tool\": \"generate_compliance_report\",\n  \"arguments\": {\n    \"results\": { /* audit result object */ },\n    \"format\": \"VPAT\",\n    \"level\": \"AA\",\n    \"includeRemediation\": true\n  }\n}\n```\n\n### Export to CSV\n\n```json\n{\n  \"tool\": \"export_to_csv\",\n  \"arguments\": {\n    \"results\": \"https://example.com\",\n    \"format\": \"detailed\",\n    \"includeMetadata\": true,\n    \"includeViolations\": true\n  }\n}\n```\n\n### Export to Excel\n\n```json\n{\n  \"tool\": \"export_to_excel\",\n  \"arguments\": {\n    \"results\": { /* audit result object */ },\n    \"includeCharts\": true,\n    \"formatting\": true\n  }\n}\n```\n\n### Export to JSON\n\n```json\n{\n  \"tool\": \"export_to_json\",\n  \"arguments\": {\n    \"results\": \"https://example.com\",\n    \"pretty\": true,\n    \"includeRaw\": false\n  }\n}\n```\n\n### Generate HTML Report\n\n```json\n{\n  \"tool\": \"export_to_html_report\",\n  \"arguments\": {\n    \"results\": \"https://example.com\",\n    \"template\": \"detailed\",\n    \"includeCharts\": true\n  }\n}\n```\n\n### Filter Issues\n\n```json\n{\n  \"tool\": \"filter_issues\",\n  \"arguments\": {\n    \"results\": { /* audit result object */ },\n    \"filters\": {\n      \"impactLevels\": [\"critical\", \"serious\"],\n      \"wcagLevels\": [\"A\", \"AA\"]\n    },\n    \"mode\": \"include\"\n  }\n}\n```\n\n### Search Issues\n\n```json\n{\n  \"tool\": \"search_issues\",\n  \"arguments\": {\n    \"results\": { /* audit result object */ },\n    \"query\": \"missing alt\",\n    \"fields\": [\"description\", \"userImpact\"],\n    \"caseSensitive\": false\n  }\n}\n```\n\n### Aggregate Audit Results\n\n```json\n{\n  \"tool\": \"aggregate_audit_results\",\n  \"arguments\": {\n    \"results\": [\n      { /* audit result 1 */ },\n      { /* audit result 2 */ }\n    ],\n    \"groupBy\": \"category\",\n    \"includeSummary\": true\n  }\n}\n```\n\n### Get Statistics\n\n```json\n{\n  \"tool\": \"get_statistics\",\n  \"arguments\": {\n    \"results\": [\n      { /* audit result 1 */ },\n      { /* audit result 2 */ }\n    ],\n    \"breakdown\": [\"category\", \"impact\", \"wcag\"]\n  }\n}\n```\n\n### Generate Dashboard\n\n```json\n{\n  \"tool\": \"generate_dashboard\",\n  \"arguments\": {\n    \"results\": [\"https://example.com/page1\", \"https://example.com/page2\"],\n    \"format\": \"markdown\",\n    \"includeCharts\": true\n  }\n}\n```\n\n### Generate Summary Report\n\n```json\n{\n  \"tool\": \"generate_summary_report\",\n  \"arguments\": {\n    \"results\": \"https://example.com\",\n    \"format\": \"markdown\",\n    \"level\": \"executive\"\n  }\n}\n```\n\n## 🐛 Error Handling\n\nThe server includes comprehensive error handling:\n\n- **Graceful degradation**: Partial results on batch failures\n- **Clear error messages**: Human-readable error descriptions\n- **Retry logic**: Automatic retries for transient failures\n- **Validation**: Input validation with helpful error messages\n\nCommon error scenarios:\n- Invalid URLs or unreachable pages\n- Session expiration (for authenticated audits)\n- Timeout errors (configurable)\n- Invalid tag combinations\n\n## 🏗️ Project Structure\n\n```\nmcp-server/\n├── src/\n│   ├── server.ts           # Main MCP server entry point\n│   ├── tools/              # Tool implementations\n│   │   ├── audit.ts       # Core audit tools\n│   │   ├── session.ts     # Session management\n│   │   ├── analysis.ts    # Analysis & reporting\n│   │   ├── comparison.ts  # Comparison tools\n│   │   ├── export.ts      # Export tools (CSV, Excel, JSON, HTML)\n│   │   ├── filter.ts      # Filtering and search tools\n│   │   ├── aggregate.ts   # Aggregation and statistics tools\n│   │   └── visualize.ts   # Visualization and dashboard tools\n│   ├── core/              # Core accessibility functionality\n│   │   ├── accessibility-runner.ts      # Accessibility execution\n│   │   ├── session-manager.ts  # Session handling\n│   │   ├── result-processor.ts # Result formatting\n│   │   ├── error-handler.ts    # Error handling\n│   │   └── progress-streamer.ts # Progress updates\n│   └── types/             # TypeScript types\n├── dist/                  # Compiled JavaScript\n├── wave.min.js           # Accessibility engine script (required)\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n## 🔨 Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Development Mode (with watch)\n\n```bash\nnpm run dev\n```\n\n### TypeScript Configuration\n\nThe project uses TypeScript with ES modules. See `tsconfig.json` for configuration details.\n\n## 🔑 Key Differentiators\n\n1. **Conversational Interface**: Results formatted for natural language understanding\n2. **Session Management**: Only MCP with reusable authenticated sessions\n3. **Educational**: `explain_issue` teaches accessibility concepts\n4. **Code-Level Fixes**: Actual code examples, not just descriptions\n5. **Progress Updates**: Streaming progress for long operations\n6. **Smart Prioritization**: AI-powered issue prioritization\n7. **Compliance Reports**: Automated VPAT/WCAG documentation\n8. **Tag Filtering**: Filter by specific WCAG levels to reduce noise\n\n## 📄 License\n\nMIT License - feel free to use in your projects!\n\n## 🤝 Contributing\n\nContributions are welcome! Please ensure all code follows the existing style and includes appropriate tests.\n\n## 🆘 Support\n\nFor issues, questions, or contributions, please open an issue on the repository.\n\n---\n\n**Happy accessibility testing! ♿✨**\n","readmeFilename":"README.md","homepage":"https://github.com/alii13/accessibility-audit#readme","repository":{"type":"git","url":"git+https://github.com/alii13/accessibility-audit.git","directory":"mcp-server"},"bugs":{"url":"https://github.com/alii13/accessibility-audit/issues"}}