chrome-devtools-mcp-wrapper
Provides shared browser automation and control for Google Chrome through the Chrome DevTools Protocol, allowing multiple MCP clients to launch, attach to, and interact with the same Chrome instance.
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., "@chrome-devtools-mcp-wrapperOpen http://localhost:3000 and capture console logs"
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.
chrome-devtools-mcp-wrapper
Share one Chrome across all your AI coding sessions.
A thin proxy wrapper around Google's chrome-devtools-mcp that adds what the upstream server assumes away: multiple MCP clients are going to run at the same time, and they shouldn't each own a browser.
omp ─┐
claude ├─ stdio ──▶ chrome-devtools-mcp-wrapper ── npx ──▶ chrome-devtools-mcp ──CDP──▶ Chrome (shared)
cursor ┘ lifecycle · filtering · (official, unmodified)
anti-detect · loggingThe problem
chrome-devtools-mcp is a single-client server: every MCP client that spawns it launches its own Chrome instance. Run three AI assistants (or three sessions of one) and you get three browsers competing for memory — each with a separate profile, separate login state, and no coordination on shutdown.
Related MCP server: js-reverse-mcp
What this adds
Capability | What it does |
Chrome lifecycle & refcounting | First client launches Chrome; later clients attach to the same instance via a PID-verified lock file. The browser shuts down only when the last client disconnects. Works across different MCP clients and across sessions. |
Anti-detect launch | Hides automation flags ( |
Tool filtering |
|
Custom tools |
|
Structured logging | Per-session log files with size caps, rotation and rate limiting under |
The upstream server itself runs unmodified — the wrapper spawns it via npx chrome-devtools-mcp@latest, wires its Chrome connection, and filters what passes through.
Requirements
Node ≥ 18
Google Chrome (any recent stable; the wrapper locates it, including Playwright-managed installs)
npx(bundled with npm) — the upstream server is fetched on first run
Quickstart
git clone https://github.com/CornWorld/chrome-devtools-mcp-wrapper.git
cd chrome-devtools-mcp-wrapper
npm install
# smoke test: launches Chrome (or reuses a running one) and starts the proxy
npm start -- --profile=defaultRegister it with your MCP client instead of the plain server. For Claude-style mcp.json:
{
"mcpServers": {
"chrome-devtools": {
"command": "node",
"args": [
"/absolute/path/to/chrome-devtools-mcp-wrapper/index.mjs",
"--profile=default"
]
}
}
}For OMP, put the same block in ~/.omp/agent/mcp.json (user scope — applies to every project) or <project>/.omp/mcp.json (project scope).
See .mcp.json.example for a config with tool filtering and debug logging enabled.
CLI reference
node index.mjs [options] [-- upstream-args...]Flag | Effect |
| Named Chrome profile. All clients using the same name share one browser instance. Omitted → |
| Headless (default) vs. visible browser window. |
| Hide the named upstream tools from clients. |
| Inverse: expose only these tools (wins over |
| JS module exporting custom MCP tool definitions to register. |
| Append a raw Chrome launch arg (repeatable). |
| Don't manage a browser; connect to an existing one via |
| CDP endpoint of an externally managed Chrome (with |
| Verbose wrapper logging (or |
| Anything after |
Profiles
A profile is a Chrome user-data directory plus a lock file. Clients that agree on a profile name share its browser; different profiles mean different browsers (useful to isolate work projects from personal ones, or headed from headless).
--profile=workand--profile=personal→ two independent Chrome instancesno flag →
shared-lite, one instance for everythingprofile state (lock files, user-data dirs) lives under
~/.cache/cdp-wrapper/
Upstream version policy
The wrapper launches the upstream server with npx chrome-devtools-mcp@latest and currently passes --experimentalPageIdRouting / --experimentalStructuredContent. This means:
upstream fixes and features arrive automatically; no version pin to maintain
but an upstream breaking change to those experimental flags can break the wrapper on a fresh
npxfetch. If you need stability, changeupstreamArgsinindex.mjsto a pinned version (chrome-devtools-mcp@1.8.0).
Logging
Each session writes ~/.cache/cdp-wrapper/logs/wrapper-YYYYMMDD-HHMMSS-<pid>.log (path also printed to stderr at startup). Tunables via environment:
Var | Default | Meaning |
|
| log directory |
| 10485760 | rotate threshold per file |
| 5 | rotated files kept per session |
| 200 / 1000 | write-rate circuit breaker |
| — |
|
Notes & disclaimers
The anti-detect layer exists to keep automation from being needlessly flagged while testing your own sites and apps. Using it against services you don't have permission to automate may violate their terms of service — that's on you.
The wrapper is a transparent pass-through for MCP traffic; it does not inspect or alter tool results beyond dropping filtered tools.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables multiple MCP clients to share a single Chrome instance while maintaining isolated tab sessions for each client. It acts as a multiplexer between clients and the chrome-devtools-mcp server, preventing tab conflicts across different sessions like Claude Code windows.2911 npm5Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Chrome DevTools Protocol-based MCP server that enables AI coding assistants to control browsers for JavaScript debugging, reverse engineering, web scraping, and API debugging.1,580 npm1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server enabling AI agents to control and inspect Chrome/Arc browsers via DevTools, with Arc-specific tab reuse.24 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server that lets coding agents control and inspect live Chrome browsers, providing full Chrome DevTools capabilities for automation, debugging, and performance analysis.1,516,489 npmApache 2.0