LabscoMCP early access ↗
tactual-devMCP SERVER

Tactual MCP

Measures how many keystrokes a screen-reader user needs to discover, reach and operate each target on a page, under an NVDA, JAWS or VoiceOver profile.

by tactual-dev ↗Automated Testing & QACommunity

LABSCO SUMMARY

Not whether the ARIA is valid — how far away the button is.

The output is a keystroke count plus the path that produces it, per target, attached to a selector, the penalties that raised the score and candidate fixes. A saved baseline and diff_results then make a fix verifiable rather than asserted. It is an announcement simulator calibrated against the W3C ARIA-AT assertions, which the project is explicit about — critical journeys still want a real screen reader.

What it is

A screen-reader navigation-cost analyzer with an MCP server built in. Conformance scanners answer whether the ARIA is correct; this answers a different question — how expensive is it for someone on NVDA, JAWS or VoiceOver to reach the checkout button. It drives a real browser through Playwright, builds a navigation graph from landmarks, headings and linear Tab, and scores every interactive target.

What you get

  • A scored analysis of one page, SARIF by default, with optional exploration of menus, dialogs, tabs and disclosures and opt-in keyboard and form probes — analyze_url
  • The step-by-step path to a single target, with the announcements a screen reader would make along the way — trace_path
  • Predicted paths checked against @guidepup/virtual-screen-reader, returning reachability and mean accuracy per strategy — validate_url
  • Site-level triage across several routes, with aggregated stats and navigation costs that repeat from page to page — analyze_pages
  • Before-and-after comparison of two runs: improvements, regressions and severity changes — diff_results
  • Ranked fix suggestions by impact, and the AT profiles available to run under — suggest_remediations, list_profiles
  • Sign-in state saved once so protected pages can be analyzed — save_auth
  • Observed calibration datasets run against saved analysis JSON, returning structured scoring signals — calibration_report

Requirements

Node.js 20 or later and npm install tactual. Playwright and the MCP SDK ship as runtime dependencies, so the installed tactual-mcp binary starts the stdio server with nothing else to install; the README's client entry resolves tactual-mcp through npm, which does not have that name. tactual-mcp --http serves http://127.0.0.1:8787/mcp instead, which the project asks you to put behind an authenticated TLS proxy. The URL-taking MCP tools accept only http: and https:, never local files, and private IP ranges are not filtered — treat the URL an agent supplies as trusted input.

Setup effort

One command — npm install tactual