# Chrome DevTools MCP

Open-source MCP server and CLI that lets an agent control, inspect and profile a local Chrome browser.

- Provider: Google Chrome DevTools team (https://github.com/ChromeDevTools/chrome-devtools-mcp)
- Category: Drive a browser
- Type: Runs on your machine
- Pricing model: Free, open source [7]
- Free tier: Free; no paid plan [7]
- Authentication: None; runs locally [1]
- Connect via: Local MCP server (stdio via `npx`), `chrome-devtools` CLI [1]
- Read from the provider's pages on 2026-11-04
- Page: https://supermarket.dev/tools/drive-a-browser/chrome-devtools-mcp

## Pricing

### Billing
- Pricing model: Free, open source under Apache-2.0 [7]
- Free tier: Whole tool is free [7]
- Card required for free tier: No; nothing to sign up for [1]
- Minimum spend: Not published
- Billing period: Not published

### Prices
Licence is Apache-2.0. Local Chrome, so no per-browser-hour charge.
- Price: Free [7]

## Tools

### MCP server
- Official MCP server: Yes, local [1]
- Address or package: `chrome-devtools-mcp` on npm, run with `npx -y chrome-devtools-mcp@latest` [1]

### MCP tools
Selection of the tools on by default; the tool reference lists 60 or more, with more behind flags (memory, extensions, PWA, WebAuthn). The reference does not state readOnlyHint.
| Tool | What it does | Read-only |
|---|---|---|
| `click` | Clicks the element with the given uid | Not stated |
| `drag` | Drags one element onto another | Not stated |
| `fill` | Types text into an input or selects an option in a select element | Not stated |
| `fill_form` | Fills several form elements at once | Not stated |
| `handle_dialog` | Accepts or dismisses an open browser dialog | Not stated |
| `hover` | Hovers over an element | Not stated |
| `press_key` | Presses a key or key combination | Not stated |
| `type_text` | Types text with the keyboard into the focused input | Not stated |
| `upload_file` | Uploads a file through a file input element | Not stated |
| `navigate_page` | Goes to a URL, or back, forward or reload | Not stated |
| `new_page` | Opens a new tab and loads a URL | Not stated |
| `list_pages` | Lists the pages open in the browser | Not stated |
| `select_page` | Selects a page as context for later calls | Not stated |
| `close_page` | Closes a page by its index | Not stated |
| `wait_for` | Waits for given text to appear on the page | Not stated |
| `emulate` | Emulates device and network features on the page | Not stated |
| `resize_page` | Resizes the page window | Not stated |
| `take_snapshot` | Takes a text snapshot of the page from the accessibility tree | Not stated |
| `take_screenshot` | Takes a screenshot of the page or an element | Not stated |
| `evaluate_script` | Runs JavaScript in the page and returns JSON | Not stated |
| `list_console_messages` | Lists console messages since the last navigation | Not stated |
| `get_console_message` | Gets one console message by ID | Not stated |
| `list_network_requests` | Lists recent network requests for the page | Not stated |
| `get_network_request` | Gets one network request with its headers | Not stated |
| `get_css_styles` | Returns matched CSS rules and styles for an element | Not stated |
| `lighthouse_audit` | Runs Lighthouse for accessibility, SEO and best practices | Not stated |
| `performance_start_trace` | Starts a performance trace | Not stated |
| `performance_stop_trace` | Stops the performance trace | Not stated |
| `performance_analyze_insight` | Details one performance insight from a trace | Not stated |
| `screencast_start` | Starts recording a video of the page | Not stated |
| `screencast_stop` | Stops the video recording | Not stated |
| `set_logpoints` | Sets the logpoints of the selected page | Not stated |
| `take_heapsnapshot` | Captures a heap snapshot | Not stated |
Source [2]

### API
No HTTP API; the server runs on the user's machine.
| Endpoint | What it does |
|---|---|
| `chrome-devtools <tool> ...` | CLI that runs the same tools from a terminal, for example `navigate_page` and `take_screenshot` |
Source [1]

### Features
- Where the browser runs: Local Chrome, launched by the server or an already running instance [4]
- Browsers: Google Chrome and Chrome for Testing [1]
- Max session length: Not published
- Concurrent sessions: Page ID routing across concurrent sessions on by default; `--isolated` gives each session its own profile [4]
- Proxies: `--proxyServer` option passes a proxy to Chrome [3]
- CAPTCHA solving: Not published
- Session recording: `screencast_start` and `screencast_stop` record video; `lighthouse_audit` saves reports [2]
- Persistent logins: Default profile is kept between runs; `--isolated` uses a temporary one [4]

## Authentication

### Methods
| Method | Used for | How |
|---|---|---|
| None | Using the MCP server or CLI | Local process; no key or account |
| `--wsHeaders` | Connecting to a remote Chrome over WebSocket | JSON headers such as `Authorization`, passed with `--wsEndpoint` |
Source [3]

### Getting access
- Who creates the account: No account [1]
- Where to get a key: No key needed [1]
- Other requirements: Node.js LTS, current stable Chrome and npm [1]

## Setup

### Addresses
- REST API: Not published
- MCP server: Local stdio process started by the client with `npx` [1]
- OpenAPI spec: Not published
- Docs for agents: Tool reference in the repo: `https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/tool-reference.md` [1]
- Status page: Not published

### Install
| What | Command |
|---|---|
| MCP config for any client | `npx -y chrome-devtools-mcp@latest` (as `command` and `args`) |
| Claude Code (MCP) | `claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest` |
| Claude Code (plugin) | `/plugin marketplace add ChromeDevTools/chrome-devtools-mcp` |
| Gemini CLI | `gemini extensions install --auto-update https://github.com/ChromeDevTools/chrome-devtools-mcp` |
| CLI | `npm i chrome-devtools-mcp@latest -g` |
Source [5]

## Limits

### Rate limits
- Rate limit: Not published

### Other limits
- Headless viewport: 3840x2160 pixels at most [3]
- Navigations retained per page: 3 by default; 1 to 25 [3]
- File access: Limited to the OS temp directory unless roots or `--filesystem-root` are set [3]
- Node.js version: `^20.19.0 || ^22.12.0 || >=23` [7]

## Privacy

### Your data
- Data location: Runs on the user's machine; page content goes to the connected MCP client [1]
- Retention: Default profile kept on disk until removed; `--isolated` clears it when the browser closes [4]
- Used for training: Not published
- Zero data retention: Not published
- Usage statistics: On by default; opt out with `--no-usage-statistics` [1]
- Trace URLs sent to CrUX: Performance tools may send trace URLs to the Google CrUX API; disable with `--no-performance-crux` [1]

### Compliance
- Certifications: Not published
- HIPAA: Not published

## Sources

1. README: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/README.md
2. Tool reference: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/tool-reference.md
3. Configuration: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/configuration.md
4. Advanced usage: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/advanced-usage.md
5. Client configurations: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/docs/client-configurations.md
6. Security policy: https://raw.githubusercontent.com/ChromeDevTools/chrome-devtools-mcp/main/SECURITY.md
7. npm registry: https://registry.npmjs.org/chrome-devtools-mcp/latest
8. GitHub repository: https://github.com/ChromeDevTools/chrome-devtools-mcp
9. Checked by supermarket.dev
