Brave
MCP server for Brave DevTools
Ask AI about Brave
Powered by Claude Β· Grounded in docs
I know everything about Brave. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Brave MCP
Fork of ChromeDevTools/chrome-devtools-mcp ported to Brave Browser.
npm:
brave-mcpΒ· repo:triuzzi/brave-devtools-mcp
brave-mcp lets your coding agent (such as Claude, Cursor, Gemini or Copilot)
control and inspect a live Brave browser. It acts as a Model-Context-Protocol
(MCP) server, giving your AI coding assistant access to the full power of
DevTools for reliable automation, in-depth debugging, and performance analysis.
A CLI is also provided for use without MCP.
Tool reference | Changelog | Contributing | Troubleshooting | Design Principles
Key features
- Get performance insights: Uses Chrome DevTools to record traces and extract actionable performance insights.
- Advanced browser debugging: Analyze network requests, take screenshots and check browser console messages (with source-mapped stack traces).
- Reliable automation. Uses puppeteer to automate actions in Brave and automatically wait for action results.
Disclaimers
brave-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.
Performance tools may send trace URLs to the Google CrUX API to fetch real-user
experience data. To disable this, run with the --no-performance-crux flag.
Usage statistics from the upstream project are disabled by default in this fork.
You can explicitly enable them with --usage-statistics if desired.
Requirements
- Node.js v20.19 or a newer latest maintenance LTS version.
- Brave Browser current release version or newer.
- npm
Note: Do not use
chrome-devtools-mcp@latestfrom npm β that installs Google's Chrome-oriented server. This fork isbrave-mcp.
Setup
Quick start (via npm)
{
"mcpServers": {
"brave-devtools": {
"command": "npx",
"args": ["-y", "brave-mcp@latest"]
}
}
}
Add this to your MCP client config and you're done. Works with Claude Code (~/.mcp.json), Cursor (Settings β MCP), VS Code Copilot, and any other MCP client.
From source (for development)
git clone https://github.com/triuzzi/brave-devtools-mcp.git
cd brave-devtools-mcp
npm install
npm run build
Run npm run build again after git pull when you update the repo.
Then point your MCP config at the built CLI with an absolute path:
{
"mcpServers": {
"brave-devtools": {
"command": "node",
"args": [
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js"
]
}
}
}
This works with Claude Code (~/.mcp.json), Cursor (Settings β MCP β New MCP Server, or mcp.json), VS Code Copilot, and any other MCP client.
If Brave is not detected automatically, set BRAVE_PATH:
{
"mcpServers": {
"brave-devtools": {
"command": "node",
"args": [
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js"
],
"env": {
"BRAVE_PATH": "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
}
}
}
}
3. Choose your connection mode
The server has two modes: launch a new instance (default) or attach to your existing Brave window.
Mode A: Launch a new instance (default)
With the basic config above, the server spawns a dedicated Brave instance with its own profile. Your existing Brave windows are untouched. This is the simplest mode β no extra setup needed.
Mode B: Attach to your existing Brave window
If you want the MCP server to control the Brave window you already have open (same tabs, cookies, logins), you need to start Brave with remote debugging enabled.
Step 1: Quit Brave completely, then relaunch with the debugging flag:
# macOS
open -a "Brave Browser" --args --remote-debugging-port=9222
# Linux
brave-browser --remote-debugging-port=9222
# Windows
"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --remote-debugging-port=9222
Tip: To always start Brave with remote debugging, add
--remote-debugging-port=9222to Brave's launch shortcut or shell alias so you never have to think about it again.
Step 2: Add --browserUrl to your MCP config:
{
"mcpServers": {
"brave-devtools": {
"command": "npx",
"args": [
"-y",
"brave-mcp@latest",
"--browserUrl",
"http://localhost:9222"
]
}
}
}
Or if running from source:
{
"mcpServers": {
"brave-devtools": {
"command": "node",
"args": [
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js",
"--browserUrl",
"http://localhost:9222"
]
}
}
}
Without --browserUrl, the server will always launch a new instance. With it, the server attaches to your running Brave instead.
Warning: The remote debugging port lets any application on your machine control the browser. Be mindful of sensitive websites while it's open.
All CLI options
Run --help to see every flag:
node /absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js --help
Testing
An integration test suite exercises all 29 MCP tools against a running Brave instance:
# Launch Brave with remote debugging
open -a "Brave Browser" --args --remote-debugging-port=9222
# Run all 36 test cases
npm run test:brave
Tests cover navigation, snapshots, screenshots, script execution, input automation (click/fill/drag/upload), dialogs, console, network, emulation, performance tracing, memory snapshots, and Lighthouse audits.
Getting started
If you are interested in only basic browser tasks, use --slim mode:
{
"mcpServers": {
"brave-devtools": {
"command": "node",
"args": [
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js",
"--slim",
"--headless"
]
}
}
}
See Slim tool reference.
MCP Client configuration
Amp
Follow https://ampcode.com/manual#mcp and use the config provided above. You can also install the Chrome DevTools MCP server using the CLI:amp mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
Antigravity
To use the Chrome DevTools MCP server follow the instructions from Antigravity's docs to install a custom MCP server. Add the following config to the MCP servers config:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--browser-url=http://127.0.0.1:9222",
"-y"
]
}
}
}
This will make the Chrome DevTools MCP server automatically connect to the browser that Antigravity is using. If you are not using port 9222, make sure to adjust accordingly.
Chrome DevTools MCP will not start the browser instance automatically using this approach because the Chrome DevTools MCP server connects to Antigravity's built-in browser. If the browser is not already running, you have to start it first by clicking the Chrome icon at the top right corner.
Claude Code
Install via CLI (MCP only)
Use the Claude Code CLI to add the Chrome DevTools MCP server (guide):
claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
Install as a Plugin (MCP + Skills)
[!NOTE] If you already had Chrome DevTools MCP installed previously for Claude Code, make sure to remove it first from your installation and configuration files.
To install Chrome DevTools MCP with skills, add the marketplace registry in Claude Code:
/plugin marketplace add ChromeDevTools/chrome-devtools-mcp
Then, install the plugin:
/plugin install chrome-devtools-mcp
Restart Claude Code to have the MCP server and skills load (check with /skills).
[!TIP] If the plugin installation fails with a
Failed to clone repositoryerror (e.g., HTTPS connectivity issues behind a corporate firewall), see the troubleshooting guide for workarounds, or use the CLI installation method above instead.
Cline
Follow https://docs.cline.bot/mcp/configuring-mcp-servers and use the config provided above.Codex
Follow the configure MCP guide using the standard config from above. You can also install the Chrome DevTools MCP server using the Codex CLI: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
Command Code
Use the Command Code CLI to add the Chrome DevTools MCP server (MCP guide):
cmd mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
Copilot CLI
Start Copilot CLI:
copilot
Start the dialog to add a new MCP server by running:
/mcp add
Configure the following fields and press CTRL+S to save the configuration:
- Server name:
chrome-devtools - Server Type:
[1] Local - Command:
npx -y chrome-devtools-mcp@latest
Copilot / VS Code
Install as a Plugin (Recommended)
The easiest way to get up and running is to install chrome-devtools-mcp as an agent plugin.
This bundles the MCP server and all skills together, so your agent gets both the tools
and the expert guidance it needs to use them effectively.
- Open the Command Palette (
Cmd+Shift+Pon macOS orCtrl+Shift+Pon Windows/Linux). - Search for and run the Chat: Install Plugin From Source command.
- Paste in our repository URL:
https://github.com/ChromeDevTools/chrome-devtools-mcp
That's it! Your agent is now supercharged with Chrome DevTools capabilities.
Install as an MCP Server (MCP only)
Click the button to install:
Or install manually:
Follow the VS Code MCP configuration guide using the standard config from above, or use the CLI:
For macOS and Linux:
code --add-mcp '{"name":"io.github.ChromeDevTools/chrome-devtools-mcp","command":"npx","args":["-y","chrome-devtools-mcp"],"env":{}}'
For Windows (PowerShell):
code --add-mcp '{"""name""":"""io.github.ChromeDevTools/chrome-devtools-mcp""","""command""":"""npx""","""args""":["""-y""","""chrome-devtools-mcp"""]}'
Cursor
Click the button to install:
Or install manually:
Go to Cursor Settings -> MCP -> New MCP Server. Use the config provided above.
Factory CLI
Use the Factory CLI to add the Chrome DevTools MCP server (guide):droid mcp add chrome-devtools "npx -y chrome-devtools-mcp@latest"
Gemini CLI
Install the Chrome DevTools MCP server using the Gemini CLI.Project wide:
# Either MCP only:
gemini mcp add chrome-devtools npx chrome-devtools-mcp@latest
# Or as a Gemini extension (MCP+Skills):
gemini extensions install --auto-update https://github.com/ChromeDevTools/chrome-devtools-mcp
Globally:
gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latest
Alternatively, follow the MCP guide and use the standard config from above.
Gemini Code Assist
Follow the configure MCP guide using the standard config from above.JetBrains AI Assistant & Junie
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.
Kiro
In Kiro Settings, go to Configure MCP > Open Workspace or User MCP Config > Use the configuration snippet provided above.
Or, from the IDE Activity Bar > Kiro > MCP Servers > Click Open MCP Config. Use the configuration snippet provided above.
Katalon Studio
The Chrome DevTools MCP server can be used with Katalon StudioAssist via an MCP proxy.
Step 1: Install the MCP proxy by following the MCP proxy setup guide.
Step 2: Start the Chrome DevTools MCP server with the proxy:
mcp-proxy --transport streamablehttp --port 8080 -- npx -y chrome-devtools-mcp@latest
Note: You may need to pick another port if 8080 is already in use.
Step 3: In Katalon Studio, add the server to StudioAssist with the following settings:
- Connection URL:
http://127.0.0.1:8080/mcp - Transport type:
HTTP
Once connected, the Chrome DevTools MCP tools will be available in StudioAssist.
Mistral Vibe
Add in ~/.vibe/config.toml:
[[mcp_servers]]
name = "chrome-devtools"
transport = "stdio"
command = "npx"
args = ["chrome-devtools-mcp@latest"]
OpenCode
Add the following configuration to your opencode.json file. If you don't have one, create it at ~/.config/opencode/opencode.json (guide):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrome-devtools": {
"type": "local",
"command": ["npx", "-y", "chrome-devtools-mcp@latest"]
}
}
}
Qoder
In Qoder Settings, go to MCP Server > + Add > Use the configuration snippet provided above.
Alternatively, follow the MCP guide and use the standard config from above.
Qoder CLI
Install the Chrome DevTools MCP server using the Qoder CLI (guide):
Project wide:
qodercli mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
Globally:
qodercli mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest
Warp
Go to Settings | AI | Manage MCP Servers -> + Add to add an MCP Server. Use the config provided above.
Windsurf
Follow the configure MCP guide using the standard config from above.Your first prompt
Enter the following prompt in your MCP Client to check if everything is working:
Check the performance of https://example.com
Your MCP client should open Brave (or attach to the running instance) 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 Brave DevTools MCP server on its own will not automatically start the browser.
Tools
If you run into any issues, checkout our troubleshooting guide.
- Input automation (10 tools)
- Navigation automation (6 tools)
- Emulation (2 tools)
- Performance (3 tools)
- Network (2 tools)
- Debugging (8 tools)
- Memory (4 tools)
- Extensions (5 tools)
- Third-party (2 tools)
- WebMCP (2 tools)
Configuration
The Brave DevTools MCP server supports the following configuration options:
-
--autoConnect/--auto-connectIf specified, automatically connects to a Brave instance running locally from the user data directory identified by the channel param (default channel is release). Requires the remote debugging server to be started in the Brave instance via brave://inspect/#remote-debugging.- Type: boolean
- Default:
false
-
--browserUrl/--browser-url,-uConnect to a running, debuggable Brave instance (e.g.http://127.0.0.1:9222).- Type: string
-
--wsEndpoint/--ws-endpoint,-wWebSocket endpoint to connect to a running Brave instance (e.g., ws://127.0.0.1:9222/devtools/browser/). Alternative to --browserUrl.- Type: string
-
--wsHeaders/--ws-headersCustom headers for WebSocket connection in JSON format (e.g., '{"Authorization":"Bearer token"}'). Only works with --wsEndpoint.- Type: string
-
--headlessWhether to run in headless (no UI) mode.- Type: boolean
- Default:
false
-
--executablePath/--executable-path,-ePath to custom Brave executable. Can also be set via BRAVE_PATH environment variable.- Type: string
-
--isolatedIf specified, creates a temporary user-data-dir that is automatically cleaned up after the browser is closed. Defaults to false.- Type: boolean
-
--userDataDir/--user-data-dirPath to the user data directory for Brave. Default is $HOME/.cache/brave-devtools-mcp/brave-profile$CHANNEL_SUFFIX_IF_NON_RELEASE- Type: string
-
--channelSpecify a different Brave channel that should be used. The default is the release channel.- Type: string
- Choices:
release,beta,nightly,dev
-
--logFile/--log-filePath to a file to write debug logs to. Set the env variableDEBUGto*to enable verbose logs. Useful for submitting bug reports.- Type: string
-
--viewportInitial viewport size for the Brave instances started by the server. For example,1280x720. In headless mode, max size is 3840x2160px.- Type: string
-
--proxyServer/--proxy-serverProxy server configuration for Brave passed as --proxy-server when launching the browser. See https://www.chromium.org/developers/design-documents/network-settings/ for details.- Type: string
-
--acceptInsecureCerts/--accept-insecure-certsIf enabled, ignores errors relative to self-signed and expired certificates. Use with caution.- Type: boolean
-
--experimentalVision/--experimental-visionWhether to enable coordinate-based tools such as click_at(x,y). Usually requires a computer-use model able to produce accurate coordinates by looking at screenshots.- Type: boolean
-
--experimentalScreencast/--experimental-screencastExposes experimental screencast tools (requires ffmpeg). Install ffmpeg https://www.ffmpeg.org/download.html and ensure it is available in the MCP server PATH.- Type: boolean
-
--experimentalFfmpegPath/--experimental-ffmpeg-pathPath to ffmpeg executable for screencast recording.- Type: string
-
--categoryExperimentalWebmcp/--category-experimental-webmcpSet to true to enable debugging WebMCP tools. Requires Brave with the following flags:--enable-features=WebMCPTesting,DevToolsWebMCPSupport- Type: boolean
-
--braveArg/--brave-argAdditional arguments for Brave. Only applies when Brave is launched by brave-devtools-mcp.- Type: array
-
--ignoreDefaultBraveArg/--ignore-default-brave-argExplicitly disable default arguments for Brave. Only applies when Brave is launched by brave-devtools-mcp.- Type: array
-
--categoryEmulation/--category-emulationSet to false to exclude tools related to emulation.- Type: boolean
- Default:
true
-
--categoryPerformance/--category-performanceSet to false to exclude tools related to performance.- Type: boolean
- Default:
true
-
--categoryNetwork/--category-networkSet to false to exclude tools related to network.- Type: boolean
- Default:
true
-
--categoryExtensions/--category-extensionsSet to true to include tools related to extensions. Note: This feature is currently only supported with a pipe connection. autoConnect, browserUrl, and wsEndpoint are not supported with this feature until 149 will be released.- Type: boolean
- Default:
false
-
--categoryExperimentalThirdParty/--category-experimental-third-partySet to true to enable third-party developer tools exposed by the inspected page itself- Type: boolean
- Default:
false
-
--performanceCrux/--performance-cruxSet to false to disable sending URLs from performance traces to CrUX API to get field performance data.- Type: boolean
- Default:
true
-
--usageStatistics/--usage-statisticsUsage statistics collection (disabled by default in this fork).- Type: boolean
- Default:
false
-
--slimExposes a "slim" set of 3 tools covering navigation, script execution and screenshots only. Useful for basic browser tasks.- Type: boolean
-
--redactNetworkHeaders/--redact-network-headersIf true, redacts some of the network headers considered senstive before returning to the client.- Type: boolean
- Default:
false
Pass them via the args property in the JSON configuration. For example:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--channel=canary",
"--headless=true",
"--isolated=true"
]
}
}
}
Connecting via WebSocket with custom headers
You can connect directly to a Chrome WebSocket endpoint and include custom headers (e.g., for authentication):
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--wsEndpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
"--wsHeaders={\"Authorization\":\"Bearer YOUR_TOKEN\"}"
]
}
}
}
To get the WebSocket endpoint from a running Chrome instance, visit http://127.0.0.1:9222/json/version and look for the webSocketDebuggerUrl field.
You can also run npx chrome-devtools-mcp@latest --help to see all available configuration options.
Concepts
User data directory
brave-devtools-mcp starts a Brave release channel instance using the following user
data directory:
- Linux / macOS:
$HOME/.cache/brave-devtools-mcp/brave-profile-$CHANNEL - Windows:
%HOMEPATH%/.cache/brave-devtools-mcp/brave-profile-$CHANNEL
The user data directory is not cleared between runs and shared across
all instances of brave-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.
Connecting to a running Brave instance
See Mode B: Attach to your existing Brave window in the Setup section above.
For VM-to-host port forwarding issues, see docs/troubleshooting.md.
Debugging on Android
Please consult these instructions (originally written for Chrome, but applicable to any Chromium browser).
Known limitations
See Troubleshooting.
