click
Clicks on the provided element
Drive a real Chrome and read what DevTools sees — traces, console, network, Lighthouse, heap snapshots — in the conversation where you are fixing the page.
The plugin Microsoft Agent Skills includes connection settings for this server.
LABSCO SUMMARY
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.
navigate_page, click, fill_form, wait_for, handle_dialog)take_snapshot)list_console_messages, get_console_message, list_network_requests, get_network_request)performance_start_trace, performance_stop_trace, performance_analyze_insight)lighthouse_audit)emulate, resize_page, list_pages, new_page, select_page, close_page)take_heapsnapshot is there without any flag, and --memoryDebugging switches on the rest of the thirteen-tool memory group — compare two snapshots, then walk summary, dominators, retainers, retaining paths, edges, class nodes and duplicate strings (compare_heapsnapshots, get_heapsnapshot_retaining_paths)--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--slim mode at the other end of the scale, cutting the surface to navigate, evaluate and screenshotNode.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
USE CASES
Drive the flow that feels slow, record a trace across it, then read the insights one at a time rather than staring at a flame chart. Lighthouse deliberately skips performance, so the trace is where the detail lives.
Take a snapshot of the page from the accessibility tree, act on the elements by uid, then read the console back with its source-mapped stack traces. The reproduction and the evidence come from the same session.
List the network requests made since the last navigation, then pull the one you suspect in full — headers and body. Faster than reproducing it in a terminal with the right cookies.
Emulate the viewport, CPU throttling and network profile, then run the same flow. What breaks under throttling rarely breaks on a developer laptop, which is why the bug report and your experience disagree.
Turn on --memoryDebugging, take a heap snapshot before and after the interaction, compare them, then walk the retaining paths on whatever grew. That is the chain that names the object holding the reference.
One Lighthouse run covers accessibility, SEO and best practices. Do it before the release rather than after somebody files it, and read the trace separately for the performance side.
Fence network access with allow or block URL patterns, and run isolated so the profile is a temporary one that is cleaned up afterwards. Worth setting before handing an agent a browser rather than after.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
clickClicks on the provided element
close_pageCloses the page by its index. The last open page cannot be closed.
dragDrag an element onto another element
emulateEmulates various features on the selected page.
evaluate_scriptEvaluate a JavaScript function inside the currently selected page. Returns the response as JSON, so returned values have to be JSON-serializable.
fillType text into an input, text area or select an option from a <select> element.
fill_formFill out multiple form elements (inputs, selects, checkboxes, radios) at once. ALWAYS prefer this tool over multiple individual 'fill' or 'click' calls when interacting with forms. It is significantly faster, more reliable, and reduces turn count. Example: Fill username, password, and check "Remember Me" in one call.
get_console_messageGets a console message by its ID. You can get all messages by calling list_console_messages.
get_network_requestGets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel.
handle_dialogIf a browser dialog was opened, use this command to handle it
hoverHover over the provided element
lighthouse_auditGet Lighthouse score and reports for accessibility, SEO, best practices, and agentic browsing. This excludes performance. For performance audits, run performance_start_trace
list_console_messagesList all console messages for the currently selected page since the last navigation.
list_network_requestsLists the most recent requests for the currently selected page since the last navigation.
list_pagesGet a list of pages open in the browser.
navigate_pageGo to a URL, or back, forward, or reload. Use project URL if not specified otherwise.
new_pageOpen a new tab and load a URL. Use project URL if not specified otherwise.
performance_analyze_insightProvides more detailed information on a specific Performance Insight of an insight set that was highlighted in the results of a trace recording.
performance_start_traceStart a performance trace on the selected webpage. Use to find frontend performance issues, Core Web Vitals (LCP, INP, CLS), and improve page load speed.
performance_stop_traceStop the active performance trace recording on the selected webpage.
press_keyPress a key or key combination. Use this when other input methods like fill() cannot be used (e.g., keyboard shortcuts, navigation keys, or special key combinations).
resize_pageResizes the selected page's window so that the page has specified dimension
select_pageSelect a page as a context for future tool calls.
take_heapsnapshotCapture a heap snapshot of the currently selected page. Use to analyze the memory distribution of JavaScript objects and debug memory leaks.
take_screenshotTake a screenshot of the page or element.
take_snapshotTake a text snapshot of the currently selected page based on the a11y tree. The snapshot lists page elements along with a unique identifier (uid). Always use the latest snapshot. Prefer taking a snapshot over taking a screenshot. The snapshot indicates the element selected in the DevTools Elements panel (if any).
type_textType text using keyboard into a previously focused input
upload_fileUpload a file through a provided element.
wait_forWait for the specified text to appear on the selected page.
BEFORE YOU INSTALL
29 tools when we connected. The documentation lists 57; the rest register only with flags such as --memoryDebugging, --categoryExtensions and --categoryPwa. The --slim option instead exposes just three differently named tools: navigate, evaluate and screenshot.
npx on PATH
CONTEXT COST
Rated by the size of the 29 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y chrome-devtools-mcp@latest{
"amp.mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}{
"servers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--browser-url=http://127.0.0.1:9222"
]
}
}
}This connects to the browser Antigravity is using; it will not start that browser for you. If the browser is not already running, start it first by clicking the Chrome icon at the top right corner. If you are not using port 9222, adjust the URL accordingly.
claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latestAdd the marketplace registry in Claude Code: /plugin marketplace add ChromeDevTools/chrome-devtools-mcp
Install the plugin: /plugin install chrome-devtools-mcp@chrome-devtools-plugins
Restart Claude Code so the MCP server and skills load; check with /skills. If you installed Chrome DevTools MCP for Claude Code before, remove that first.
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest[mcp_servers.chrome-devtools]
command = "cmd"
args = ["/c", "npx", "-y", "chrome-devtools-mcp@latest"]
startup_timeout_ms = 20000
[mcp_servers.chrome-devtools.env]
SystemRoot = "C:\\Windows"
PROGRAMFILES = "C:\\Program Files"cmd mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latestStart Copilot CLI: copilot
Open the dialog to add a new MCP server: /mcp add
Enter Server name chrome-devtools, Server Type [1] Local and Command npx -y chrome-devtools-mcp@latest, then press CTRL+S to save
chrome-devtoolsFor Windows (PowerShell):
code --add-mcp '{"""name""":"""io.github.ChromeDevTools/chrome-devtools-mcp""","""command""":"""npx""","""args""":["""-y""","""chrome-devtools-mcp"""]}'devin mcp add chrome-devtools -- npx chrome-devtools-mcp@latestdroid mcp add chrome-devtools "npx -y chrome-devtools-mcp@latest"gemini mcp add chrome-devtools npx chrome-devtools-mcp@latestgrok mcp add chrome-devtools npx chrome-devtools-mcp@latestmcp-proxy --transport streamablehttp --port 8080 -- npx -y chrome-devtools-mcp@latestAdd in ~/.vibe/config.toml:
[[mcp_servers]]
name = "chrome-devtools"
transport = "stdio"
command = "npx"
args = ["chrome-devtools-mcp@latest"]{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrome-devtools": {
"type": "local",
"command": [
"npx",
"-y",
"chrome-devtools-mcp@latest"
]
}
}
}qodercli mcp add chrome-devtools -- npx chrome-devtools-mcp@latest