chromedevtools--chrome-devtools-mcp
2714158eb3
This also implements the suggestion from https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/244 but that includes other parts that I am not sure we would want for now.
341 行
11 KiB
Markdown
341 行
11 KiB
Markdown
# Chrome DevTools MCP
|
|
|
|
[](https://npmjs.org/package/chrome-devtools-mcp)
|
|
|
|
`chrome-devtools-mcp` lets your coding agent (such as Gemini, Claude, Cursor or Copilot)
|
|
control and inspect a live Chrome browser. It acts as a Model-Context-Protocol
|
|
(MCP) server, giving your AI coding assistant access to the full power of
|
|
Chrome DevTools for reliable automation, in-depth debugging, and performance analysis.
|
|
|
|
## [Tool reference](./docs/tool-reference.md) | [Changelog](./CHANGELOG.md) | [Contributing](./CONTRIBUTING.md) | [Troubleshooting](./docs/troubleshooting.md)
|
|
|
|
## Key features
|
|
|
|
- **Get performance insights**: Uses [Chrome
|
|
DevTools](https://github.com/ChromeDevTools/devtools-frontend) to record
|
|
traces and extract actionable performance insights.
|
|
- **Advanced browser debugging**: Analyze network requests, take screenshots and
|
|
check the browser console.
|
|
- **Reliable automation**. Uses
|
|
[puppeteer](https://github.com/puppeteer/puppeteer) to automate actions in
|
|
Chrome and automatically wait for action results.
|
|
|
|
## Disclaimers
|
|
|
|
`chrome-devtools-mcp` exposes content of the browser instance to the MCP clients
|
|
allowing them to inspect, debug, and modify any data in the browser or DevTools.
|
|
Avoid sharing sensitive or personal information that you don't want to share with
|
|
MCP clients.
|
|
|
|
## Requirements
|
|
|
|
- [Node.js](https://nodejs.org/) v20.19 or a newer [latest maintenance LTS](https://github.com/nodejs/Release#release-schedule) version.
|
|
- [Chrome](https://www.google.com/chrome/) current stable version or newer.
|
|
- [npm](https://www.npmjs.com/).
|
|
|
|
## Getting started
|
|
|
|
Add the following config to your MCP client:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"chrome-devtools": {
|
|
"command": "npx",
|
|
"args": ["-y", "chrome-devtools-mcp@latest"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
> [!NOTE]
|
|
> Using `chrome-devtools-mcp@latest` ensures that your MCP client will always use the latest version of the Chrome DevTools MCP server.
|
|
|
|
### MCP Client configuration
|
|
|
|
<details>
|
|
<summary>Claude Code</summary>
|
|
Use the Claude Code CLI to add the Chrome DevTools MCP server (<a href="https://docs.anthropic.com/en/docs/claude-code/mcp">guide</a>):
|
|
|
|
```bash
|
|
claude mcp add chrome-devtools npx chrome-devtools-mcp@latest
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Cline</summary>
|
|
Follow https://docs.cline.bot/mcp/configuring-mcp-servers and use the config provided above.
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Codex</summary>
|
|
Follow the <a href="https://github.com/openai/codex/blob/main/docs/advanced.md#model-context-protocol-mcp">configure MCP guide</a>
|
|
using the standard config from above. You can also install the Chrome DevTools MCP server using the Codex CLI:
|
|
|
|
```bash
|
|
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
```
|
|
|
|
**On Windows 11**
|
|
|
|
Configure the Chrome install location and increase the startup timeout by updating `.codex/config.toml` and adding the following `env` and `startup_timeout_ms` parameters:
|
|
|
|
```
|
|
[mcp_servers.chrome-devtools]
|
|
command = "cmd"
|
|
args = [
|
|
"/c",
|
|
"npx",
|
|
"-y",
|
|
"chrome-devtools-mcp@latest",
|
|
]
|
|
env = { SystemRoot="C:\\Windows", PROGRAMFILES="C:\\Program Files" }
|
|
startup_timeout_ms = 20_000
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Copilot CLI</summary>
|
|
|
|
Start Copilot CLI:
|
|
|
|
```
|
|
copilot
|
|
```
|
|
|
|
Start the dialog to add a new MCP server by running:
|
|
|
|
```
|
|
/mcp add
|
|
```
|
|
|
|
Configure the following fields and press `CTR-S` to save the configuration:
|
|
|
|
- **Server name:** `chrome-devtools`
|
|
- **Server Type:** `[1] Local`
|
|
- **Command:** `npx`
|
|
- **Arguments:** `-y, chrome-devtools-mcp@latest`
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Copilot / VS Code</summary>
|
|
Follow the MCP install <a href="https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server">guide</a>,
|
|
with the standard config from above. You can also install the Chrome DevTools MCP server using the VS Code CLI:
|
|
|
|
```bash
|
|
code --add-mcp '{"name":"chrome-devtools","command":"npx","args":["chrome-devtools-mcp@latest"]}'
|
|
```
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Cursor</summary>
|
|
|
|
**Click the button to install:**
|
|
|
|
[<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">](https://cursor.com/en/install-mcp?name=chrome-devtools&config=eyJjb21tYW5kIjoibnB4IC15IGNocm9tZS1kZXZ0b29scy1tY3BAbGF0ZXN0In0%3D)
|
|
|
|
**Or install manually:**
|
|
|
|
Go to `Cursor Settings` -> `MCP` -> `New MCP Server`. Use the config provided above.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Gemini CLI</summary>
|
|
Install the Chrome DevTools MCP server using the Gemini CLI.
|
|
|
|
**Project wide:**
|
|
|
|
```bash
|
|
gemini mcp add chrome-devtools npx chrome-devtools-mcp@latest
|
|
```
|
|
|
|
**Globally:**
|
|
|
|
```bash
|
|
gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latest
|
|
```
|
|
|
|
Alternatively, follow the <a href="https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#how-to-set-up-your-mcp-server">MCP guide</a> and use the standard config from above.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Gemini Code Assist</summary>
|
|
Follow the <a href="https://cloud.google.com/gemini/docs/codeassist/use-agentic-chat-pair-programmer#configure-mcp-servers">configure MCP guide</a>
|
|
using the standard config from above.
|
|
</details>
|
|
|
|
<details>
|
|
<summary>JetBrains AI Assistant & Junie</summary>
|
|
|
|
Go to `Settings | Tools | AI Assistant | Model Context Protocol (MCP)` -> `Add`. Use the config provided above.
|
|
The same way chrome-devtools-mcp can be configured for JetBrains Junie in `Settings | Tools | Junie | MCP Settings` -> `Add`. Use the config provided above.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Visual Studio</summary>
|
|
|
|
**Click the button to install:**
|
|
|
|
[<img src="https://img.shields.io/badge/Visual_Studio-Install-C16FDE?logo=visualstudio&logoColor=white" alt="Install in Visual Studio">](https://vs-open.link/mcp-install?%7B%22name%22%3A%22chrome-devtools%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22chrome-devtools-mcp%40latest%22%5D%7D)
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Warp</summary>
|
|
|
|
Go to `Settings | AI | Manage MCP Servers` -> `+ Add` to [add an MCP Server](https://docs.warp.dev/knowledge-and-collaboration/mcp#adding-an-mcp-server). Use the config provided above.
|
|
|
|
</details>
|
|
|
|
### Your first prompt
|
|
|
|
Enter the following prompt in your MCP Client to check if everything is working:
|
|
|
|
```
|
|
Check the performance of https://developers.chrome.com
|
|
```
|
|
|
|
Your MCP client should open the browser and record a performance trace.
|
|
|
|
> [!NOTE]
|
|
> The MCP server will start the browser automatically once the MCP client uses a tool that requires a running browser instance. Connecting to the Chrome DevTools MCP server on its own will not automatically start the browser.
|
|
|
|
## Tools
|
|
|
|
If you run into any issues, checkout our [troubleshooting guide](./docs/troubleshooting.md).
|
|
|
|
<!-- BEGIN AUTO GENERATED TOOLS -->
|
|
|
|
- **Input automation** (7 tools)
|
|
- [`click`](docs/tool-reference.md#click)
|
|
- [`drag`](docs/tool-reference.md#drag)
|
|
- [`fill`](docs/tool-reference.md#fill)
|
|
- [`fill_form`](docs/tool-reference.md#fill_form)
|
|
- [`handle_dialog`](docs/tool-reference.md#handle_dialog)
|
|
- [`hover`](docs/tool-reference.md#hover)
|
|
- [`upload_file`](docs/tool-reference.md#upload_file)
|
|
- **Navigation automation** (7 tools)
|
|
- [`close_page`](docs/tool-reference.md#close_page)
|
|
- [`list_pages`](docs/tool-reference.md#list_pages)
|
|
- [`navigate_page`](docs/tool-reference.md#navigate_page)
|
|
- [`navigate_page_history`](docs/tool-reference.md#navigate_page_history)
|
|
- [`new_page`](docs/tool-reference.md#new_page)
|
|
- [`select_page`](docs/tool-reference.md#select_page)
|
|
- [`wait_for`](docs/tool-reference.md#wait_for)
|
|
- **Emulation** (3 tools)
|
|
- [`emulate_cpu`](docs/tool-reference.md#emulate_cpu)
|
|
- [`emulate_network`](docs/tool-reference.md#emulate_network)
|
|
- [`resize_page`](docs/tool-reference.md#resize_page)
|
|
- **Performance** (3 tools)
|
|
- [`performance_analyze_insight`](docs/tool-reference.md#performance_analyze_insight)
|
|
- [`performance_start_trace`](docs/tool-reference.md#performance_start_trace)
|
|
- [`performance_stop_trace`](docs/tool-reference.md#performance_stop_trace)
|
|
- **Network** (2 tools)
|
|
- [`get_network_request`](docs/tool-reference.md#get_network_request)
|
|
- [`list_network_requests`](docs/tool-reference.md#list_network_requests)
|
|
- **Debugging** (4 tools)
|
|
- [`evaluate_script`](docs/tool-reference.md#evaluate_script)
|
|
- [`list_console_messages`](docs/tool-reference.md#list_console_messages)
|
|
- [`take_screenshot`](docs/tool-reference.md#take_screenshot)
|
|
- [`take_snapshot`](docs/tool-reference.md#take_snapshot)
|
|
|
|
<!-- END AUTO GENERATED TOOLS -->
|
|
|
|
## Configuration
|
|
|
|
The Chrome DevTools MCP server supports the following configuration option:
|
|
|
|
<!-- BEGIN AUTO GENERATED OPTIONS -->
|
|
|
|
- **`--browserUrl`, `-u`**
|
|
Connect to a running Chrome instance using port forwarding. For more details see: https://developer.chrome.com/docs/devtools/remote-debugging/local-server.
|
|
- **Type:** string
|
|
|
|
- **`--headless`**
|
|
Whether to run in headless (no UI) mode.
|
|
- **Type:** boolean
|
|
- **Default:** `false`
|
|
|
|
- **`--executablePath`, `-e`**
|
|
Path to custom Chrome executable.
|
|
- **Type:** string
|
|
|
|
- **`--isolated`**
|
|
If specified, creates a temporary user-data-dir that is automatically cleaned up after the browser is closed.
|
|
- **Type:** boolean
|
|
- **Default:** `false`
|
|
|
|
- **`--channel`**
|
|
Specify a different Chrome channel that should be used. The default is the stable channel version.
|
|
- **Type:** string
|
|
- **Choices:** `stable`, `canary`, `beta`, `dev`
|
|
|
|
- **`--logFile`**
|
|
Path to a file to write debug logs to. Set the env variable `DEBUG` to `*` to enable verbose logs. Useful for submitting bug reports.
|
|
- **Type:** string
|
|
|
|
- **`--viewport`**
|
|
Initial viewport size for the Chrome instances started by the server. For example, `1280x720`
|
|
- **Type:** string
|
|
|
|
- **`--proxyServer`**
|
|
Proxy server configuration for Chrome passed as --proxy-server when launching the browser. See https://www.chromium.org/developers/design-documents/network-settings/ for details.
|
|
- **Type:** string
|
|
|
|
- **`--acceptInsecureCerts`**
|
|
If enabled, ignores errors relative to self-signed and expired certificates. Use with caution.
|
|
- **Type:** boolean
|
|
|
|
<!-- END AUTO GENERATED OPTIONS -->
|
|
|
|
Pass them via the `args` property in the JSON configuration. For example:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"chrome-devtools": {
|
|
"command": "npx",
|
|
"args": [
|
|
"chrome-devtools-mcp@latest",
|
|
"--channel=canary",
|
|
"--headless=true",
|
|
"--isolated=true"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
You can also run `npx chrome-devtools-mcp@latest --help` to see all available configuration options.
|
|
|
|
## Concepts
|
|
|
|
### User data directory
|
|
|
|
`chrome-devtools-mcp` starts a Chrome's stable channel instance using the following user
|
|
data directory:
|
|
|
|
- Linux / MacOS: `$HOME/.cache/chrome-devtools-mcp/chrome-profile-$CHANNEL`
|
|
- Windows: `%HOMEPATH%/.cache/chrome-devtools-mcp/chrome-profile-$CHANNEL`
|
|
|
|
The user data directory is not cleared between runs and shared across
|
|
all instances of `chrome-devtools-mcp`. Set the `isolated` option to `true`
|
|
to use a temporary user data dir instead which will be cleared automatically after
|
|
the browser is closed.
|
|
|
|
## Known limitations
|
|
|
|
### Operating system sandboxes
|
|
|
|
Some MCP clients allow sandboxing the MCP server using macOS Seatbelt or Linux
|
|
containers. If sandboxes are enabled, `chrome-devtools-mcp` is not able to start
|
|
Chrome that requires permissions to create its own sandboxes. As a workaround,
|
|
either disable sandboxing for `chrome-devtools-mcp` in your MCP client or use
|
|
`--connect-url` to connect to a Chrome instance that you start manually outside
|
|
of the MCP client sandbox.
|