Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"cowork-qa": {
"args": [
"-y",
"cowork-qa-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Goal-driven Playwright browser sessions for LLMs, with full action traces and aria-snapshots.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'cowork-qa-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked cowork-qa-mcp against OSV.dev.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationBe the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in browser
Browser automation with Puppeteer for web scraping and testing
Multi-engine MCP server, CLI, and local daemon for agent web search and content retrieval — skill-guided workflows, no API keys.
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
The Apify MCP server enables your AI agents to extract data from social media, search engines, maps, e-commerce sites, or any other website using thousands of ready-made scrapers, crawlers, and automation tools available on the Apify Store.
MCP Security Weekly
Get CVE alerts and security updates for io.github.inSideos-designs/cowork-qa and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.

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.
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:
goto, click, fill, press, eval) is recorded with timestamps, the URL after, and the page's aria-snapshot.qa_get_trace call.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.
| Tool | What it does |
|---|---|
session_start | Open a fresh tab, optional starting URL, return a session id |
session_act | Run one of: goto, click, fill, press, eval. Records the step. |
session_observe | Return current URL + full aria-snapshot of the page |
session_end | Close the tab, persist the trace to disk, return the file path |
qa_get_trace | Return the goal, every step, final URL, and final aria-snapshot — formatted for an LLM to read |
Requires Node 20+. The package is on npm — no clone needed.
# Try it once, no install
npx cowork-qa-mcp
# Or install globally
npm install -g cowork-qa-mcp
The first install pulls Chromium via Playwright's postinstall (~150 MB).
claude mcp add cowork-qa --scope user -- npx -y cowork-qa-mcp
To watch the browser instead of running headless:
claude mcp add cowork-qa --scope user \
-e COWORK_QA_HEADED=1 \
-- npx -y cowork-qa-mcp
Verify with /mcp inside a fresh claude session — you should see cowork-qa ✓ connected and 5 tools.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"cowork-qa": {
"command": "npx",
"args": ["-y", "cowork-qa-mcp"]
}
}
}
Any client that speaks the MCP stdio transport works. Point its server config at npx -y cowork-qa-mcp.
git clone https://github.com/inSideos-designs/cowork-qa-mcp.git
cd cowork-qa-mcp
npm install
npm run build
node dist/server.js # stdio server, expects an MCP client
This server is also published on the official MCP Server Registry as io.github.inSideos-designs/cowork-qa — clients that auto-discover from the registry will find it without any manual config.
| Variable | Default | Purpose |
|---|---|---|
COWORK_QA_HEADED | unset (headless) | Set to 1 to launch Chromium with a visible window |
COWORK_QA_DATA | <cwd>/.cowork-qa | Directory where <session-id>.json traces are written |
A typical end-to-end loop the orchestrating LLM runs:
session_start({ goal: "find the cheapest 14\" MacBook Pro on apple.com",
url: "https://www.apple.com/shop/buy-mac/macbook-pro" })
→ { session_id: "abc-123" }
session_observe({ session_id: "abc-123" })
→ URL + aria-snapshot
session_act({ session_id: "abc-123", action: "click",
target: "button:has-text('Continue')" })
# ... more acts / observes ...
session_end({ session_id: "abc-123" })
→ { steps: 7, trace_path: "~/.cowork-qa/abc-123.json" }
qa_ge
... [View full README on GitHub](https://github.com/insideos-designs/cowork-qa-mcp#readme)