Chrome Bridge

Your real, logged-in Chrome as an MCP server: 60 tools, 2.75× fewer turns measured. ChromeOS too.

LLM Mart 1 views 7 listing impressions
Transport
Not stated
Package
—
Registry id
io.github.frsorrentino/chrome-bridge

No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.

By frsorrentino · npm chrome-bridge-mcp · not affiliated with other projects named "chrome-bridge".

License: MIT Node 18+ Chrome 135+ Tests Chrome Web Store

Claude Code borrows a tab from the Chrome you are already using — signed in, with your extensions and your cookies — works in it, and hands it back. What only a person can do (a login, a 2FA code, a CAPTCHA, a choice) comes back to you through handoff: a banner in the page, you act, the agent continues.

Measured on a form-filling task: 2.75× fewer turns and 2.28× lower cost than the official browser extension, with ~3× the toolset and no paid plan. 60 web-development tools (navigation, DOM inspection, visual regression, audits, network mocking) over a local WebSocket bridge, plus a headless instance for CI. Self-hosted, local-only. Works on ChromeOS.

The same form filled in 6 turns instead of 16.5 — 2.75× fewer turns, 2.28× lower cost

Quickstart

Requires Node.js 18+ and Chrome 135+.

git clone git@github.com:frsorrentino/chrome-bridge.git
cd chrome-bridge && ./install.sh
  1. Open chrome://extensions, enable Developer mode, click Load unpacked, select the extension/ folder.
  2. Restart Claude Code.

Then ask for something like "open localhost:3000, run an accessibility audit and find the Sign Up button": Claude Code calls navigate, audit and find_text. Because navigate already returns element refs, click(ref="n1") follows with no discovery turn in between.

On ChromeOS/Crostini install from the Chrome Web Store instead: an unpacked extension is dropped on every reboot, because the container isn't mounted when Chrome starts.

install.sh registers the MCP server with --scope user. To do it by hand: claude mcp add --scope user chrome-bridge node /path/to/server/index.js. For execute_js, enable Allow user scripts in chrome://extensions → Chrome Bridge → Details (on Chrome 135-137, enable Developer Mode instead).

As a plugin, without a clone: in Claude Code, /plugin marketplace add frsorrentino/chrome-bridge then /plugin install chrome-bridge@chrome-bridge registers the MCP server from npm (all capabilities) together with the recipes skill; clients that read Agent Plugins 1.0 get the same from plugin.json + mcp.json. The extension still comes from the Web Store or extension/. Pick one path: the plugin and install.sh would register the same server twice.

Your browser, your login

No blank profile, no debugging port, no cloud browser. The extension runs in your Chrome, so every site you are signed into is already open to the agent: webmail, the hosting panel, a client's back office, a staging site behind basic auth. Tabs the agent opens are marked as its own and closed when the session ends; your tabs stay yours.

When a page asks for something only you can give, the agent does not guess and never types credentials. handoff shows a banner in the page with what it needs — "complete the login with your 2FA, then press Done", "click the button you mean" — waits for you, and continues from where you left it, redirects included. It can also ask a question in the banner and read your typed reply, or let you pick one or more elements on the page.

Why Chrome Bridge?

From the project's README.

Related servers

Universal MCP Server with advanced AI memory capabilities and semantic search.

25 views

Semantic search over free-to-use stock photos from 9 libraries: by words, image, or similar.

25 views

Let Codex orchestrate external coding agents through their native harnesses.

24 views

MCP server for MikroTik routers: firewall, NAT, routing, DHCP, DNS, WireGuard and more via SSH.

23 views