
Cowork Qa
Playwright-backed browser automation for LLMs with a twist: every session starts with a stated goal, and every action (goto, click, fill, press, eval) gets logged with timestamps, post-action URLs, and aria-snapshots. When you call session_end, you get a structured JSON trace on disk that a second LLM can read via qa_get_trace to judge whether the goal was actually met. Five tools, stdio transport, runs on npx with no cloud dependency. Reach for this when you need an audit trail of what your agent did in the browser, not just real-time HTML responses. Each session gets its own Chromium context, and you can toggle headless mode with an env var to watch it work.
- tools
- 5
- transport
- STDIO
- env vars
- 2
- last updated
- May 6, 2026
Tools
5 toolsPublic tool metadata for what this MCP can expose to an agent.
session_startOpen a fresh tab, optional starting URL, return a session id
Open a fresh tab, optional starting URL, return a session id
No parameter schema in public metadata yet.
session_actRun one of: goto, click, fill, press, eval. Records the step.
Run one of: goto, click, fill, press, eval. Records the step.
No parameter schema in public metadata yet.
session_observeReturn current URL + full aria-snapshot of the page
Return current URL + full aria-snapshot of the page
No parameter schema in public metadata yet.
session_endClose the tab, persist the trace to disk, return the file path
Close the tab, persist the trace to disk, return the file path
No parameter schema in public metadata yet.
qa_get_traceReturn the goal, every step, final URL, and final aria-snapshot — formatted for an LLM to read
Return the goal, every step, final URL, and final aria-snapshot — formatted for an LLM to read
No parameter schema in public metadata yet.
Sponsors
Configuration
COWORK_QA_HEADEDSet to '1' to launch Chromium with a visible window instead of headless.
COWORK_QA_DATADirectory where session traces (<session-id>.json) are written. Defaults to <cwd>/.cowork-qa.
Readme
cowork-qa-mcp
demo
A Model Context Protocol server that gives an LLM a real Chromium browser, records every action it takes toward a stated goal, and hands back a structured trace so the LLM (or a second LLM) can decide whether the goal was actually achieved.
Built on Playwright. Five tools, one binary, no cloud dependency.
Why
Most browser-tool MCP servers are stateless — the LLM clicks, gets HTML back, repeats. There's no record of what happened, no way to grade the run after the fact, and no goal context.
cowork-qa-mcp flips that:
- Every session starts with a goal in plain English.
- Every action (
goto,click,fill,press,eval) is recorded with timestamps, the URL after, and the page's aria-snapshot. - When the session ends, a JSON trace is persisted to disk and exposed via a single
qa_get_tracecall.
The orchestrating LLM can then reason over the trace ("did this run actually fulfill the goal, or did it click the wrong button?") instead of trusting the run-time chatter.
Tools
Details
- Repository
- github.com/insideos-designs/cowork-qa-mcp
- Category
- Web & Browser Automation
- Package
cowork-qa-mcp- Transport
- STDIO
- Registry
- MCP registry, active