Compare
How chrome-mcp differs from Playwright MCP, Puppeteer MCP and Browser Use, and when you would pick each.
Every browser MCP server answers the same question differently: whose browser does the agent drive? That one decision decides whether you can read a page that needs a login, whether your 2FA has to be redone, and what happens when the agent goes somewhere it should not.
The short version
| chrome-mcp | Playwright MCP | Puppeteer MCP | Browser Use | |
|---|---|---|---|---|
| Browser | Your running Chrome, via an MV3 extension | Playwright-launched browser by default; an extension bridge mode exists | Puppeteer-launched Chromium | Its own Chromium (Playwright/CDP) |
| Logged-in sessions | Yes, whatever is already open | Only with a persistent profile or the bridge mode | Only with a persistent profile | Only with a persistent profile or cookies you pass in |
| Default policy | Deny-all: no domains, no mutations, no eval, no downloads until you allow them | Open | Open | Open |
| Multi-tab fan-out | batch tool, parallel or serial, per-tab serialisation | One page at a time per session | One page at a time | Agent-managed |
| Page reads | Text, markdown, HTML, accessibility snapshot with refs, snapshot diff | Accessibility snapshot, screenshots | Screenshots, eval | Vision plus DOM extraction |
| Secret handling | Password values always blanked; opt-in --redact for tokens and keys | None | None | None |
| Audit trail | history.jsonl per task: URL, verdict, duration, bytes, secrets scrubbed | None | None | Agent logs |
| Install | npx plus load-unpacked extension | npx | npx | pip install |
| Runs as | MCP server (stdio) | MCP server | MCP server | Python library and agent |
| Licence | MIT | Apache-2.0 | MIT | MIT |
Column details are accurate to the best of our knowledge at the time of writing; the other projects move fast, so check their READMEs for the current state.
Pick chrome-mcp when
- The page you need is behind a login you have already done in Chrome: a dashboard, an admin panel, a CRM, a store back office.
- You do not want credentials, cookies or session tokens anywhere near a config file.
- The agent should be able to read broadly but only act on the domains you name.
- You need to drive many tabs at once, with real concurrency and no cross-talk.
- You want an answer to "what did the agent do in my browser" after the fact.
Pick Playwright MCP when
- You are writing or debugging end-to-end tests and want the same browser the test suite uses.
- The target is public, or you are happy to script the login.
- You need Firefox or WebKit.
Pick Puppeteer MCP when
- You want the smallest possible reference implementation to fork.
Pick Browser Use when
- You want a full autonomous agent in Python rather than tools for the agent you already have.
- Vision-based navigation matters more than a structured tool surface.
What chrome-mcp does not do
- It does not launch a browser. The extension is required; without it no tool can run.
- It does not support Firefox, Safari or WebKit.
- It does not run headless. It drives a real Chrome window on a machine you own.
- It does not bypass Chrome's own security model. What the extension cannot reach (other extensions' pages,
chrome://pages), the agent cannot either.