chromedevtools--chrome-devtools-mcp
219 行
7.6 KiB
Markdown
219 行
7.6 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.
|
|
|
|
## 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 22](https://nodejs.org/) or newer.
|
|
- [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": ["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>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=eyJjb21tYW5kIjoibnB4IGNocm9tZS1kZXZ0b29scy1tY3BAbGF0ZXN0In0%3D)
|
|
|
|
**Or install manually:**
|
|
|
|
Go to `Cursor Settings` -> `MCP` -> `New MCP Server`. Use the config provided above.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Gemini CLI</summary>
|
|
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>
|
|
using 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>
|
|
|
|
## Tools
|
|
|
|
<!-- 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`
|
|
|
|
<!-- 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`
|
|
- Window: `%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.
|