Public Browser
The most token-efficient MCP server for Chrome automation — a Playwright MCP alternative.
- Transport
- Not stated
- Package
- —
- Registry id
- io.github.Silbercue/public-browser
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.
Lets Claude Code and Cursor drive Chrome — with your real, logged-in profile. On the same 30-test benchmark page it used 30% fewer tokens, 25% less money, 41% fewer tool calls and 40% less time than Playwright MCP at the same pass rate — two runs each, 2026-09-03, driver Claude Opus 5, raw data in the repo (Benchmarks, including where it loses). Its own tool definitions are 34% smaller since v2.10.4 (7,607 → 4,990 tokens, reproduce with node scripts/token-count.mjs). Direct CDP, a11y-tree refs, multi-tab ready — 2,360 TypeScript tests, 237 Python tests.
Built for Claude Code, Cursor, and any MCP-compatible client.
Looking for an alternative to Playwright MCP, Browser MCP, or claude-in-chrome? Public Browser talks to Chrome directly via the DevTools Protocol — no Playwright dependency, no Chrome extension bridge, no single-tab limit. One command to install, zero config. See benchmark comparison below.
Why Public Browser?
Every Chrome MCP server has the same problem: bulky responses, too few reliable refs. Screenshots return 10-30x more context payload than text trees. Selector-based refs break the second the DOM rerenders. Extension bridges (Browser MCP) get stuck on the connected tab. Playwright wrappers spin up a new browser instance for every session.
Public Browser fixes this. It talks directly to Chrome via CDP (same protocol Playwright and Puppeteer use internally), returns an accessibility-tree-based reference map, and caches it across calls so click(ref: 'e5') and type(ref: 'e7', ...) survive scrolls and DOM updates.
Benchmark rows below are April 2026, 35-test suite, Opus 4.6 unless a cell also gives a September value. Cells marked Sep come from the blind September 2026 re-run (35-test page, 30 scored, driver claude-opus-5, two runs per required server; one browser-use run) — run files public-browser-run1/2.json, playwright-mcp-run5/6.json, chrome-devtools-mcp-run3/4.json, browser-use-run6.json in test-hardest/results/. Cross-suite comparison is not valid; see Benchmarks.
| What you get | Playwright MCP | Browser MCP | claude-in-chrome | browser-use | Public Browser |
|---|---|---|---|---|---|
| Benchmark pass rate (Apr 2026: 31 scored / Sep 2026: 30 scored) | 29/31 (563s) Sep: 30/30 (468s, 493s) |
6/31, aborted Sep: not re-run |
(24-test suite only) | 21/31 (1870s) Sep: 24/30, incomplete run (2023s) |
30/31 (598s) Sep: 30/30 (281s, 296s) |
| Session tokens, whole run (Sep 2026 only) | Sep: 8.8M, 9.6M | — | — | Sep: 56.2M, incomplete run | Sep: 6.3M, 6.5M (−30%) |
| Cost per run, Opus 5 list price (Sep 2026 only) | Sep: $4.28, $4.78 | — | — | Sep: $25.25, incomplete run | Sep: $3.41, $3.35 (−25%) |
| Avg Tool-Response (Chars) | 1,448 Sep: 740, 656 |
— | — | — | 807 Sep: 1,298, 1,214 |
| P95 Tool-Response (Chars) | 8,068 Sep: 3,617, 1,587 |
— | — | — | 2,328 Sep: 6,077, 6,479 |
view_page avg (Chars) |
6,084 (browser_snapshot)Sep: 1,911, 2,269 |
— | — | — | 1,124 Sep: 2,841, 3,398 |
| Multi-tab support | Yes | No (single tab) | Yes | Partial | Yes |
| Connection | New browser | Extension bridge | Extension | Subprocess | Direct CDP (pipe or WebSocket) |
| Ref system | Playwright refs | Playwright refs | CSS selectors | Screenshots | A11y-tree refs (stable across DOM changes) |
| Drag & drop | Yes | No | Partial | No | Yes (native CDP mouse events) |
| Shadow DOM + iframe | Yes | Yes | Partial | No | Yes (with OOPIF session support) |
| Multi-step plan execution | — | — | — | — | run_plan — server-side plan executor with variables, conditions, suspend/resume |
From the project's README.