Chrome Bridge
Chrome Bridge is an MCP server that connects Claude Code to a real Chrome browser via a local WebSocket bridge, providing ~60 specialized tools for web automation, testing, and analysis.
Navigation & Tab Management
Navigate to URLs, create/close/activate/reload tabs, go back/forward
List all open tabs and frames (main + iframes) for targeting nested content
Interaction & Form Control
Click, type, hover, press keys, scroll, drag-and-drop, upload files
Batch-fill entire forms and submit in one call; dismiss cookie banners, overlays, and JS dialogs
DOM Inspection & Manipulation
Read page content as text, HTML, or accessibility tree
Query/modify DOM elements, inject CSS, highlight elements, watch mutations, measure spacing
Find text with context and list all actionable elements (buttons, links, inputs)
JavaScript Execution & Debugging
Run arbitrary JS in the page, read console logs, list event listeners
Monitor network requests (XHR/fetch/all), WebSocket connections, export as HAR
Get performance metrics and Core Web Vitals (CLS, LCP, FCP, TTFB)
Network Mocking & Control
Block, redirect, stub, or modify request/response headers (survives reloads)
Make HTTP requests using the user's session cookies; set HTTP auth credentials
Visual & Responsive Testing
Take viewport, element, or full-page stitched screenshots
Visual regression: save baselines and compare with pixel-diff highlighting
Resize viewport, set zoom, emulate color scheme/reduced motion/print, override geolocation
Audits
Accessibility audit (alt text, ARIA, contrast, form labels, heading hierarchy)
SEO audit (title/description, canonical, Open Graph, JSON-LD)
Security headers audit (CSP, HSTS, clickjacking protection)
Check links for broken URLs, detect unused CSS
Structured Data Extraction
Extract HTML tables as JSON with server-side row filtering
Extract repeated structured data (cards, lists) with field mappings in one call
State, Storage & Session Management
Read/write/delete localStorage, sessionStorage, and cookies
Save/restore named session fixtures (e.g. logged-in state), save pages as MHTML
List and wait for file downloads
Automation & CI
Wait for elements, JS conditions, navigations, or network idle
Assert page conditions (existence, visibility, text, URL) with polling
Record sessions as replayable JSONL files and replay via CLI without a model
Launch a dedicated headless Chromium instance with an ephemeral profile for isolated CI runs
Chrome Bridge
An MCP server that gives Claude Code your real, logged-in Chrome — measured 2.75× fewer turns and 2.28× lower cost than the official "Claude in Chrome" extension on a form-filling task, with ~3× the toolset and no paid plan.
63 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.

Quickstart
Requires Node.js 18+ and Chrome 135+.
git clone git@github.com:frsorrentino/chrome-bridge.git
cd chrome-bridge && ./install.shOpen
chrome://extensions, enable Developer mode, click Load unpacked, select theextension/folder.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,
accessibility_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).
Related MCP server: OpenBrowser
Why Chrome Bridge?
Chrome Bridge | Claude in Chrome | Chrome DevTools MCP | Playwright MCP | |
ChromeOS / Crostini | Yes (real host) | No | Container only | Container only |
Tools | 63 (34 core) | ~20 | ~50 | 23 core (71 total) |
Requires paid plan | No | Yes (Pro+) | No | No |
Network mocking | Yes (stub/headers) | No | No | Yes |
Visual regression | Yes ( | No | No | No |
Audits (a11y/SEO/sec) | Yes (full suite) | No | Partial | No |
Headless / CI | Yes | No | Yes | Yes |
GIF / video | No | Yes | Partial | No |
Breakpoints / heap | No | No | Yes | No |
It wins on round trips, not payload size: short element refs instead of the
screenshot-and-click loop, fill_form filling N fields in one call, table
filtering done server-side. Per single turn it actually costs slightly more.
The full benchmark — method, every raw run including the unfavourable ones, and what the harness can't measure — is in docs/EFFICIENCY.md.

Using it
Beyond the MCP tools, two lanes keep work away from the model entirely.

CLI — batch operations, piped through grep or jq before anything reaches
the context:
chrome-bridge navigate --url https://example.com
chrome-bridge read_console --level error | head -20
chrome-bridge assert --selector "#success" --text "Done"
chrome-bridge replay --file ./recordings/login.jsonlLaunch mode — a dedicated Chromium instance with an ephemeral profile, for isolated sessions or CI:
node server/index.js --launch --headlessPair it with session_record + replay for smoke tests with no model in the
loop. In launch mode execute_js falls back to new Function when the
user-script toggle isn't available.
Tools
63 in total, in seven groups. Only core (34 tools) loads by default; the rest
are opt-in via --caps.

Group | N | What's in it |
Core & Navigation | 9 | tabs, windows, |
Interaction | 11 |
|
DOM & Inspection | 11 |
|
Debugging & Network | 9 |
|
Visual & Responsive | 7 |
|
Audits | 6 | a11y, SEO, security headers, links, |
State, Storage & Files | 9 | storage, fixtures, MHTML, recording, |
Every tool, with the notes that matter: docs/TOOLS.md.
How it works

Claude Code <--stdio--> MCP Server <--WebSocket :8765--> Chrome Extension
(server/) (extension/, MV3)The Node.js server handles the protocol and tool logic; the MV3 extension
executes commands through Chrome APIs. User scripts (execute_js) run via
chrome.userScripts.execute().
Configuration and security
Environment variables, each with a matching CLI flag:
Variable | Default | Notes |
|
| |
|
|
|
| unset | Required on both |
|
|
|
The bridge binds loopback, accepts extension connections only from a
chrome-extension:// origin, and — when a token is set — requires it on both
handshakes. Without one, any local process could act as a relay and reach
execute_js inside your authenticated browser session. Secondary MCP instances
connect via loopback and are acknowledged with relay_init_ok, so a foreign
process holding the port fails fast instead of timing out per command.
What is not protected: page content reaches the model unfiltered, so a
hostile page's text is untrusted input. get_storage, session_fixture, HAR
exports and screenshots are not redacted and may carry cookies, tokens or
personal data. Don't point the automation at pages holding secrets you wouldn't
paste into a chat.
Troubleshooting
Symptom | Cause / fix |
| Extension disabled, or its port differs from the server's. The error names the actual host/port; check them in the popup (⚙). |
Port 8765 already in use | Expected: a second MCP session becomes a relay and shares the one bridge. Set |
| Something else owns the port. Free it or change |
| Enable Allow user scripts in |
| The page was opened before the extension, "Capture console & metrics" is off, or the page isn't injectable ( |
Screenshot times out | On ChromeOS a fully occluded window stops producing frames; captures fail after 10s. Bring the window forward. |
Commands work, then stop | The MV3 service worker restarted and in-memory state (network log, diff baselines, HTTP auth) was reset. Re-run the monitoring call. |
Extension dropped on every ChromeOS reboot | Install from the Web Store instead of Load unpacked. |
Tool missing from the list | It's in an opt-in group. Check |
Documentation
docs/TOOLS.md — all 63 tools, by group
docs/EFFICIENCY.md — the benchmark and the design behind it
bench/RESULTS.md — raw runs and inclusion rule
Tests
npm test (Chrome-free, ~22s) · npm run test:e2e (needs Chrome and a
connected extension) · npm run measure (schema cost).
License
MIT
Maintenance
Related MCP Servers
- Alicense-qualityAmaintenancesingle-binary MCP server that gives AI agents a browser. 66 tools for navigation, form filling, data extraction, screenshots, and DOM diffing — built on pure Chrome DevTools Protocol.7MIT
- Alicense-qualityBmaintenanceA zero-dependency MCP server that drives a real Chrome browser through a companion extension, enabling AI agents to automate real user sessions with trusted input events, compact accessibility-tree snapshots, and 14 tools for navigation, interaction, scripting, and inspection.671MIT

crawlio-browserofficial
Alicense-qualityAmaintenanceMCP server that gives AI full control of a live Chrome browser via CDP, with 145 tools for framework-aware intelligence, evidence analysis, and SEO auditing. Connects to your existing Chrome via an extension, enabling interaction with dynamic and authenticated web pages.1,5644Apache 2.0- Alicense-qualityBmaintenanceLocal MCP server for persistent Chrome automation with multi-profile support, enabling tab management, page inspection, element interaction, JavaScript evaluation, and screenshots while preserving login sessions across restarts.1801MIT
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/frsorrentino/chrome-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server