The Chrome DevTools MCP server, built by Google, provides google's own MCP server for driving and inspecting a live Chrome instance — the one case where "browser automation" undersells what a server does, because automation is only one of eleven tool categories. It is officially maintained and best for Coding & Dev.
by Google
About
Google's own MCP server for driving and inspecting a live Chrome instance — the one case where "browser automation" undersells what a server does, because automation is only one of eleven tool categories. It is built on Puppeteer for the clicking and typing (with automatic waiting for action results), and on the Chrome DevTools frontend for the part nothing else offers: `performance_start_trace` / `performance_stop_trace` record a real trace and `performance_analyze_insight` returns the same actionable insights the Performance panel shows, optionally alongside CrUX field data for the same URL. There is also `lighthouse_audit`. Roughly 56 tools ship across Input automation (10), Navigation (6), Emulation (2), Performance (3), Network (2), Debugging (8, including `take_snapshot` of the accessibility tree and source-mapped console messages), Memory heap-snapshot analysis (12), Extensions (5), third-party developer tools, WebMCP and Progressive Web Apps — but several of those categories are off by default and gated behind flags: `--categoryExtensions`, `--categoryPwa`, `--memoryDebugging`, `--experimentalScreencast` (needs ffmpeg), `--experimentalVision` for coordinate-based `click_at`. Run `--slim` for a smaller set if you only want basic browsing. By default the server launches its own Chrome against a dedicated profile at `$HOME/.cache/chrome-devtools-mcp/chrome-profile`, so it starts logged in to nothing; `--autoConnect` (Chrome 144+, with remote debugging enabled at `chrome://inspect/#remote-debugging`) or `--browserUrl=http://127.0.0.1:9222` instead attach it to a browser you are already using, which is how you test signed-in flows and also how an agent inherits your real session. Network access can be fenced with `--blockedUrlPattern` / `--allowedUrlPattern` (URLPattern syntax; the allow form needs Chrome 149+). Only Google Chrome and Chrome for Testing are officially supported. Note that usage statistics are collected by default and CrUX lookups are on by default — opt out with `--no-usage-statistics` and `--no-performance-crux`.
Trust verdict
How grades are computed →Grade A (98/100, reliable) from 1 measured signal, based on repository evidence. Only one signal stands behind it, so treat the grade as provisional.
What was measured
- Repository maintenance100/100 · weight 20
The repository has been pushed to or released within the last six months. — last push 2026-07-24, last release 2026-07-14 (chrome-devtools-mcp-v1.6.0).
- Source verification100/100 · weight 25
The repository URL was confirmed to resolve against the live GitHub API and is not archived.
- Provenance90/100 · weight 10
Published and maintained by the vendor of the service it connects to, rather than by a third party.
- Listing ↔ repository match100/100 · weight 5
The listing name lines up with the linked repository ChromeDevTools/chrome-devtools-mcp.
What could not be measured
These contributed nothing to the score — not a penalty, not a zero. They are why the confidence reads the way it does.
- Live MCP handshakeunknown
No remote endpoint to handshake — this server installs and runs locally over stdio, so there is nothing to probe from the outside.
- Measured uptimeunknown
No probe history recorded for this server yet.
- Tool-schema stabilityunknown
Drift is a difference between two successive checks, and this server has none recorded.
Installation
npx -y chrome-devtools-mcp@latestchrome-devtools-mcp confirmed live on the npm registry — checked August 17, 2026.
Filed under browser automation everywhere, and that is the part of it worth the least. Clicking and typing is ten of roughly fifty-six tools, and Playwright does that job with a smaller context footprint. What only this server has is the panel side of Chrome: record a real performance trace and get back the same insights the Performance panel computes, run a Lighthouse audit, read console messages with source-mapped stack traces, and walk a heap snapshot through twelve dedicated tools. The decision that actually matters at install time is not which browser server to use — it is which browser it drives. By default it launches its own Chrome against a dedicated profile under $HOME/.cache/chrome-devtools-mcp, which is signed in to nothing; the two flags that fix that, --autoConnect and --browserUrl, are also the two ways an agent ends up holding your real logged-in session. Read that part before the tool list.
Setting up Chrome DevTools MCP
1.Add the server with its own Chrome
Node LTS and a current stable Chrome are the only requirements, and there is nothing to install ahead of time. Pinning to @latest is the README recommendation rather than an accident — the tool surface moves, and 1.7.0 was published five days before this guide was verified. Note that the browser does not start when the client connects; it starts the first time a tool needs it, so an empty tab list right after connecting is expected.
shellclaude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest2.Or paste the client config directly
The same entry works in Cursor, VS Code, Cline, Codex, Copilot CLI, Gemini CLI and Antigravity, which all take a command-plus-args block. On Windows 10, an MCP error -32000 "Connection closed" during discovery usually means npx is not resolving from inside the host process; the documented fix is to run it through cmd /c, or to give the absolute path to the npx shim.
mcp.json{ "mcpServers": { "chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] } } }3.Decide whether it drives your browser or its own
This is the real configuration decision. The default profile lives at $HOME/.cache/chrome-devtools-mcp/chrome-profile (per channel, and reused between runs — only one browser can hold it at a time, so pass --isolated for a temporary one). That profile has none of your logins, which is why testing a signed-in flow pushes people to attach to a running Chrome instead. Chrome 144+ supports --autoConnect: enable remote debugging at chrome://inspect/#remote-debugging, and the server connects to your default profile after you approve a permission dialog — with access to every open window in it.
mcp.json{ "mcpServers": { "chrome-devtools": { "command": "npx", "args": ["chrome-devtools-mcp@latest", "--autoConnect"] } } }4.Or attach over the remote debugging port
The older, sandbox-friendly path. Start Chrome yourself with a debugging port and point the server at it with --browserUrl. Chrome requires a non-default user data directory when the port is open, which is a security measure and not an inconvenience to work around: the port is unauthenticated, so any process on the machine can drive that browser for as long as it is open. Close it when you are done, and do not browse anything sensitive in that window.
shell# macOS — start Chrome with the port open /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --remote-debugging-port=9222 \ --user-data-dir=/tmp/chrome-profile-stable # then run the server against it npx chrome-devtools-mcp@latest --browser-url=http://127.0.0.1:92225.Turn on the tool categories you actually want
Several categories are off by default, so "the extension tools are missing" is a flag, not a bug. --categoryExtensions and --categoryPwa both require a pipe connection and do not work with --autoConnect, --browserUrl or --wsEndpoint. --memoryDebugging adds the twelve heap-snapshot tools, --experimentalScreencast needs ffmpeg on the server PATH, and --experimentalVision adds coordinate-based click_at, which is only useful with a model that can produce accurate coordinates from a screenshot. Going the other way, --slim trims to a basic browsing set and --categoryEmulation=false, --categoryPerformance=false or --categoryNetwork=false drop what you are not using.
shellnpx chrome-devtools-mcp@latest --memoryDebugging --categoryExtensions6.Fence the network and shrink the screenshots
Two settings worth changing before an agent runs unattended. --blockedUrlPattern and --allowedUrlPattern restrict what the browser can reach using URLPattern syntax, blocking navigations and subresources and silently detaching from targets that violate them (the allow form needs Chrome 149+). And screenshots are the fastest way to burn a context window: --screenshotFormat webp with --screenshotQuality and --screenshotMaxWidth produces images three to five times smaller than the PNG default.
shellnpx chrome-devtools-mcp@latest \ --allowedUrlPattern "https://staging.example.com/*" \ --screenshotFormat webp --screenshotMaxWidth 12007.Opt out of the telemetry if you need to
Both defaults here are on. Google collects usage statistics — tool invocation success rates, latency, environment information — unless you pass --no-usage-statistics or set CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS; it is disabled automatically when CI is set. Separately, the performance tools send trace URLs to the CrUX API to fetch real-user field data, which --no-performance-crux turns off. Opting out of Chrome browser metrics does not cover either of these.
mcp.json{ "args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics", "--no-performance-crux"] }
What it can do
Roughly fifty-six tools across eleven categories, and the split is the argument for using this server rather than a general browser one. Input automation, navigation and emulation are table stakes; performance, network, debugging and memory are the DevTools panels, and nothing else exposes them over MCP.
performance_start_trace / performance_stop_traceRecords a real Chrome performance trace around a navigation or interaction. This is the tool the README uses for its smoke test — "Check the performance of https://developers.chrome.com".
performance_analyze_insightReturns a specific insight from the recorded trace, the same analysis the Performance panel computes, optionally alongside CrUX field data for the same URL so lab and real-user numbers sit together.
lighthouse_auditRuns a Lighthouse audit from inside the agent loop, so "why is this page slow" and "fix it" happen in one conversation instead of two tools.
take_snapshotA structured text snapshot of the page rather than an image — the accessibility-tree view a model can act on deterministically, and far cheaper in context than a screenshot.
list_console_messages / get_console_messageConsole output with source-mapped stack traces, which is the difference between a frame in a minified bundle and a line in your own source.
list_network_requests / get_network_requestThe Network panel: what was requested, what came back, and the headers and timing for any one of them.
take_heapsnapshot and 11 companionsHeap analysis behind --memoryDebugging: summaries, dominators, retainers, retaining paths, duplicate strings, and compare_heapsnapshots for the before-and-after that actually finds a leak.
evaluate_scriptRuns JavaScript in the page context. The escape hatch when no named tool fits, and the one to think about before pointing this at a page you do not control.
install_extension / reload_extension / trigger_extension_actionExtension development tools, behind --categoryExtensions and a pipe connection. Reloading an unpacked extension and firing its action is otherwise a manual loop.
What people use it for
Find out why a page is slow and fix it in the same session
“Record a performance trace of https://example.com/pricing, then tell me the largest contentful paint and what is delaying it.”
The trace, the insight analysis and the source file are all reachable from one conversation. This is the workflow the server was built for, and the one nothing else on this list can do.
Debug a form that fails only in the browser
“Open the checkout page, fill the form with test data, submit it, then show me the console errors and the failing network request.”
Input automation plus console plus network in one loop. The source-mapped stack traces are what make the console output worth reading rather than a wall of minified frames.
Confirm a memory leak instead of guessing at one
“Take a heap snapshot, navigate between the two tabs ten times, take another, and compare them for retained detached nodes.”
compare_heapsnapshots with dominator and retaining-path tools is a genuinely hard manual task, and it is the reason to accept the extra tools that --memoryDebugging loads.
Which one should you use?
Three servers drive a browser and they are not interchangeable — the question is what you want out of the page.
Playwright MCP (Microsoft)
Cross-browser automation and test work. It drives the accessibility tree with a leaner tool surface, and Microsoft itself suggests the Playwright CLI with skills when the session is mostly code. Choose Chrome DevTools MCP when you want traces, Lighthouse, heap snapshots or source-mapped console output.
Playwright MCP (ExecuteAutomation)
Generating test code and running API tests alongside the browser. A community server with a different emphasis from Microsoft's, and a different project despite the shared name.
Puppeteer MCP
Nothing new. It is archived in modelcontextprotocol/servers-archived, and this server is built on Puppeteer anyway — Chrome DevTools MCP is the maintained thing that superseded it, from the same people who maintain the browser.
A hosted browser service
When the browser should not run on your machine at all. Everything here is local: the tools reach local files and internal addresses exactly as your own browser does, which is fine for debugging your own app and is the whole risk when the agent visits a page you do not control.
Every command, environment variable, and endpoint above was read from the project’s own documentation on 2026-08-15: ChromeDevTools/chrome-devtools-mcp README, Same repo — docs/troubleshooting.md, npm — chrome-devtools-mcp, Chrome for Developers — remote debugging port.
Categories
Frequently Asked Questions
Does Chrome DevTools MCP use my normal Chrome profile?
How do I make it use a browser I am already signed in to?
Is it safe to open the Chrome remote debugging port?
Why do I get a Target closed error?
Where did the extension or PWA tools go?
Does Chrome DevTools MCP send data to Google?
Does it work in WSL, or with Edge and Brave?
Can several agents share one Chrome DevTools MCP server?
What is Chrome DevTools MCP Server?
Who built Chrome DevTools MCP Server?
Is Chrome DevTools MCP Server free?
How do I install Chrome DevTools MCP Server?
What does Chrome DevTools MCP Server integrate with?
Repo Health
Local/stdio install — runs on your machine, so there is no remote endpoint to verify live. Trust signal below is from the source repo.
- Last commit
- 1mo ago
- Last release
- chrome-devtools-mcp-v1.6.0 · 2mo ago
- Install
- npm
Quick Info
- Install Type
- npm
- Author
- Categories
- 2
- Integrations
- 5
Related Servers
Everything
Reference/test server with prompts, resources, and tools. Perfect for testing MCP implementations.
Fetch
Web content fetching and conversion for efficient LLM usage. Extract readable content from any URL.
Git
Tools to read, search, and manipulate Git repositories. Full Git operations support.
Sequential Thinking MCP Server
a single structured-reasoning tool that lets a model plan, revise and branch its own chain of thought instead of answering in one shot. Published by Anthropic as part of the official modelcontextprotocol/servers monorepo (89,000+ stars, actively maintained), it exposes exactly one tool — sequential_thinking — and that tool is the whole product. Each call carries a `thought` string plus bookkeeping fields: `thoughtNumber`, `totalThoughts`, and `nextThoughtNeeded`, which the model flips to false when it is done. The interesting fields are the optional ones. `isRevision` and `revisesThought` let the model go back and correct an earlier step rather than plowing ahead on a bad assumption; `branchFromThought` and `branchId` let it fork into an alternative line of reasoning and carry both forward; `needsMoreThoughts` lets it extend past its own original estimate when a problem turns out to be deeper than it looked. In practice you never call the tool by hand. You connect the server to an MCP host and ask a question that deserves more than one pass — plan a PostgreSQL 14 to 16 migration and revise if downtime exceeds five minutes, work out why a deploy only fails in production, compare three architectures and branch when an assumption breaks. You can tell it is working when the host inspector shows repeated sequential_thinking calls with a rising `thoughtNumber` rather than a single response. Install with `npx -y @modelcontextprotocol/server-sequential-thinking` — note the hyphenated package name, which differs from both the `sequentialthinking` directory in the repo and the Docker image `mcp/sequentialthinking`, a mismatch that breaks a lot of copied configs. A Docker image is published alongside the npm package, and the README carries one-click VS Code install buttons for both transports. Set `DISABLE_THOUGHT_LOGGING=true` if you do not want every thought written to the server log.
21st.dev Magic
Create crafted UI components inspired by the best 21st.dev design engineers.
Sponsored
Better Stack
Free PlanGet alerted when your APIs, browser tests, payment pipelines, or MCP server dependencies go down. Used by 100K+ developers.
Start monitoring free →