remix-browser
Blazing fast headless Chrome automation via CDP — no extension needed.
Installation ·
Tools ·
Configuration ·
Architecture

A Rust-native MCP server that gives AI agents full control over a real Chrome browser through the Chrome DevTools Protocol. No browser extensions, no Puppeteer, no Node.js — just a single binary that speaks CDP.
Benchmarks
_See dev-browser-eval for methodology. The model used was sonnet 4.5
Why remix-browser?
| remix-browser | Extension-based MCPs | Puppeteer wrappers |
|---|
| Startup | Single binary, instant | Requires browser extension install | Node.js + npm install |
| Reliability | Hybrid click strategy with automatic fallback | Extension message passing | Basic click only |
| Multi-tab | Built-in tab pool management | Limited by extension API | Manual page tracking |
| Network capture | First-class network monitoring | Not available | Requires extra setup |
| Console logs | Built-in capture with filtering | Not available | Requires extra setup |
| Selectors | CSS + Text + XPath | CSS only | CSS + XPath |
| Language | Rust (fast, safe, single binary) | JavaScript | JavaScript |
Installation
Claude Code Plugin (recommended)
/plugin marketplace add hkd987/remix-browser
/plugin install remix-browser@hkd987-remix-browser
That's it — the binary downloads automatically on first use. No Rust required.
Download pre-built binary
curl -fsSL https://raw.githubusercontent.com/hkd987/remix-browser/main/scripts/install.sh | sh
From source
git clone https://github.com/hkd987/remix-browser.git
cd remix-browser
cargo build --release
Requirements
- Google Chrome or Chromium installed (auto-detected)
- Rust 1.88+ only needed if building from source
Quick Start
Add to Claude Code
Add to your Claude Code MCP config (~/.claude/mcp.json):
{
"mcpServers": {
"remix-browser": {
"command": "/path/to/remix-browser"
}
}
}
That's it. Claude now has a browser.
Headed mode (see what's happening)
{
"mcpServers": {
"remix-browser": {
"command": "/path/to/remix-browser",
"args": ["--headed"]
}
}
}
Connect to your existing browser
Chrome 144+ has a built-in toggle that lets any agent connect to your running browser — no extensions needed.
- Open
chrome://inspect/#remote-debugging in Chrome
- Enable the remote debugging toggle
- Connect remix-browser:
{
"mcpServers": {
"remix-browser": {
"command": "/path/to/remix-browser",
"args": ["--cdp-url", "ws://127.0.0.1:9222"]
}
}
}
Or use an environment variable:
{
"mcpServers": {
"remix-browser": {
"command": "/path/to/remix-browser",
"env": {
"CDP_URL": "ws://127.0.0.1:9222"
}
}
}
}
HTTP URLs also work — the WebSocket URL is auto-discovered from /json/version:
CDP_URL=http://127.0.0.1:9222 remix-browser
When connected to an external browser, remix-browser uses your existing tabs and gracefully disconnects on exit without closing Chrome.
Best performance tip
For the best experience, add this line to your project's CLAUDE.md (or ~/.claude/CLAUDE.md for all projects):
When I ask to use Chrome or browser automation, use remix-browser MCP tools.
For 1-2 simple actions, granular tools are fine.
For workflows with 3+ actions, loops, or extraction, prefer `run_script`.
Use `fill` for setting any form control — it auto-detects input type (text, select, checkbox, range slider).
Snapshots auto-append after every tool call, so [ref=eN] selectors are always fresh.
This tells Claude to automatically reach for remix-browser whenever you mention browser tasks — no need to say "remix-browser" by name.
Performance Usage Pattern