cdp-browser-mcp
MCP server that attaches to already-running Chromium browsers via CDP, enabling agents to control multiple browser sessions for navigation, input, network capture, and automation while avoiding anti-bot detection with Patchright.
README
cdp-browser-mcp
MCP server that attaches to an already-running Chromium browser over the Chrome DevTools Protocol (CDP). It does not launch a browser. One process can hold many sessions, so an agent can drive several profiles at once.
Works with:
- Chrome / Edge started with
--remote-debugging-port=9222 - Fingerprint browsers (AdsPower, BitBrowser, GoLogin, Multilogin, …)
- Cloud or local CDP endpoints (
http://127.0.0.1:9222,ws://…)
Uses Patchright (connectOverCDP) so the attached context is less likely to be patched by anti-bot checks than stock Playwright.
Install from GitHub (no npm publish). Requires Node.js 18+. No Chromium download is needed.
npx -y github:killaragorn/cdp-browser-mcp
Cursor
Add to ~/.cursor/mcp.json (or project .cursor/mcp.json):
{
"mcpServers": {
"cdp-browser-mcp": {
"command": "npx",
"args": ["-y", "github:killaragorn/cdp-browser-mcp"]
}
}
}
Claude Desktop
Add to claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cdp-browser-mcp": {
"command": "npx",
"args": ["-y", "github:killaragorn/cdp-browser-mcp"]
}
}
}
Claude Code
claude mcp add --scope user cdp-browser-mcp -- npx -y github:killaragorn/cdp-browser-mcp
Or commit .mcp.json in a project so teammates get the same server:
{
"mcpServers": {
"cdp-browser-mcp": {
"command": "npx",
"args": ["-y", "github:killaragorn/cdp-browser-mcp"]
}
}
}
Codex
codex mcp add cdp-browser-mcp -- npx -y github:killaragorn/cdp-browser-mcp
Or add to ~/.codex/config.toml:
[mcp_servers.cdp-browser-mcp]
command = "npx"
args = ["-y", "github:killaragorn/cdp-browser-mcp"]
Local clone
git clone https://github.com/killaragorn/cdp-browser-mcp.git
cd cdp-browser-mcp
npm install
Then point the client at node /absolute/path/to/cdp-browser-mcp/index.mjs.
Typical flow
- Start a browser with CDP, for example:
chrome --remote-debugging-port=9222
Or copy the debug URL from AdsPower / BitBrowser (often http://127.0.0.1:xxxx).
- Ask the agent to connect, then operate the page:
cdp_connect→{ "cdp_url": "http://127.0.0.1:9222", "capture_dir": "D:/captures/run1" }- or
cdp_network_startwithdirafter connect - Each request is saved as
{dir}/000001_GET_host-path.jsonplusrequests.jsonl cdp_closewhen finished
Tools
Connect first with cdp_connect. Network capture stays off unless you pass capture_dir or call cdp_network_start.
Session / navigation
| Tool | Purpose |
|---|---|
cdp_connect |
Attach to a CDP URL; optional capture_dir starts saving requests to that folder |
cdp_navigate |
Open a URL |
cdp_reload |
Reload |
cdp_go_back |
History back |
cdp_page_info |
URL, title, frames |
cdp_content |
Page HTML or a selector's innerHTML |
cdp_screenshot |
PNG screenshot |
cdp_list_sessions |
List active sessions |
cdp_close |
Disconnect one session |
Input
| Tool | Purpose |
|---|---|
cdp_click |
Click selector or (x, y); button, click_count, modifiers |
cdp_hover |
Hover a selector |
cdp_mouse_move |
Move mouse to coordinates |
cdp_type |
Input text: mode=fill / type (key events) / insert (paste-like); optional press_enter |
cdp_press |
Key or shortcut: Enter, Tab, Control+A |
cdp_select |
<select> by value / label / index |
cdp_check |
Check or uncheck |
cdp_upload |
File input (files are local paths on the MCP host) |
cdp_scroll |
Into view, mouse wheel, or scrollTo |
cdp_evaluate |
Run JavaScript |
cdp_wait |
Wait for a selector or a timeout |
Network
Capture is off by default. Pass capture_dir on connect, or call cdp_network_start. Every matching request is written to disk with no count limit. xhr/fetch/document/JSON response bodies are stored in full.
{capture_dir}/
capture.json
requests.jsonl
000001_GET_example.com-.json
000002_POST_api.example.com-login.json
| Tool | Purpose |
|---|---|
cdp_network_start |
Start capture into dir; optional url_contains / method / resource_type |
cdp_network_stop |
Stop capture; files on disk are kept |
cdp_network_log |
List saved files (default last 50 summaries) |
cdp_wait_response |
Wait for a response whose URL contains a string |
Cookies
| Tool | Purpose |
|---|---|
cdp_get_cookies |
Read cookies |
cdp_set_cookies |
Write cookies |
Why this exists
@playwright/mcp launches (or binds) a single browser from CLI flags. This server is the opposite shape:
- Connect is a tool, not a startup flag — the agent picks the CDP URL at runtime
- Many sessions in one MCP process (one AdsPower profile per
session_id) - Patchright instead of Playwright, aimed at already-fingerprinted browsers
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.