audit_screen_reader
Audits what a screen reader actually announces, using the browser's own accessibility tree (page.ariaSnapshot) plus element geometry. No screen reader is installed or driven; this is a static reading of the exposed tree.
How to use it
audit_screen_reader is exposed by the MCP Accessibility Scanner MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the audit_screen_reader tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install MCP Accessibility Scanner
claude mcp add mcp-accessibility-scanner -s user -- docker run -i --rm justasmonkev/mcp-accessibility-scannerOther tools in MCP Accessibility Scanner (39)
(default false): capture an annotated screenshot of the violations
Audits real keyboard focus behavior by pressing Tab (and optional Shift+Tab) with practical heuristics.
Crawls and scans multiple internal pages, then aggregates violations across the site.
Perform click on a web page element.
Close the page.
Set default operation timeout for existing tabs.
Perform drag and drop between two elements.
Simulate an external drag and drop of files or clipboard-like data onto an element, for testing drop zones that never see a drag start inside the page.
Evaluate a JavaScript expression on the page, or on a specific element when a ref is provided. The function's return value is serialized back as the result.
Fill multiple fields with one call.
Search the current page accessibility snapshot without returning the full snapshot.
Hover over element on page.
Install the configured browser engine (use when browser executable is missing).
Navigate to a URL.
Go back to the previous page.
Set default navigation timeout for existing tabs.
Save page as PDF.
Press a key on the keyboard.
Resize the browser window.
Select an option in a dropdown.
Capture accessibility snapshot of the current page (better than screenshot for analysis).
Manage browser tabs in one tool.
Take a screenshot of the current page.
Type text into editable element.
sibling links with the same name that lead to different URLs (WCAG 2.4.4)
and ref must be supplied together, or not at all; supplying one without the other is rejected.
image alt text that is a file name, e.g. IMG1234.jpg, DSC00123 (WCAG 1.1.1). Only images are checked: a link or button legitimately named after the file it downloads (logo.png) is not a defect.
(default true): also report Axe "incomplete" results
/ excludeSelectors: CSS selectors that scope the scan
the accessible name does not contain the visible label, which breaks voice control (WCAG 2.5.3). The visible label of <input type="submitbuttonreset"> is read from its value, and a web component's label is read from its open shadow root.
(default 10): cap on nodes reported per rule
controls and images exposed with no accessible name (WCAG 4.1.2)
are read from the filesystem of the machine running the server, exactly as browserfileupload does, and a relative path resolves against the server's working directory. Unlike browserfileupload this needs no file chooser to be open, so any page with a dragover handler is a valid target — treat it as
accessibility tree order (what is read) versus visual position (WCAG 1.3.2), i.e. order, flex-direction: row-reverse, absolute positioning
Performs a comprehensive accessibility scan on the current page using Axe-core.
Runs Axe scans on the same page across viewport/media/zoom variants and compares deltas against baseline.
names such as "click here", "read more", "image" that mean nothing out of context (WCAG 2.4.4)
Array of WCAG/violation tags to check
/ disableRules: Axe rule ids that narrow which rules run