It clicks through the flow, records a trace, then reads the insights back one at a time, so "the page feels slow" becomes an insight with a number attached. The heap tools go a step further and answer why the number keeps growing.
Google's own MCP server for Chrome DevTools. It automates the browser with Puppeteer and waits for actions to settle, then hands back what the DevTools panels would show: console messages with source-mapped stack traces, network requests, performance insights, Lighthouse results and heap snapshots. A CLI is included for use without MCP.
- Pages driven the way a person drives them: navigate, click, hover, drag, fill one field or a whole form at once, press keys, type, upload a file, handle a dialog and wait for text (`navigate_page`, `click`, `fill_form`, `wait_for`, `handle_dialog`)
- A text snapshot of the page taken from the accessibility tree, carrying the uid every interaction call takes (`take_snapshot`)
- Console messages and network requests listed since the last navigation, then fetched one at a time in full (`list_console_messages`, `get_console_message`, `list_network_requests`, `get_network_request`)
- A performance trace started and stopped, then read insight by insight (`performance_start_trace`, `performance_stop_trace`, `performance_analyze_insight`)
- A Lighthouse run — which deliberately leaves performance out, because that path is the trace (`lighthouse_audit`)
- Emulated conditions and several pages held open at once, selected between and closed (`emulate`, `resize_page`, `list_pages`, `new_page`, `select_page`, `close_page`)
- A heap-debugging group of thirteen tools behind `--memoryDebugging`: take a snapshot, compare two, and walk summary, dominators, retainers, retaining paths, edges, class nodes and duplicate strings (`take_heapsnapshot`, `compare_heapsnapshots`, `get_heapsnapshot_retaining_paths`)
- Further groups behind their own switches — Chrome extensions with `--categoryExtensions`, progressive web apps with `--categoryPwa`, page-exposed tools with `--categoryExperimentalThirdParty` and `--categoryExperimentalWebmcp`, coordinate clicking with `--experimentalVision`, and screencast recording with `--experimentalScreencast`, which also needs ffmpeg on the PATH
- A `--slim` mode at the other end of the scale, cutting the surface to `navigate`, `evaluate` and `screenshot`
Node.js LTS, npm, and Chrome current stable or newer — Chrome and Chrome for Testing are the only officially supported browsers. `npx -y chrome-devtools-mcp@latest` is the whole install. It can also attach to a Chrome you are already running through `--browserUrl` or `--wsEndpoint`. Two things to decide before you wire it in: the server exposes whatever is in that browser to the client, so do not point it at a profile holding data you would not share; and usage statistics are collected by default, switched off with `--no-usage-statistics` or the `CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS` environment variable. Performance tools send trace URLs to the CrUX API unless you pass `--no-performance-crux`. Network access can be fenced with `--allowedUrlPattern` or `--blockedUrlPattern`.
One command — npx -y chrome-devtools-mcp@latest
