@weaaare/mcp-virtual-screen-reader-auditor
v0.1.1
Published
MCP server for virtual screen reader accessibility auditing — headless browser-based screen reader simulation that works on any OS
Maintainers
Readme
@weaaare/mcp-virtual-screen-reader-auditor
MCP (Model Context Protocol) server for headless virtual screen reader accessibility audits. Works on any OS — no native screen reader required. Launches a real browser, injects a virtual screen reader, and navigates the live accessibility tree including dynamic/SPA content.
Can help cover up to 12 WCAG 2.2 success criteria using the same audit, findings, and reporting framework as @weaaare/mcp-voiceover-auditor.
Important: This tool does not replace a manual audit by an accessibility specialist, nor does it substitute real testing with assistive-technology users. It is a fast feedback loop that catches common issues early — a complement, never a replacement.
Tools
| Tool | Description |
| --- | --- |
| virtual_start | Start the Virtual Screen Reader on a URL or raw HTML (launches headless browser) |
| virtual_stop | Stop the Virtual Screen Reader and release resources |
| virtual_next | Move cursor to the next item in the accessibility tree |
| virtual_previous | Move cursor to the previous item in the accessibility tree |
| virtual_act | Perform default action for the current item (e.g., activate a link/button) |
| virtual_interact | Interact with the current container item |
| virtual_stop_interacting | Stop interacting with the current container item |
| virtual_press | Press a key on the focused item (e.g. Enter, Tab, ArrowDown) |
| virtual_type | Type text into the currently focused item |
| virtual_perform | Semantic navigation by element type: headings, links, landmarks, forms, figures |
| virtual_item_text | Get text of the item under the Virtual Screen Reader cursor |
| virtual_last_spoken_phrase | Get the last phrase spoken by the Virtual Screen Reader |
| virtual_spoken_phrase_log | Get full spoken phrase history for this session |
| virtual_item_text_log | Get full visited item text history for this session |
| virtual_clear_spoken_phrase_log | Clear the spoken phrase log |
| virtual_clear_item_text_log | Clear the visited item text log |
| virtual_click | Click the mouse at the current position |
| start_audit | Start a structured audit session with metadata |
| log_finding | Log violations/warnings/passes with WCAG criteria and recommendations |
| get_audit_status | Get current audit progress and finding counters |
| get_findings | Retrieve findings from current or latest session |
| end_audit | End audit session and return summary data |
| generate_report | Generate reports in Markdown, JSON, or CSV |
Getting started
Standard config works in most MCP clients:
{
"mcpServers": {
"virtual-screen-reader-auditor": {
"command": "npx",
"args": ["-y", "@weaaare/mcp-virtual-screen-reader-auditor"]
}
}
}Add to your project's .vscode/mcp.json (or user-level settings.json under "mcp"):
{
"servers": {
"virtual-screen-reader-auditor": {
"command": "npx",
"args": ["-y", "@weaaare/mcp-virtual-screen-reader-auditor"]
}
}
}Or install via the VS Code CLI:
code --add-mcp '{"name":"virtual-screen-reader-auditor","command":"npx","args":["-y","@weaaare/mcp-virtual-screen-reader-auditor"]}'Follow the MCP install guide. Add to your claude_desktop_config.json using the standard config above.
claude mcp add virtual-screen-reader-auditor npx -y @weaaare/mcp-virtual-screen-reader-auditorGo to Cursor Settings → MCP → Add new MCP Server. Use command type with npx -y @weaaare/mcp-virtual-screen-reader-auditor.
Or add to .cursor/mcp.json using the standard config above.
Follow Windsurf MCP documentation. Use the standard config above.
Add to your cline_mcp_settings.json:
{
"mcpServers": {
"virtual-screen-reader-auditor": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@weaaare/mcp-virtual-screen-reader-auditor"],
"disabled": false
}
}
}Follow the MCP Servers documentation. Add to .kiro/settings/mcp.json using the standard config above.
codex mcp add virtual-screen-reader-auditor npx "-y" "@weaaare/mcp-virtual-screen-reader-auditor"Or edit ~/.codex/config.toml:
[mcp_servers.virtual-screen-reader-auditor]
command = "npx"
args = ["-y", "@weaaare/mcp-virtual-screen-reader-auditor"]Go to Advanced settings → Extensions → Add custom extension. Use type STDIO and set the command to npx -y @weaaare/mcp-virtual-screen-reader-auditor.
Go to Settings → AI → Manage MCP Servers → + Add. Use the standard config above.
Follow the MCP install guide. Use the standard config above.
WCAG criteria covered
| SC | Name | Tools |
| --- | --- | --- |
| 1.1.1 | Non-text Content | virtual_item_text, virtual_last_spoken_phrase, log_finding |
| 1.3.1 | Info and Relationships | virtual_perform, virtual_item_text, log_finding |
| 2.1.1 | Keyboard | virtual_press, virtual_act, log_finding |
| 2.1.2 | No Keyboard Trap | virtual_press, virtual_next, log_finding |
| 2.4.1 | Bypass Blocks | virtual_perform, virtual_next, log_finding |
| 2.4.2 | Page Titled | virtual_item_text, virtual_last_spoken_phrase, log_finding |
| 2.4.3 | Focus Order | virtual_next, virtual_previous, log_finding |
| 2.4.4 | Link Purpose (In Context) | virtual_perform, virtual_item_text, log_finding |
| 2.4.6 | Headings and Labels | virtual_perform, virtual_item_text, log_finding |
| 3.3.1 | Error Identification | virtual_last_spoken_phrase, virtual_item_text, log_finding |
| 3.3.2 | Labels or Instructions | virtual_item_text, virtual_perform, log_finding |
| 4.1.2 | Name, Role, Value | virtual_last_spoken_phrase, virtual_item_text, log_finding |
Acknowledgements
- Guidepup / virtual-screen-reader — headless virtual screen reader library by Craig Morten, used under the MIT License.
- W3C — for the WCAG 2.2 guidelines, WAI-ARIA specification, and the ARIA Authoring Practices Guide. W3C content is used under the W3C Software and Document License.
- a11ysupport.io — community-driven assistive-technology support data by Michael Fairchild, available under CC BY 4.0.
License
MIT - weAAAre
