browser-mcp-cdp
Allows an AI agent to access and interact with Gmail through a locally controlled Chrome browser, using the user's logged-in session without modifying the real Chrome profile.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@browser-mcp-cdp check my Gmail inbox"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
browser-mcp-cdp
A Model Context Protocol (MCP) server that drives your real local Chrome via the Chrome DevTools Protocol. Designed for agents that need access to your logged-in sessions (Gmail, internal dashboards, banking, etc.) without uploading credentials to a cloud service.
Why another browser MCP?
Different tradeoffs from the alternatives:
browser-mcp-cdp | Playwright MCP | Chrome DevTools MCP | |
Browser | Your local Chrome | Managed Playwright Chromium | Your local Chrome |
Login state | ✅ Snapshot of your profile (cookies, logins, IndexedDB) | ❌ Fresh profile | ✅ Real profile (modifies it) |
Profile isolation | ✅ Copy-on-start, real profile untouched | N/A | ⚠️ Direct attach |
Multi-client | ✅ Shared broker across MCP clients | ❌ Per-client | ❌ Per-client |
Dependencies | Node only (no Playwright download) | Playwright + browsers | Node only |
The profile snapshot pattern means you can ask an agent to "check my email" — it sees your Gmail logged in — but the agent's actions never modify your real Chrome profile. Each session gets a disposable copy.
Related MCP server: CloakBrowser MCP
Install
claude mcp add browser -- npx -y browser-mcp-cdpOr add manually to ~/.claude.json / Claude Desktop config:
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["-y", "browser-mcp-cdp"]
}
}
}Requires Node 18+ and Google Chrome installed.
Tools
Tool | Purpose |
| Load a URL, return final URL + title |
| Run JS in the page, return result |
| PNG of current page |
| Click via CSS selector |
| Click at pixel coordinates (pierces iframes / overlays) |
| Set value on input/textarea/select |
| Wait for a selector to appear |
| Current URL |
| Visible text of page or element |
|
|
| Scroll by |
| List open tabs |
| Open a new tab |
Environment variables
Var | Default |
| Auto-detected per OS |
| OS-standard Chrome profile dir |
|
|
|
|
|
|
How it works
First MCP client connection spawns a broker subprocess (detached).
Broker copies your Chrome profile's cookies/local storage/login data to a temp dir.
Broker launches Chrome with
--user-data-dir=<temp>and--remote-debugging-port.Subsequent MCP clients connect to the same broker over a Unix socket → they share one Chrome.
Broker exits after
BROKER_IDLE_TIMEOUT_MSof no activity; temp profile is deleted.
Security
This server lets an LLM execute arbitrary JavaScript in a browser that is logged into your accounts. Only use with models and prompts you trust. Profile snapshotting limits damage (no persistent mutations to your real Chrome), but the agent can read cookies, session tokens, and any data visible to logged-in you for the duration of the session.
License
MIT
Available Tools
13 toolsbrowser_clickB
Click an element matched by a CSS selector. Returns true if found and clicked.
Inputs: selector (required).
browser_click_atA
Click at an absolute (x, y) pixel coordinate on the page using real CDP mouse events. Pierces through iframes and ad overlays that block CSS-selector clicks.
Inputs: x (required), y (required).
browser_evaluateA
Execute JavaScript in the current page context and return the result. Use await_promise=true (default) for async expressions.
Inputs: expression (required), await_promise.
browser_fillB
Set the value of an input, textarea, or select element matched by a CSS selector.
Inputs: text (required), selector (required).
browser_get_htmlB
Get the outer HTML of the page or a specific element.
Inputs: selector.
browser_get_textA
Get the visible text content of the page or a specific element.
Inputs: selector.
browser_get_urlA
Get the current page URL.
Inputs: no named parameters.
browser_new_tabB
Open a new browser tab, optionally navigating to a URL.
Inputs: url.
browser_screenshotA
Capture a screenshot of the current page. Returns a PNG image.
Inputs: no named parameters.
browser_scrollB
Scroll the page by a relative offset in pixels.
Inputs: x, y.
browser_tabsA
List all open browser tabs with their id, url, and title.
Inputs: no named parameters.
browser_wait_forA
Wait until an element matching the CSS selector appears in the DOM. Returns true if found within the timeout, false otherwise.
Inputs: selector (required), timeout_ms.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct action (navigate, click, fill, etc.) with clear boundaries. No two tools do the same thing; even click variants differ by selector vs coordinates.
All tools use the 'browser_' prefix with a consistent verb_noun pattern (e.g., get_url, click_at). The only outlier is 'browser_tabs' which uses a noun instead of a verb, but it's still clear.
13 tools is well-scoped for browser automation, covering navigation, interaction, content extraction, scrolling, and tab management without being overwhelming.
Covers most core browser operations (navigate, click, fill, read, screenshot, JS eval). Minor gaps like back/reload or cookie handling exist but are not critical for typical use cases.
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Let your AI agent operate any website through a real, logged-in browser session.
Let AI agents use your real, signed-in Chrome: tabs, clicks, forms, screenshots and video.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to drive a Chromium-based browser for web research, testing, and automation with Playwright-compatible tools, persistent profiles, proxy matching, extension loading, and humanized input across local or containerized deployments.280 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.1 npmISC
- AlicenseNot gradedqualityAmaintenanceLets AI coding tools drive the user's already-signed-in Chrome browser — reading and snapshotting pages, clicking, typing, uploading files, screenshotting, and inspecting tabs, cookies, console, and network traffic. It works through a local Chrome extension bridge, so no remote debugging port is opened and the real, authenticated browser session is used.1 npmISC