Skip to main content
@mcp-b/chrome-devtools-mcp is an MCP server that lets AI agents control and inspect a live Chrome browser via the Chrome DevTools Protocol. It is a fork of ChromeDevTools/chrome-devtools-mcp with added WebMCP integration for discovering and calling tools registered on webpages.
npm: @mcp-b/chrome-devtools-mcp
license: Apache-2.0
node: ^20.19.0 || ^22.12.0 || >=23
upstream: ChromeDevTools/chrome-devtools-mcp

Requirements

  • Node.js v20.19 or a newer maintenance LTS version
  • Chrome current stable or newer

Installation

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "@mcp-b/chrome-devtools-mcp@latest"]
    }
  }
}
For Claude Code:
claude mcp add chrome-devtools npx @mcp-b/chrome-devtools-mcp@latest

Minimal example

For a minimal working example, see the Chrome DevTools Quickstart.

Configuration options

Pass options via the args array in your MCP client config.
OptionTypeDefaultDescription
--autoConnectbooleantrueAutomatically connect to a running Chrome instance (Chrome 144+) via chrome://inspect/#remote-debugging
--browserUrl, -ustringURL of a running debuggable Chrome instance (e.g. http://127.0.0.1:9222)
--wsEndpoint, -wstringWebSocket endpoint for a running Chrome instance
--wsHeadersstringCustom headers for WebSocket connection in JSON format. Only works with --wsEndpoint
--headlessbooleanfalseRun Chrome in headless mode
--executablePath, -estringPath to a custom Chrome executable
--isolatedbooleanfalseUse a temporary user-data-dir, cleaned up on close
--userDataDirstring$HOME/.cache/chrome-devtools-mcp/chrome-profilePath to the Chrome user data directory
--channelstable | canary | beta | devstableChrome channel to use
--logFilestringPath to write debug logs. Set DEBUG=* for verbose output
--viewportstringInitial viewport size (e.g. 1280x720). Max 3840x2160 in headless mode
--proxyServerstringProxy server passed as --proxy-server to Chrome
--acceptInsecureCertsbooleanfalseIgnore self-signed and expired certificate errors
--chromeArgarrayAdditional Chrome launch arguments
--ignoreDefaultChromeArgarrayDisable specific default Chrome launch arguments
--categoryEmulationbooleantrueSet to false to exclude emulation tools
--categoryPerformancebooleantrueSet to false to exclude performance tools
--categoryNetworkbooleantrueSet to false to exclude network tools
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "@mcp-b/chrome-devtools-mcp@latest",
        "--channel=canary",
        "--headless=true",
        "--isolated=true"
      ]
    }
  }
}

Tools (27)

Input automation (8 tools)

ToolDescriptionRequired Parameters
clickClick on an elementuid
dragDrag an element onto anotherfrom_uid, to_uid
fillType text into an input, textarea, or selectuid, value
fill_formFill multiple form elements at onceelements (array)
handle_dialogAccept or dismiss a browser dialogaction (accept or dismiss)
hoverHover over an elementuid
press_keyPress a key or combination (e.g. Control+A)key
upload_fileUpload a file through a file inputuid, filePath
ToolDescriptionRequired Parameters
close_pageClose a page by indexpageIdx
list_pagesList open browser pages(none)
navigate_pageNavigate current page (URL, back, forward, reload)(varies by type)
new_pageOpen a new pageurl
select_pageSelect a page as context for future tool callspageIdx
wait_forWait for text to appear on the pagetext

Emulation (2 tools)

ToolDescriptionRequired Parameters
emulateEmulate CPU throttling, geolocation, or network conditions(all optional)
resize_pageResize the page viewportwidth, height

Performance (3 tools)

ToolDescriptionRequired Parameters
performance_start_traceStart a performance trace recordingautoStop, reload
performance_stop_traceStop the active performance trace(none)
performance_analyze_insightGet details on a specific performance insightinsightSetId, insightName

Network (2 tools)

ToolDescriptionRequired Parameters
list_network_requestsList all network requests since last navigation(all optional)
get_network_requestGet a specific network request by ID(optional reqid)

Debugging (5 tools)

ToolDescriptionRequired Parameters
evaluate_scriptExecute JavaScript in the current pagefunction
list_console_messagesList console messages(all optional)
get_console_messageGet a console message by IDmsgid
take_screenshotTake a screenshot (PNG, JPEG, or WebP)(all optional)
take_snapshotTake a text snapshot based on the a11y tree(all optional)

WebMCP (1 tool)

ToolDescriptionRequired Parameters
list_webmcp_toolsList website MCP tools across all pages (diff-aware)(all optional)
When a page has WebMCP tools registered via @mcp-b/global, those tools are automatically registered as first-class MCP tools with prefixed names (e.g. webmcp_localhost_3000_page0_search_products).

Prompts

PromptDescriptionArguments
webmcp-dev-workflowStep-by-step guide for building WebMCP tools with AI(none)
test-webmcp-toolSystematically test a tool with edge casestoolName (optional), devServerUrl (optional)
debug-webmcpDiagnose WebMCP connection and registration issuesurl (optional)

Dynamic tool registration

WebMCP tools from webpages are registered as first-class MCP tools. Client support for tools/list_changed notifications:
ClientDynamic Updates
Claude CodeYes
GitHub CopilotYes
Gemini CLIYes
CursorNo (use list_webmcp_tools to poll)
ClinePartial
The list_webmcp_tools tool is diff-aware: the first call returns the full list, subsequent calls return only changes. Pass full: true to force the complete list.

Connecting to a running Chrome instance

Two approaches:
  1. Automatic (Chrome 144+): Enable remote debugging at chrome://inspect/#remote-debugging. The server connects automatically with --autoConnect (enabled by default).
  2. Manual via port: Start Chrome with --remote-debugging-port=9222 and a non-default --user-data-dir, then pass --browserUrl=http://127.0.0.1:9222 to the MCP server.
Enabling the remote debugging port allows any local application to control the browser. Do not browse sensitive websites while the debugging port is open.

User data directory

Default paths:
PlatformPath
Linux / macOS$HOME/.cache/chrome-devtools-mcp/chrome-profile-$CHANNEL
Windows%HOMEPATH%/.cache/chrome-devtools-mcp/chrome-profile-$CHANNEL
The directory persists between runs. Set --isolated=true to use a temporary directory that is cleaned up when the browser closes.

Known limitations

  • Operating system sandboxes (macOS Seatbelt, Linux containers) can prevent Chrome from launching. Use --browserUrl to connect to an externally started Chrome instance.
  • The MCP server exposes browser content to MCP clients. Avoid browsing sensitive data during a session.