MCP server

Chrome DevTools MCP

MCP server published on npm as chrome-devtools-mcp. Transports: stdio. Maintained in ChromeDevTools/chrome-devtools-mcp.

Checked 2026-10-31

Install

Claude Code
claude mcp add chrome-devtools-mcp -- npx -y chrome-devtools-mcp

Commands come from the project's own docs or registry entry. Check them against the source before you run them.

Loading poll...

Chrome DevTools MCP is Google's MCP server for letting a coding agent debug and measure web pages in a real Chrome browser. It can navigate and click, record performance traces, read console and network logs, run Lighthouse audits, take screenshots and capture heap snapshots. It is Apache-2.0 and runs with npx -y chrome-devtools-mcp@latest. We checked the README and docs on 31 October 2026.

Quick facts

Maintainer

Chrome DevTools team (ChromeDevTools/chrome-devtools-mcp)

License

Apache-2.0

Latest release we saw

v1.12.0, published 22 Oct 2026

Last push we saw

30 Oct 2026

Run

npx -y chrome-devtools-mcp@latest

Requires

Current LTS Node.js, current stable Chrome, npm

Browser support

Google Chrome and Chrome for Testing officially; others "may work"

Transport

stdio (client launches it)

Extras

A chrome-devtools CLI and a set of skills in the same package

Price

Free

The server starts Chrome only when the client first uses a tool that needs a browser. Connecting alone does not open one.

What it lets an agent do

Where a browser-automation server clicks through flows, this one gives the agent the same instruments a front-end developer opens DevTools for. The tool reference groups them like this:

Group

Tools

Input automation

click, drag, fill, fill_form, handle_dialog, hover, press_key, type_text, upload_file, click_at (vision, opt-in)

Navigation

close_page, list_pages, navigate_page, new_page, select_page, wait_for

Emulation

emulate, resize_page

Performance

performance_start_trace, performance_stop_trace, performance_analyze_insight

Network

list_network_requests, get_network_request

Debugging

evaluate_script, list_console_messages, get_console_message, get_css_styles, lighthouse_audit, take_screenshot, take_snapshot, screencast_start, screencast_stop

Memory

take_heapsnapshot, compare_heapsnapshots, analyze_heapsnapshot_contexts, and several get_heapsnapshot_* tools

Memory tools are behind a flag (--memory-debugging), and coordinate-based tools such as click_at need --experimental-vision.

The README's suggested first prompt shows the intent:

Check the performance of https://developers.chrome.com

Your client should open the browser and record a performance trace.

Skills that ship with it

The package includes agent skills that teach the model how to use the tools:

Skill

Use it to

chrome-devtools

Debug and automate pages with the MCP tools

chrome-devtools-cli

Run the CLI and write shell scripts with it

a11y-debugging

Audit and fix accessibility issues

cookie-debugging

Debug cookies, sessions and authentication

debug-optimize-lcp

Debug and improve Largest Contentful Paint

memory-leak-debugging

Find and fix memory leaks

troubleshooting

Fix connection problems between MCP and Chrome

The README warns that skills describe the tools of a specific version, so update them whenever you update the server or CLI. Outdated skills can tell the agent to use tools or parameters that changed. See our skills guide for where to put them.

Install it in each agent

The standard config:

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

Claude Code

From the project's client guide:

claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest

Or install the plugin, which brings the server and all the skills:

/plugin marketplace add ChromeDevTools/chrome-devtools-mcp
/plugin install chrome-devtools-mcp@chrome-devtools-plugins

Cursor

Use the install button in the guide, or Cursor Settings, MCP, New MCP Server, with the standard config above.

Codex

codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest

On Windows the guide suggests wrapping with cmd /c and raising the startup timeout in .codex/config.toml, since npx can be slow to start.

Gemini CLI

gemini mcp add chrome-devtools npx chrome-devtools-mcp@latest

Or install the extension with automatic updates:

gemini extensions install --auto-update https://github.com/ChromeDevTools/chrome-devtools-mcp

To add it at user scope: gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latest. The project's README points to Gemini CLI's browser agent as a reference implementation for building a browser subagent.

VS Code and Copilot

code --add-mcp '{"name":"io.github.ChromeDevTools/chrome-devtools-mcp","command":"npx","args":["-y","chrome-devtools-mcp"],"env":{}}'

Or run Chat: Install Plugin From Source and enter ChromeDevTools/chrome-devtools-mcp.

Compatibility at a glance

Agent

Route

Claude Code

claude mcp add, or the plugin

Cursor

Install button or mcp.json

Codex

codex mcp add

Gemini CLI

gemini mcp add, or the extension

VS Code with Copilot

code --add-mcp, or plugin from source

Configuration worth knowing

The configuration guide lists many parameters. Useful ones:

Option

What it does

--headless

Run without a window

--isolated

Use a temporary profile instead of the default

--slim

Expose a reduced tool set for basic browser tasks

--channel

Chrome channel: stable (default), beta, dev, canary

--viewport 1280x720

Starting viewport

--proxy-server

Proxy for the launched Chrome

--accept-insecure-certs

Ignore certificate errors; the guide says to use with caution

--blocked-url-pattern, --allowed-url-pattern

Restrict the browser's network access by URL pattern (the allow list needs Chrome 149 or newer)

--screenshot-format, --screenshot-max-width

Shrink screenshots to save context

--no-usage-statistics

Opt out of Google's usage statistics

--no-performance-crux

Do not send trace URLs to the CrUX API

--log-file

Write debug logs for bug reports

Advanced usage covers concurrent sessions, persistent user data directories, connecting to an already running Chrome and debugging on Android.

Privacy, data and safety

Read these before you point it at anything private. They come from the project's own README.

  • The agent can see and change everything in that browser. The README says the server exposes the content of the browser instance to MCP clients, allowing them to inspect, debug and modify any data in the browser or DevTools. Avoid sharing sensitive or personal information you don't want the client to have.
  • Usage statistics are on by default. Google collects tool invocation success rates, latency and environment information. Opt out with --no-usage-statistics. The statistics are independent of Chrome's own, so opting out of one does not opt you out of the other. Collection is off if CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS or CI is set.
  • CrUX lookups. Performance tools may send trace URLs to the Chrome User Experience Report API to pull field data. Disable with --no-performance-crux.
  • Update checks. The server checks the npm registry for updates and logs a notice. Set CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS to stop it.
  • Script evaluation. evaluate_script runs JavaScript in the page. The configuration guide notes that experimental DevTools automation exposes the DevTools UI, including a console that can evaluate JavaScript in the inspected page, and that a "no JavaScript evaluation" flag does not restrict that. Leave experimental flags off.
  • Locking down the config. The guide has a section on keeping the configuration file out of an agent's reach.
  • Pin a version. @latest runs the newest published package each time.

The same cautions that apply to any browser agent apply here: logged-in sessions are reachable, and web pages can carry instructions aimed at the model. Use a fresh profile (--isolated) for public sites.

Connect to a Chrome you already have open

By default the server launches its own Chrome. The configuration guide also lets it attach to a running one, with --browser-url (for example the remote-debugging address of a Chrome you started) or a WebSocket endpoint. That is useful when you need your logged-in state or a specific profile, and it is the riskiest mode: the agent is now inside a browser that holds your real sessions. Use a separate Chrome profile for it, and keep the debugging port bound to localhost.

The config file, and why the agent should not be able to write it

The server can read a configuration file. The guide lists security-sensitive options that can live in it, such as the Chrome executable path, extra Chrome arguments and the allowed and blocked URL patterns. It then warns that if an agent can create or modify that file, it can change those settings and bypass restrictions, so the file and its parent directory must not be writable by the agent. Some changes apply live (future requests and navigations are restricted), but targets already open on a newly blocked URL stay attached, and options that launch or connect to the browser need a restart.

In practice: put the config somewhere your agent's file tools cannot write, and deny edits to it in your permission rules.

A first session, step by step

  1. Check node --version and that Chrome is current.
  2. Add the server with the command for your agent.
  3. Restart the session and list tools (/mcp in Claude Code and Codex).
  4. Run the README's check: ask for the performance of a public page and watch for a trace.
  5. Add --no-usage-statistics if you do not want to share statistics.
  6. Add --headless --isolated for repeatable runs.
  7. Try --slim if the full tool list is too heavy for your context.

A repeatable performance check

A single trace is a snapshot, and one noisy run can send you chasing a problem that is not there. A short protocol makes the agent's findings trustworthy. Use it whenever you ask for a performance review.

  1. Fix the conditions. Use --isolated and --headless, the same viewport and the same URL each time, so the browser starts from the same state. Note whether the cache was warm or cold.
  2. Take a baseline first. Ask the agent to record the page before you change anything, and to report the numbers it saw for the main loading and layout measures. Save the result in a file next to the code.
  3. Ask for causes, not only numbers. A trace shows what blocked rendering, which resources were large and which scripts held the main thread. Ask the agent to name the three biggest contributors and quote the evidence from the trace.
  4. Change one thing. Apply a single fix, such as deferring a script or sizing an image.
  5. Measure again, under the same conditions, and compare with the baseline.
  6. Repeat the measurement three times before you believe a small difference. Page timing varies from run to run.

A prompt that follows this protocol:

Record a performance trace of http://localhost:3000/ with a cold cache and
report the main loading and layout metrics. Name the three biggest causes of
delay with evidence from the trace. Do not change any code yet. Save the
numbers to perf-baseline.md.

Then, after your fix:

Record the same trace again under the same conditions, compare with
perf-baseline.md, and say whether the change helped. If the difference is
small, run it twice more before you conclude anything.

The last sentence matters. Without it, models tend to report a small change as an improvement. Lab measurements also differ from what real users see, so treat the trace as a way to find causes and use field data, which the server can pull from the CrUX service unless you disable it, to judge the result.

Debugging a broken page, in order

When the problem is a bug, not speed, a fixed order saves tokens.

Step

Ask for

Why

1

The console errors on page load

Most breakage announces itself

2

Failed network requests, with status codes

Finds missing files and blocked calls

3

A screenshot of the broken state

Confirms you and the agent see the same thing

4

The DOM or style of the one broken element

Narrows the cause before any edit

5

A proposed fix, with the line it changes

Keeps the change small and reviewable

6

A rerun of steps 1 to 3 after the fix

Proves the symptom is gone

Do not let the agent edit before step 4. A model that sees an error will often guess a fix from the message alone, and a guess that happens to silence the error can leave the real fault in place.

Keeping screenshots and traces from filling your context

Traces and screenshots are the biggest items an agent can pull into a session. The configuration options above help: --screenshot-format and --screenshot-max-width shrink images, and --slim trims the tool list. Beyond those:

  • Ask for a summary of a trace, not the raw data, and say how many items you want.
  • Ask for one element's screenshot instead of the full page where you can.
  • Start a fresh session after a long investigation, with the findings pasted in from your notes file.
  • Use --log-file only while debugging the server itself, since logs can contain page content.

When the agent and the browser disagree

Some failures are not the page's fault. A site may behave differently in a headless, isolated browser than in your daily one, because of missing extensions, no login, a different locale or a blocked cookie. If the agent reports something you cannot reproduce, check three things before assuming it is wrong: the profile (isolated or yours), the viewport and the Chrome channel. A page that serves a consent banner to new visitors will look different to a clean profile every time, which is correct behaviour and worth knowing before you file a bug.

Real tasks with copy-ready prompts

Performance check

Open https://localhost:3000, record a performance trace of the page
load, and summarise the three biggest issues with the Largest
Contentful Paint. Use the insight tools for details.

Console and network triage

Load /checkout, then list console errors and any failed network
requests. For the first failed request show the status and headers.

Accessibility pass

Run a Lighthouse audit on /pricing, report the accessibility score and
list each failing audit with the element it applies to.

Responsive check

Emulate a phone viewport and a slow network, reload the homepage and
take a screenshot. Tell me what overflows.

Memory leak

Take a heap snapshot, open and close the modal 20 times, take another,
and compare them. Report object classes that grew the most.

For a flow-level QA pass, add Playwright MCP. Our browser QA recipe combines them.

Limits and known issues

  • Chrome only, officially. Other Chromium browsers may work; Firefox and Safari are out.
  • Node and Chrome versions. You need a current LTS Node and a current stable Chrome. The README says Google commits to fixes for the latest Extended Stable Chrome.
  • Startup time. npx can be slow on first run, especially on Windows. The guide shows a longer startup timeout.
  • Context cost. The full tool set is large, and screenshots add up. Use --slim and the screenshot-size options.
  • Skills drift. Skills are version-specific.
  • Fast release cadence. v1.12.0 was published on 22 October 2026. Expect changes.
  • Telemetry by default. Opt-out, not opt-in.

Alternatives

Option

Choose it when

Playwright MCP

You need cross-browser flows and test generation

Puppeteer MCP

You want a minimal Puppeteer wrapper; the reference server is archived, so check what is current

Browserbase MCP

You want a hosted browser

The chrome-devtools CLI

You prefer shell commands over MCP tools

Fetch MCP

You only need page text

Which agents it works best with

All five covered here have a documented route. Claude Code and Gemini CLI add a plugin or extension that carries the skills, which makes the tools easier for the model to use well. The project also points to Gemini CLI's browser agent as the reference for embedding a browser subagent in a product.

Our take

We did not run this server for this page; the notes are from the README and docs.

Pick it when the question is "why is this page slow or broken in Chrome". Traces, Lighthouse, heap snapshots and network detail are what a developer would open DevTools for, and giving an agent those tools closes the loop on performance work in a way that screenshots cannot.

Pick Playwright MCP when the question is "does this flow work". They overlap on clicking and screenshots. Many front-end setups run both.

The privacy defaults are the thing to read twice. Usage statistics on by default and CrUX lookups are documented, easy to switch off, and still worth deciding on purpose before you point it at an internal tool.

Frequently asked questions

What does Chrome DevTools MCP do? It lets an agent control and inspect a live Chrome.

How do I install it? npx -y chrome-devtools-mcp@latest as a stdio server.

Does it collect data? Yes by default; opt out with the flags above.

Which browsers does it support? Chrome and Chrome for Testing officially.

How is it different from Playwright MCP? DevTools-level debugging and performance vs cross-browser flows.

*Product names are used descriptively. We are not affiliated with Google.*

Works with

Tried it with one of these? Vote below: works for me, or not.

Questions

What does Chrome DevTools MCP do?

It lets a coding agent control and inspect a live Chrome browser: navigate, click, record performance traces, read the console and network, run Lighthouse and take screenshots and heap snapshots.

How do I install it?

Add npx -y chrome-devtools-mcp@latest as a stdio server. In Claude Code: claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest.

Does it collect data?

Google collects usage statistics by default, and performance tools may send trace URLs to the CrUX API. You can opt out with --no-usage-statistics and --no-performance-crux.

Which browsers does it support?

Google Chrome and Chrome for Testing officially. Other Chromium browsers may work but are not guaranteed.

How is it different from Playwright MCP?

Chrome DevTools MCP focuses on DevTools-level debugging and performance in Chrome. Playwright MCP focuses on automating flows across several browsers.

Loading poll...

Reviews

Loading reviews…

Write a review

Your rating

Up to 1000 characters. Stars alone are enough.

Sources

  1. github.com/ChromeDevTools/chrome-devtools-mcp
  2. raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/README.md
  3. raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/client-configurations.md
  4. raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/configuration.md
  5. raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/tool-reference.md

Similar

  • browser-use MCP

    Browser Use is an open-source Python library for AI browser agents, and our entry covers its MCP route.

    • MCP server
    • Official

    browser-use · 119,597 stars

  • Scrapling MCP Server

    Scrapling is a Python web scraping framework from D4Vinci, described on GitHub as handling everything from a single request to a full-scale crawl, and this entry is its MCP server.

    • MCP server

    D4Vinci · 90,477 stars

  • Netdata MCP

    Netdata is an observability platform, and this entry is its hosted MCP endpoint at app.netdata.cloud, reached over streamable HTTP.

    • MCP server

    netdata · 81,227 stars

  • claude-flow MCP

    Claude Flow is published on npm as claude-flow, and its repository now sits at ruvnet/ruflo, which the GitHub description calls the original agent harness for deploying multi-agent swarms and coordinating autonomous workflows.

    • MCP server

    ruvnet · 80,298 stars

  • Context7 MCP

    Context7 is an MCP server from Upstash that serves up-to-date library documentation to coding agents, so the model reads current docs instead of guessing from training data.

    • MCP server

    upstash · 63,974 stars

  • tldraw MCP

    tldraw is an infinite-canvas SDK for React, and this entry is a hosted MCP endpoint run on a tldraw Workers address, reachable over streamable HTTP and SSE.

    • MCP server

    tldraw · 51,163 stars

Part of the Wbcom Designs family

The all-in-one WordPress community stack

Also ours: wbcomdesigns.comvapvarun.combrndle.com