What the agent does in the browser decides which browser MCP server you want. Playwright MCP drives pages in Chrome, Firefox, WebKit or Edge, and its README positions it for long agent loops that keep browser state. Chrome DevTools MCP works only with Chrome, but it records performance traces, runs Lighthouse and reads heap snapshots, so a slow page, a failing request or a memory leak belongs there. A coding agent with Bash and a busy context window should look at the CLI versions first, as Microsoft’s own README advises.
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| playwright-mcpmicrosoft/playwright-mcp | MCP server | 39k | yesterday | Apache-2.0 | A | — | Claude Code, Codex, Cursor, Gemini CLI, OpenCode |
| chrome-devtools-mcpChromeDevTools/chrome-devtools-mcp | MCP server | 55k | yesterday | Apache-2.0 | A | — | Claude Code |
| browser-usebrowser-use/browser-use | MCP server | 120k | today | MIT | A | — | Claude Code, Codex, Cursor, Gemini CLI, OpenCode |
Install
npx agentmods add mcp/microsoft/playwright-mcp/playwright-mcpnpx agentmods add mcp/chromedevtools/chrome-devtools-mcp/chrome-devtools-mcpnpx agentmods add mcp/browser-use/browser-use/browser-useEach name opens the mod's page: the scan, the token cost and every other way to install it.
Both read the accessibility tree, through different engines
Neither reads pixels. Playwright MCP calls its browser_snapshot “better than screenshot”, and its screenshot tool says outright that you can’t act on what it returns. Click and type take a target, which is a reference from the snapshot or a unique selector.
take_snapshot in Chrome DevTools MCP does the same thing, with a text snapshot “based on the a11y tree” that gives each element a uid. So the basic loop is the same in both: snapshot, pick an element, act.
Underneath, Chrome DevTools MCP vs Playwright MCP is Puppeteer against playwright-core. Chrome DevTools MCP automates Chrome through Puppeteer and waits for each action’s result. Playwright MCP is a thin package. Its cli.js hands the command to playwright-core, and the repository’s src/README.md says the server’s source lives in the Playwright monorepo. If you want to read how a Playwright MCP tool works, you read it there, not in microsoft/playwright-mcp.
25 default tools against a 61-tool menu, and the CLI route
Snapshots that Playwright MCP attaches to its responses are full by default, and only --snapshot-mode none stops them. Out of the box it exposes 25 tools, 24 in the core group plus browser_tabs. Seven more groups (storage, network, DevTools tracing, coordinate clicks, PDF, test assertions, config) stay off until you name them in --caps.
61 tools in 12 categories appear in the Chrome DevTools MCP reference, but the server does not load all of them. Extension, PWA, WebAuthn, WebMCP and third-party tools are off by default, and 13 of the 14 memory tools wait for --memoryDebugging. For simple tasks --slim cuts the set to three tools (navigate, evaluate, screenshot). Its design notes say that large data belongs in files and the model should get summaries, as in “LCP was 3.2s” instead of 50k lines of JSON.
On Playwright MCP vs Playwright CLI, the Playwright MCP README itself says coding agents increasingly prefer CLI plus skills because MCP loads “large tool schemas and verbose accessibility trees” into the context. playwright-cli runs through Bash, and after each command it prints a link to a snapshot file instead of the snapshot. Chrome DevTools MCP ships a chrome-devtools CLI in the same npm package, backed by a background daemon. We don’t measure token use for MCP servers yet, so the table above can’t settle this one for you.
One npx line each, different Node floors
Node.js 18 or newer is enough for Playwright MCP. In Claude Code it is one line, claude mcp add playwright npx @playwright/mcp@latest. Chrome DevTools MCP needs Node 20.19+, 22.12+ or 23+, plus a current stable Chrome. It starts Chrome only when the first tool needs a browser, not when the client connects. Both servers talk stdio by default. Playwright MCP switches to HTTP with --port, which its README suggests when a headed browser has no display, and its Docker image runs headless Chromium only.
A Claude Code plugin installs Chrome DevTools MCP together with seven skills, including memory-leak and LCP debugging. Keep those skills in step with the server. Its README warns that outdated skills can send your agent to tools or parameters that changed.
Both open a visible browser by default and keep a persistent profile on disk. Playwright MCP makes one profile per workspace, and two clients in the same workspace will fight over it unless you give one of them --isolated or its own --user-data-dir.
Using your logged-in Chrome: the extension or —autoConnect
Playwright MCP connects to running Chrome or Edge tabs through the Playwright Extension (--extension). Chrome DevTools MCP attaches with --autoConnect to Chrome 144 or newer, or with --browserUrl to Chrome started with a debugging port. Its docs give a practical reason. Some accounts refuse sign-in when the browser is driven through WebDriver, which is how the server launches Chrome by default.
Usage statistics, CrUX lookups and file access
Chrome DevTools MCP has three defaults that reach outside your machine. Google usage statistics are on (--no-usage-statistics turns them off, and so does a CI variable). Performance tools may send trace URLs to Google’s CrUX API (--no-performance-crux), so turn that off before you trace internal URLs. The server checks npm for updates. Playwright MCP’s README mentions none of these.
Both projects are blunt about permissions. Playwright MCP says it is “not a security boundary”, and its origin allow and block lists are not one either. Its core group includes browser_run_code_unsafe, which the docs call RCE-equivalent because it runs code in the server process. File access stays inside your workspace roots unless you pass --allow-unrestricted-file-access.
The Chrome DevTools MCP README warns that clients can read and modify any data in the browser. Without MCP roots its file tools stay in the OS temp directory. --no-javascript-evaluation switches off its script tools, but the docs say it is not a sandbox. Its standalone CLI, unlike the server, has unrestricted filesystem access by default.
browser-use as a browser MCP with Python code or 16 tools
Among Playwright MCP alternatives, browser-use is a Python library (3.11 or newer) with two MCP modes, and they are quite different.
Its registry entry starts --cli-mcp. That server has two tools. browser_exec runs Python in a browser-harness session whose namespace persists between calls, and browser_screenshot captures the page. Your agent writes code against the browser instead of calling one tool per click, which is the reason to choose it.
In --mcp mode there are 16 tools, one per action such as navigate, click and type. Among them, content extraction fails without OPENAI_API_KEY, and the description of retry_with_browser_use_agent calls it a last resort. Anonymized telemetry defaults to on. It is MIT-licensed; the other three are Apache-2.0.
There is also a hosted endpoint that needs a Browser Use Cloud API key. Cloud browsers cost $0.02 per browser-hour plus traffic, per the README.
Sources
microsoft/playwright-mcp at 3d49ff2
README.md · src/README.md · cli.js · package.json
ChromeDevTools/chrome-devtools-mcp at 0b37364
README.md · docs/tool-reference.md · docs/configuration.md · docs/advanced-usage.md · docs/design-principles.md · docs/cli.md · src/tools/snapshot.ts · src/tools/performance.ts · src/tools/lighthouse.ts · src/tools/memory.ts · src/bin/chrome-devtools-mcp-main.ts · package.json
browser-use/browser-use at b49a68e
server.json · browser_use/mcp/cli_mcp.py · browser_use/mcp/server.py · browser_use/config.py · pyproject.toml · README.md · LICENSE
microsoft/playwright-cli at 4bc00fb
README.md · skills/playwright-cli/SKILL.md · package.json
More comparisons
Figma MCP servers: which ones read, which ones edit
Framelink only reads a frame; Talk to Figma and Figma Console edit it. Figma's own: 6 calls/mo.
Blender MCP: the official server, mcp-for-blender and two others
Four Blender MCP add-ons share port 9876. The official one needs Blender 5.1.
GitHub MCP server, the gh CLI, or GitLab MCP
With a shell, gh plus GitHub's agent skill covers most work. The MCP server ships 45 tools on by default.
Context7 MCP alternatives, and where each one gets its docs
Context7 and Ref ask a hosted index; docs-mcp-server keeps one on your disk.
Unity MCP servers: Coplay, IvanMurzak and mcp-unity, read from the code
IvanMurzak's plugin connects to its cloud by default; Coplay sends telemetry.
UI UX Pro Max skill, Impeccable or Taste Skill
A local style database, a 62-rule detector on each edit, and a website kit with its own headless checker.