Browser Bridge MCP
This server lets an AI assistant drive a real Chrome browser through an extension bridge — navigating, inspecting, and interacting with live pages.
Check connection/status —
browser_statusconfirms the extension is connected and reports active tab info.Navigate —
browser_navigatesends a tab to any URL.Screenshot —
browser_screenshotcaptures the visible area of a tab (PNG or JPEG with quality control).Run JavaScript —
browser_evaluateexecutes expressions in a tab and returns JSON-serializable results.Click elements —
browser_clickclicks via CSS selector.Fill forms —
browser_fillsets input values (React-compatible) by CSS selector.Read content —
browser_get_contentextracts text or HTML from a page or specific element.List tabs —
browser_get_tabsenumerates all open tabs.Read console logs —
browser_get_consoleretrieves captured console entries, optionally clearing them.Wait for elements —
browser_wait_forpolls until a selector appears, with a configurable timeout.Send custom messages —
browser_send_messagepasses arbitrary typed payloads to the extension for extensibility.Guided workflows — bundled
browseandqa-runnerprompts provide structured browsing and pass/fail QA checklist execution.
All tab-targeting tools accept an optional tabId and default to the active tab.
Enables AI assistants to control the Arc browser via MCP, supporting navigation, clicking, form filling, JavaScript execution, screenshots, and content extraction.
Enables AI assistants to control the Brave browser via MCP, supporting navigation, clicking, form filling, JavaScript execution, screenshots, and content extraction.
Enables AI assistants to control the Opera browser via MCP, supporting navigation, clicking, form filling, JavaScript execution, screenshots, and content extraction.
Enables AI assistants to control the Vivaldi browser via MCP, supporting navigation, clicking, form filling, JavaScript execution, screenshots, and content extraction.
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., "@Browser Bridge MCP Go to google.com and search for MCP servers"
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.
Browser Bridge MCP
MCP server that gives AI coding assistants direct control of a real Chrome browser — navigate, click, fill forms, run JavaScript, take screenshots, and read page content. It exists so your assistant can see what you see, instead of you alt-tabbing to copy-paste errors and describe UI state in words.
MCP Client ←(stdio)→ mcp-browser-bridge ←(WebSocket :7483)→ Browser Extension ←(Chrome APIs)→ BrowserWorks with any MCP-compatible client: Claude Code, Cursor, Windsurf, Cline, and others.
Quick Start
1. Install the extension
Load it as an unpacked extension:
Download or clone this repo.
Open
chrome://extensionsand enable Developer mode.Click Load unpacked and select the
extension/folder.
Works in any Chromium browser: Chrome, Brave, Edge, Arc, Vivaldi, Opera.
2. Add to your MCP client
Run:
claude mcp add browser-bridge -- npx -y mcp-browser-bridgeOr add to .mcp.json:
{
"mcpServers": {
"browser-bridge": {
"command": "npx",
"args": ["-y", "mcp-browser-bridge"]
}
}
}Add to .cursor/mcp.json:
{
"mcpServers": {
"browser-bridge": {
"command": "npx",
"args": ["-y", "mcp-browser-bridge"]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"browser-bridge": {
"command": "npx",
"args": ["-y", "mcp-browser-bridge"]
}
}
}In the Cline pane, open MCP Servers → Configure MCP Servers to edit cline_mcp_settings.json, and add:
{
"mcpServers": {
"browser-bridge": {
"command": "npx",
"args": ["-y", "mcp-browser-bridge"]
}
}
}Use npx -y mcp-browser-bridge as the server command in your client's MCP configuration. The server communicates over stdio.
3. Verify
Start your MCP client. The extension popup should show a green Connected indicator. Call the browser_status tool to confirm.
Related MCP server: browser-mcp
Available Tools
All tools accept an optional tabId parameter. When omitted, they target the active tab.
Tool | Description |
| Check if the extension is connected and get active tab info |
| Navigate a tab to a URL |
| Capture a screenshot of the visible area of a tab |
| Execute JavaScript in a tab and return the result |
| Click an element by CSS selector |
| Fill a form field by CSS selector (React-compatible) |
| Get the text or HTML of a page or element |
| List all open browser tabs |
| Get captured console log entries from a tab |
| Wait for a CSS selector to appear on the page |
| Send a custom message to the extension |
Included Prompts
The server ships two MCP prompts that provide guided workflows to any connected client:
Prompt | Description |
| General-purpose browser interaction — navigating, clicking, filling forms, screenshotting, running JS. Accepts an optional |
| Structured QA checklist execution — drives the browser through test scenarios defined in markdown and reports pass/fail results. Accepts an optional |
In Claude Code, these appear as slash commands: /browser-bridge:browse and /browser-bridge:qa-runner.
Configuration
The WebSocket port defaults to 7483. To change it:
Server side: Set the
BRIDGE_WS_PORTenvironment variable in your MCP config.Extension side: Change the port in the extension popup and click Reconnect.
Security
WebSocket binds to
127.0.0.1only — no network exposure.The server accepts exactly one origin, this project's extension at
chrome-extension://oohfadbpiimgdciaopnehkldlakgdmhf. It refuses everything else with HTTP 403: other extensions' origins, web pages, and clients that send noOriginheader.The extension ID is stable because
extension/manifest.jsonpins a publickey. Chromium derives an extension's ID from that key, so every unpacked install gets the same ID regardless of which folder you load it from. Don't remove or change thekey, or the server will refuse the extension.Single extension client at a time.
The origin check stops websites, and extensions that connect under their own origin, from driving your browser through the bridge. Origin is still a header the client asserts, so the check has limits:
A program running on your machine as your user can send any
Originit likes, and such a program could control your browser by other means anyway.An installed extension that can rewrite request headers might be able to forge the
Origin.
Only install extensions you trust alongside this one.
Troubleshooting
Extension shows "Disconnected" Check that the MCP server is running and the port is free:
# macOS/Linux
lsof -i :7483
# Windows
netstat -aon | findstr :7483Tools return "No extension connected" Open the extension popup and click Reconnect.
Server logs Rejected connection from origin, or browser_status says an extension was refused
The extension's ID doesn't match the one the server accepts. This happens if you're running an extension copy from before 1.2.3, or one whose manifest.json has had its key removed. Update your copy of the repo, then in chrome://extensions remove the old Browser Bridge MCP and Load unpacked the extension/ folder again. Its ID should read oohfadbpiimgdciaopnehkldlakgdmhf.
Screenshots fail The target tab must be visible and focused. Background or minimized tabs cannot be captured.
browser_evaluate returns unexpected results
Results must be JSON-serializable. Promises return {} — use synchronous expressions or await inside an IIFE and return a plain value.
Development
git clone https://github.com/adbarc92/mcp-browser-bridge.git
cd mcp-browser-bridge
npm install
npm run build
npm test # 67 tests via VitestLoad the extension locally via chrome://extensions → Load unpacked → select extension/.
The repo includes a .mcp.json configured for local development.
License
MIT
Available Tools
11 toolsbrowser_clickB
Click an element on the page identified by a CSS selector
Inputs: selector (required), tabId.
browser_evaluateB
Execute JavaScript in the context of a browser tab and return the result
Inputs: expression (required), tabId.
browser_fillB
Fill a form field with the specified value
Inputs: value (required), selector (required), tabId.
browser_get_consoleB
Get captured console log entries from a tab
Inputs: clear, tabId.
browser_get_contentA
Get the HTML or text content of a page or specific element
Inputs: tabId, format, selector.
browser_get_tabsA
List all open browser tabs
Inputs: no named parameters.
browser_screenshotB
Capture a screenshot of the visible area of a browser tab
Inputs: tabId, format, quality.
browser_send_messageC
Send a custom message to the Chrome extension for extensibility
Inputs: type (required), data.
browser_statusA
Check if the Chrome extension is connected and get active tab info
Inputs: no named parameters.
browser_wait_forB
Wait for an element matching a CSS selector to appear on the page
Inputs: selector (required), tabId, timeout.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose, such as navigating, clicking, filling, taking screenshots, evaluating JavaScript, etc. There is no overlap or ambiguity between tool functions.
All tools follow a consistent 'browser_<verb>' pattern (e.g., browser_navigate, browser_click), making the naming predictable and easy to understand.
With 11 tools, the server covers essential browser automation actions without being overwhelming. The count is well-scoped for the domain.
The tool set covers core browser operations (navigation, content retrieval, interaction, screenshots, JavaScript evaluation, tab listing, waiting, console logs). However, minor gaps like back/forward navigation, tab closing, or cookie management are missing, which prevents a perfect score.
Maintenance
Related MCP Connectors
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Live browser debugging for AI assistants — DOM, console, network via MCP.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Related MCP Servers
- AlicenseAqualityDmaintenanceA MCP server that gives AI assistants full browser control, enabling navigation, clicking, form filling, and screenshots via any MCP client.8MIT
- FlicenseBqualityDmaintenanceAn MCP server that enables AI coding tools to control a browser for automated actions, UI extraction, network interception, and screenshots.231-
- AlicenseNot gradedqualityNot gradedmaintenanceMCP server that enables AI assistants to control a browser through Playwright, supporting tasks like navigation, typing, clicking, and taking screenshots.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceA local MCP server that lets AI coding assistants drive the Chrome browser you already have open, using your existing logged-in sessions. It enables navigating and reading pages, clicking, typing, filling forms, taking screenshots, uploading files, and inspecting console, network, storage, and cookies — without headless browsers or opening a remote-debugging port.1 npmISC