agent-bridge
Supports browser automation on Instagram pages within the user's logged-in Chrome session, such as opening instagram.com and interacting with page content while authenticated.
Automates TikTok through the user's existing logged-in Chrome session, allowing an agent to navigate, read page snapshots, click, type, fill forms, and upload files while staying authenticated.
Automates YouTube Studio through the user's existing logged-in Chrome session, allowing an agent to navigate, read page snapshots, click, type, fill forms, and upload files while staying authenticated.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
English · Türkçe
Let terminal agents (Claude Code, Cursor, Codex… anything that speaks MCP) work in your own Chrome: read pages, click, type, fill forms, upload files, take screenshots. They do it with your logged-in sessions, so YouTube Studio, Search Console, TikTok, Business Suite and the rest stay signed in.
That's the difference from Playwright / DevTools MCP, which start an empty browser with no sessions. Agent Bridge connects to the browser you already use.

Agent tabs are easy to spot: they sit in a yellow Agent tab group, the page gets a gold frame, and the motion cursor shows where the agent points and clicks.
How it works
agent (MCP client) ⇄ stdio ⇄ agent-bridge ⇄ WebSocket (127.0.0.1) ⇄ Chrome extension ⇄ pages
(token-protected) (chrome.debugger)The extension uses the
chrome.debuggerAPI, so there is no remote debugging port (9222) to open.The bridge listens on
127.0.0.1only. The extension sends a token when it connects, and a wrong token is rejected.Nothing leaves your machine, screenshots included.
Related MCP server: kilogent-browser
Installation
Two parts, nothing to clone: the MCP server comes from npm, the Chrome extension from the latest GitHub release.
Requirements: Node.js 18+, Chrome 116+ (or another Chromium browser: Edge, Brave, Arc).
1. Add the MCP server to your agent
claude mcp add --scope user agent-bridge -- npx -y chrome-agent-bridge{
"mcpServers": {
"agent-bridge": {
"command": "npx",
"args": ["-y", "chrome-agent-bridge"]
}
}
}{
"mcpServers": {
"agent-bridge": {
"command": "npx",
"args": ["-y", "chrome-agent-bridge"]
}
}
}[mcp_servers.agent-bridge]
command = "npx"
args = ["-y", "chrome-agent-bridge"]{
"servers": {
"agent-bridge": {
"type": "stdio",
"command": "npx",
"args": ["-y", "chrome-agent-bridge"]
}
}
}Any other MCP client works the same way: a stdio server with command npx and arguments -y chrome-agent-bridge. Restart the agent after adding it.
GUI apps (Claude Desktop, Cursor…) don't see your shell
PATH, sonpx(or thenodeit needs) may not be found. Then use the full path fromwhich npxand pass yourPATHalong:"agent-bridge": { "command": "/opt/homebrew/bin/npx", "args": ["-y", "chrome-agent-bridge"], "env": { "PATH": "/opt/homebrew/bin:/usr/bin:/bin" } }
2. Download the extension and load it into Chrome
Download: agent-bridge-extension.zip (always the latest release; all versions are on the Releases page)
Unzip it into a folder you will keep, e.g.
~/agent-bridge-extension. Chrome loads the extension straight from this folder, so don't delete or move it later.Open
chrome://extensions.Turn on Developer mode (top right).
Click Load unpacked and select the unzipped folder (the one that contains
manifest.json).Click the puzzle icon in the toolbar and pin Agent Bridge.
Why not a
.crxfile? Chrome on Windows and macOS refuses to run.crxextensions that don't come from the Chrome Web Store. Until the store release, "Load unpacked" is the way.
3. Pair (one switch)
Open the Agent Bridge popup and turn on Agent access. The first connection pairs automatically (trust on first use), and the pairing is saved to ~/.agent-bridge/token.json. The status turns green ("Connected").
Then just ask your agent something like "open search console and tell me which pages lost clicks this week".
To pair again (for example after reinstalling the extension), run npx -y chrome-agent-bridge --fresh once and stop it with Ctrl+C.
Updating
MCP server:
npxcaches the package; to get the newest version runnpx -y chrome-agent-bridge@latest --helponce, then restart your agent.Extension: download the zip again, replace the folder's contents, and click Reload on Agent Bridge in
chrome://extensions.
From source (development)
git clone https://github.com/falconsw/agent-bridge.git
cd agent-bridge && npm installLoad the extension/ folder with "Load unpacked", and use node /path/to/agent-bridge/bin/agent-bridge.mjs as the MCP command.
The popup
Agent access: the master switch. When it's off, the agent can't touch the browser.
Motion cursor: shows a pointer and click ripple on the page wherever the agent clicks or types.
Recent actions: a plain-language log ("Opened instagram.com", "Clicked ×3"), with a badge for the app it came from (Claude Code, Cursor, Codex…).
Advanced: port, pairing token, and blocked URL patterns.
Tools
Tool | What it does |
| Goes to a URL (or |
| Page snapshot: |
| Searches labels and text, returns matching lines with refs and link targets (much cheaper than |
| Real mouse events on |
| Real keyboard input; |
| Picks a native |
| Keys and shortcuts: |
| Scrolls and returns what is now visible |
| Gives a local file to an |
| Waits until text/a selector appears (or disappears with |
| The tab's console messages and network requests |
| JPEG of the visible area (up to 1280 px); expensive, only for visual questions. Saved under |
| Runs JavaScript in the page (last resort) |
| The agent's tabs; |
| Closes the agent's tabs when the whole task is finished |
Token-efficient: navigate already returns the snapshot, actions report only new elements (or the new page), repeated lines are merged, and hidden/aria-hidden elements are skipped. Dialogs (alert/confirm) are accepted and reported, and new tabs opened by an agent tab are handed to the agent. Shadow DOM and same-origin iframes are read too.
Several agents at once: the first bridge process takes the port, and later sessions (Claude Code, Cursor, Codex…) join it as drivers. When the first one exits, another takes over the port.
Benchmark
Same tasks, same model (sonnet), each in a fresh headless Claude Code session that may use only one browser tool. Medians of 3 runs; all 18 runs answered correctly.
3 tasks in total | Agent Bridge | Claude in Chrome |
Tokens (input + output) | 146.5k | 343.2k |
Browser tool calls | 6 | 22 |
Tokens returned by browser tools | 5.1k | 11.3k |
Time | 39.9 s | 78.2 s |
Cost | $0.124 | $0.259 |
Each operation and what it cost, e.g. filling a 7-field form:
Agent Bridge:
navigate(245 tok) →fill(277) →click(769): 3 callsClaude in Chrome:
navigate(345) →read_page(363) →form_input×8 (~240 each) →javascript_tool(280) →computer(270) →get_page_text(867) →tabs_close_mcp(74): 14 calls
Full results, per-task tables and tokens per operation: bench/RESULTS.md. Reproduce with node bench/run.mjs --runs 3 and node bench/report.mjs.
Security
Tab isolation: the agent only works in tabs it opened itself. It cannot list, navigate or click your own tabs.
Privacy filter: password, hidden and autofill-sensitive fields (credit cards, OTP) never appear in snapshots, so the model cannot see them.
Blocked URL patterns: add them in popup → Advanced, comma separated (e.g.
bank.example.com/*, *.gov/*).navigaterefuses those addresses.Idle mode: when the agent calls
done, or after 10 minutes without a command, all agent tabs close and the debugger detaches.The bridge listens on
127.0.0.1only and pairs by token. Any local process that knows the token can drive the browser; on a single-user machine that is the boundary, as with any local dev tool.Because it uses
chrome.debugger, Chrome shows a "… started debugging this browser" bar on agent tabs. That is intentional: it shows when it's active.Prompt injection: a malicious page's text can try to steer the agent. The popup log shows what was done; still, keep an eye on it when the agent works in important accounts.
Development
The tests need no Chrome; they run end to end against a fake extension:
node test/fake-extension.mjs 8799 TEST-TOKEN & # side 1
npm test # side 2: two bridges + takeover testBridge options: node bin/agent-bridge.mjs --help (--port, --token, --shots, --lang tr|en, --fresh).
Roadmap
Chrome Web Store release
Site allowlist (act only on listed domains)
Confirm mode (notification + approval before side-effecting actions)
npm package (
npx -y chrome-agent-bridge)
License
MIT
This server cannot be deployed
Maintenance
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.
Use a person's computer after they approve it there: files, Terminal, browser, local MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceDrive your real, signed-in Chrome browser from any MCP client, enabling browser automation such as navigation, clicking, typing, and screenshots through standard MCP tools.1-
- AlicenseNot gradedqualityBmaintenanceMCP server that lets agents drive your real Chrome browser with existing logins and sessions via an outbound-only WebSocket extension. It exposes Playwright-compatible browser tools for navigation, clicking, typing, and snapshots.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceConnects local stdio MCP servers to an existing Chrome 144+ session, preserving the user's signed-in sessions, cookies, tabs, and extension environment without launching a second browser. It provides tab control, semantic snapshots, screenshots, pointer, keyboard, form selection, scrolling, navigation, and waiting tools.MIT
- AlicenseNot gradedqualityAmaintenanceEnables any MCP client to drive the user's real Chrome profile through a Chrome extension bridge, with tools for navigation, accessibility snapshots, ref-based interactions, console/network reading, screenshots, tab management, and restricted script evaluation.1MIT