MCP server + Chrome MV3 extension

Drive the Chrome you already use.

Let AI agents work in your real, logged-in browser — same cookies, same SSO, no separate profile. Background tabs, trusted input, and multi-agent leases so nothing collides.

$ npx -y @sondv5/browser-mcp@latest
One browser, many agents127.0.0.1
MCP client #1  ──stdio──┐
MCP client #2  ──stdio──┤
MCP client #3  ──stdio──┘
                     │
              hub host  :8787
                     │  WebSocket
              Chrome MV3 extension
                     │  chrome.debugger
              your real Chrome profile

Built for real browsing

Not a headless browser and not a cookie dump. The agent drives the session you are already signed into.

↗

No tab hijacking

Actions run in background tabs. CDP input is delivered silently with focus emulation; your active tab stays yours.

⌘

Trusted input

Real mouse and keyboard events through the DevTools protocol, verified by an in-page probe — not synthetic DOM events.

◎

Multi-agent leases

The first agent to write to a tab owns it; others can still read. Per-client refs and per-tab queues prevent collisions.

⌁

Uploads that work

Attach files to buttons, labels, and hidden inputs by intercepting the native file chooser — no OS dialog.

▤

Inspect everything

Snapshots with element refs, text extraction, screenshots, console output, and a bounded, redacted network capture.

⛨

Local by design

Loopback-only hub, extension-origin checks, optional token, upload allowlists, and no cookie export.

How sharing works

Start one server; every other agent joins the same hub automatically.

First server wins the port

The first MCP server process binds 127.0.0.1:8787 and holds the single extension connection. Later processes detect the port and become guests — no extra configuration.

  • Stable clientId per agent connection.
  • Per-client snapshots and element refs.
  • 5-minute tab leases with an explicit release action.
  • Write commands on one tab are queued, never interleaved.
Tab lifecyclesafe by default
agent A  ── click ──▶  owns tab 42
agent B  ── snapshot ─▶  allowed (read)
agent B  ── click ──▶  blocked: owned by A
agent A  ── release ─▶  free
agent B  ── click ──▶  owns tab 42

Quickstart

Three steps, no clone required.

Install the extension

Add Browser MCP Bridge from the Chrome Web Store, open the popup, and click Save & reconnect. Badge ON means connected.

Chrome Web Store

Register the MCP server

opencode (opencode.json):

{
  "mcp": {
    "browser": {
      "type": "local",
      "command": [
        "npx", "-y", "@sondv5/browser-mcp@latest",
        "--extension-id", "ieijpbldkdjgncbbjndoolkkgaamlocl"
      ],
      "enabled": true
    }
  }
}

Claude Code:

claude mcp add browser -- npx -y @sondv5/browser-mcp@latest --extension-id ieijpbldkdjgncbbjndoolkkgaamlocl

Restart your agent

The agent can now list tabs, take a snapshot, click, type, upload, inspect network traffic, and run in parallel with other agents.

Seven tools, one action field

A small surface that is easy for models to use — and easy for you to audit.

Tool Actions
browser_tab list, open, close, activate, navigate, back, forward, reload, release, detach
browser_act click, type, press_key, hover, scroll, select, upload, dialog
browser_read snapshot, find, get_text, evaluate, wait, console, screenshot
browser_network start, list, get, stop
browser_download start, list, status, cancel
browser_server_status hub role, extension state, pending calls, your client id
browser_cdp raw CDP escape hatch

Security you can reason about

Local-only by default, with explicit opt-ins for file access.

127.0.0.1 only chrome-extension:// origin check optional local token upload directory allowlist download path containment password redaction no cookie export MIT licensed