MCP servers / Chrome DevTools
Chrome DevTools MCP server: setup for Claude Code, Claude Desktop and Cursor
Chrome DevTools MCP is Google's server for letting your AI control and inspect a live Chrome browser. It can record performance traces, read network requests and console messages (with source-mapped stack traces), take screenshots and heap snapshots, run Lighthouse audits, and automate clicks and typing through Puppeteer.
Where the Playwright server is built for driving pages, this one is built for debugging them: why a page is slow, which request failed, what the console says.
- Runs with
- npx (Node.js)
- Package
- chrome-devtools-mcp on npm
- Needs
- Node.js (a current LTS version) and current stable Chrome.
- Tools
- 29 (7 read-only, 22 can change things)
- Source
- ChromeDevTools/chrome-devtools-mcp
- Last checked
- 2026-09-20 (server reported version 1.9.0)
Config for Chrome DevTools
Generated by the same code as the free builder, so it matches what you get there. Pick your client, then copy.
Needs Chrome installed. Google collects usage statistics by default; add "--no-usage-statistics" to the args to opt out.
Claude Code
Save as .mcp.json in your project root. Claude Code asks you to approve it the first time.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}
Or add it from a terminal instead (single quotes work in bash, zsh and PowerShell; more on this command):
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest
Claude Desktop
Merge into claude_desktop_config.json (Settings → Developer → Edit Config), then fully quit and restart Claude Desktop.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}
Cursor
Save as .cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}
What it can do
These are all 29 tools the server reported when we started it and asked on 2026-09-20. The labels come from the hints each tool declares about itself. The labels are declared by the server itself, and a few are cautious: get_network_request only reads a request, but the server declares that it can change things.
clickcan change things
Clicks on the provided elementclose_pagecan change things
Closes the page by its index.dragcan change things
Drag an element onto another elementemulatecan change things
Emulates various features on the target page.evaluate_scriptcan change things
Evaluate a JavaScript function inside the target page.fillcan change things
Type text into an input, text area or select an option from a <select> element.fill_formcan change things
Fill out multiple form elements (inputs, selects, checkboxes, radios) at once.get_console_messageread-only
Gets a console message by its ID.get_network_requestcan change things
Gets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel.handle_dialogcan change things
If a browser dialog was opened, use this command to handle ithovercan change things
Hover over the provided elementlighthouse_auditcan change things
Get Lighthouse score and reports for accessibility, SEO, best practices, and agentic browsing.list_console_messagesread-only
List all console messages for the target page since the last navigation.list_network_requestsread-only
Lists the most recent requests for the target page since the last navigation.list_pagesread-only
Get a list of pages open in the browser.navigate_pagecan change things
Go to a URL, or back, forward, or reload.new_pagecan change things
Open a new tab and load a URL.performance_analyze_insightread-only
Provides more detailed information on a specific Performance Insight of an insight set that was highlighted in the results of a trace recording.performance_start_tracecan change things
Start a performance trace on the target webpage.performance_stop_tracecan change things
Stop the active performance trace recording on the target webpage.press_keycan change things
Press a key or key combination.resize_pagecan change things
Resizes the page's window so that the page has specified dimensionselect_pageread-only
Select a page as a context for future tool calls.take_heapsnapshotcan change things
Capture a heap snapshot of the target page.take_screenshotcan change things
Take a screenshot of the page or element.take_snapshotcan change things
Take a text snapshot of the target page based on the a11y tree.type_textcan change things
Type text using keyboard into a previously focused inputupload_filecan change things
Upload a file through a provided element.wait_forread-only
Wait for the specified text to appear on the selected page.
Watch out for
- 22 of its 29 tools can change things, including
evaluate_script, which runs JavaScript inside the page. The README warns that the server exposes browser content to your AI, which can inspect, debug and modify any data in the browser or DevTools, so avoid sharing anything sensitive or personal that you would not want it to see. - Google collects usage statistics from this server by default (the README lists tool success rates, latency and environment information). Add
--no-usage-statisticsto opt out. Collection is also off when theCIenvironment variable is set. - The performance tools may send trace URLs to Google's CrUX API to fetch real-user data.
--no-performance-cruxturns that off. - The server checks npm for updates from time to time and logs a notice. Set the
CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKSenvironment variable to stop that. - Google supports Chrome and Chrome for Testing. The README says other Chromium-based browsers may work but that is not guaranteed.
Variations
Opt out of usage statistics and CrUX lookups
Adds the two opt-out flags from the README. We started the server with both to confirm it accepts them.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--no-usage-statistics",
"--no-performance-crux"
]
}
}
}
The same in Claude Code, Claude Desktop and Cursor.
Try asking
- “Open http://localhost:3000, record a performance trace and tell me what is slowing the page down.”
- “List the failed network requests on this page and what each one returned.”
- “What errors are in the browser console right now?”
Related servers
- Playwright: Drive a real browser to test pages and take screenshots.
- Fetch: Download a web page and convert it to readable text.
Building a full setup? Combine this with other servers in the config builder. Trouble connecting? See fixing connection errors.