Cowork Qa

io.github.inSideos-designs由 GitHub 帳號 inSideos-designs 發布v0.1.1更新於 Oct 24, 2026

Goal-driven Playwright browser sessions for LLMs, with full action traces and aria-snapshots.

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

透過 Playwright 讓助理操作真實的 Chromium 瀏覽器,記錄朝既定目標執行的每個動作,並回傳結構化追蹤紀錄供檢視。

可以做什麼
以目標驅動的方式執行瀏覽器工作階段,提供五個工具:session_start 開啟分頁並回傳工作階段 id,session_act 執行 goto、click、fill、press 或 eval,session_observe 回傳目前 URL 與完整 aria 快照,session_end 關閉分頁並將追蹤紀錄寫入磁碟,qa_get_trace 回傳目標、每個步驟、最終 URL 與最終 aria 快照。每個動作都會記錄時間戳、動作後的 URL 以及頁面 aria 快照,方便統籌的模型事後判斷目標是否達成。
適用情境
適合需要讓助理操作真實瀏覽器完成明確目標,並希望留下可稽核操作紀錄的情境,而非無狀態的點擊加讀取迴圈。適用於腳本化的網頁檢查以及瀏覽工作階段的事後評估。
執行需求
以 stdio 執行的本機程序;需要 Node 20 以上版本,透過 npx 或 npm 安裝(cowork-qa-mcp)。首次安裝會經由 Playwright 的 postinstall 下載 Chromium(約 150 MB)。選用環境變數:COWORK_QA_DATA 指定追蹤紀錄輸出目錄(預設 /.cowork-qa),COWORK_QA_HEADED=1 顯示瀏覽器視窗而非以無頭模式執行。僅支援桌面端;未宣告驗證機制。
安裝前請注意
瀏覽器會操作真實頁面:click、fill、press 與 eval 可能送出表單、變更資料或觸發購買,eval 會在頁面中執行 JavaScript。追蹤紀錄(包含頁面 aria 快照與造訪過的 URL)會以 JSON 檔案寫入 COWORK_QA_DATA 目錄,請將該目錄指向你願意存放這些內容的位置。eval 不會把回傳值交給呼叫方,session_observe 呼叫也不計入追蹤紀錄的步驟數。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Cowork Qa,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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_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.

Tools

ToolWhat it does
session_startOpen a fresh tab, optional starting URL, return a session id
session_actRun one of: goto, click, fill, press, eval. Records the step.
session_observeReturn current URL + full aria-snapshot of the page
session_endClose the tab, persist the trace to disk, return the file path
qa_get_traceReturn the goal, every step, final URL, and final aria-snapshot — formatted for an LLM to read

Install

Requires Node 20+. The package is on npm — no clone needed.

bash
# Try it once, no installnpx cowork-qa-mcp
# Or install globallynpm install -g cowork-qa-mcp

The first install pulls Chromium via Playwright's postinstall (~150 MB).

Wire into your MCP-compatible client

Claude Code

bash
claude mcp add cowork-qa --scope user -- npx -y cowork-qa-mcp

To watch the browser instead of running headless:

bash
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.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "cowork-qa": {      "command": "npx",      "args": ["-y", "cowork-qa-mcp"]    }  }}

Cursor / Windsurf / other MCP clients

Any client that speaks the MCP stdio transport works. Point its server config at npx -y cowork-qa-mcp.

From source (for development)

bash
git clone https://github.com/inSideos-designs/cowork-qa-mcp.gitcd cowork-qa-mcpnpm installnpm run buildnode dist/server.js   # stdio server, expects an MCP client

MCP Registry

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.

Environment variables

VariableDefaultPurpose
COWORK_QA_HEADEDunset (headless)Set to 1 to launch Chromium with a visible window
COWORK_QA_DATA<cwd>/.cowork-qaDirectory where <session-id>.json traces are written

Usage example

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_get_trace({ session_id: "abc-123" })  → Goal: ...    Steps (7 total): ...    Final URL: ...    Final aria-snapshot: ...

Trace format

Each trace is a JSON file:

json
{  "session_id": "abc-123",  "goal": "...",  "steps": [    {      "t": 142,      "action": "click",      "args": { "target": "...", "value": null },      "url_after": "...",      "aria_after": "..."    }  ],  "final": { "url": "...", "aria": "..." },  "path": "/.../abc-123.json"}

Limitations / known quirks

  • session_observe calls don't show up in the trace's step count — only session_act calls do. The final aria-snapshot is captured at session_end.
  • eval runs the JS expression but doesn't return the value to the caller — only side effects on the page are observable.
  • One Chromium process is shared across all sessions in a server instance; each session gets its own context (cookies, etc. are isolated).
  • Selectors are passed straight to Playwright. CSS, text-selectors (button:has-text("Send")), and role= selectors all work.

License

MIT — see LICENSE.

Contributing

PRs welcome. Keep it small: this is meant to stay a thin, auditable server.

來源:README.md,提交 bdf3971

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分