
Chrome Bridge
io.github.frsorrentino由 GitHub 帳號 frsorrentino 發布v1.32.1更新於 Nov 6, 2026
Borrow a tab from your own logged-in Chrome, hand it back; 2FA and CAPTCHA stay yours. 69 tools.
概覽
透過瀏覽器擴充功能驅動你自己已登入的 Chrome,為助理提供 69 個工具,涵蓋導覽、表單、DOM 檢查、除錯、稽核與效能追蹤。
- 可以做什麼
- 開啟、關閉與排列分頁和視窗,導覽、截圖、並排視窗
- 點擊、填寫並送出表單,上傳檔案,處理對話框與剪貼簿
- 讀取頁面、擷取表格與元素、查詢 DOM、檢查 CSS 並監看變化
- 執行 JavaScript,讀取主控台與網路日誌,模擬請求,追蹤事件
- 執行無障礙、SEO、安全性與 Cookie 稽核,比對截圖,模擬視窗尺寸與媒體
- 擷取儲存空間、測試資料、MHTML 與下載,錄製與重播工作階段,追蹤效能、螢幕錄影並產生堆積快照
- 適用情境
- 適合讓助理直接在你已登入的瀏覽器中工作:填寫表單、檢查測試站台、除錯損壞的頁面、執行稽核或冒煙測試,而不必另開空白設定檔或使用雲端瀏覽器。
- 執行需求
- 以 Node.js 18+ 本機程序透過 stdio 執行,並需安裝 Chrome 135+ 擴充功能(線上應用程式商店或載入未封裝擴充功能)。擴充功能透過本機 WebSocket 連線(預設埠 8765,僅回送位址)。選用環境變數包括 CHROME_BRIDGE_PORT、CHROME_BRIDGE_TOKEN、CHROME_BRIDGE_CAPS、CHROME_BRIDGE_READ_ROOT、CHROME_BRIDGE_WRITE_ROOT 與 CHROME_BRIDGE_NO_JS。外掛的錯誤日誌掛鉤可選用 Python 3.8+。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Chrome Bridge,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Chrome Bridge
By frsorrentino · npm
chrome-bridge-mcp· not affiliated with other projects named "chrome-bridge".
[License: MIT] [Node 18+] [Chrome 135+] [Tests] [Chrome Web Store] [Chrome Bridge MCP on mcprush]
Claude Code drives the Chrome you are already using — signed in, with your extensions and your cookies. 69 tools: navigation, forms, DOM inspection, network mocking, visual regression, audits, performance traces and the WebMCP tools a page declares. Self-hosted, local-only, no paid plan, works on ChromeOS.
Measured against the official Claude in Chrome extension on the same tasks (paired runs, 17/10/2026, Claude Code 2.1.302, n=5 per task, medians):
15 correct answers out of 15, against 14. Method, every run and the caveats in docs/EFFICIENCY.md.
Quickstart
- In a Claude Code session:
From a shell, the same:
claude plugin install chrome-bridge --marketplace frsorrentino/chrome-bridge. - Add the extension from the Chrome Web Store.
- 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.
The plugin registers the MCP server from npm together with the recipes skill.
Older Claude Code, from source, Windows, one path only
Older Claude Code. Add the marketplace first:
/plugin marketplace add frsorrentino/chrome-bridge, then
/plugin install chrome-bridge@chrome-bridge (from a shell:
claude plugin marketplace add frsorrentino/chrome-bridge, then
claude plugin install chrome-bridge@chrome-bridge).
From source:
Then open chrome://extensions, enable Developer mode, click Load
unpacked, select the extension/ folder, and restart Claude Code.
install.sh registers the MCP server with --scope user; by hand:
claude mcp add --scope user chrome-bridge node /path/to/server/index.js.
On ChromeOS/Crostini use the Web Store extension instead: an unpacked one is
dropped on every reboot, because the container isn't mounted when Chrome
starts.
Windows. install.sh does not run from PowerShell or cmd: use the plugin
with the Web Store extension, or run install.sh from Git Bash. The plugin's
error log hooks run in Git Bash, as Claude Code runs every hook. For launch
mode see CHROME_BRIDGE_BROWSER below: Google Chrome cannot load the extension
there, Microsoft Edge can.
One path only. The plugin and install.sh would register the same server
twice, and so would a plugin added from the Anthropic
directory on claude.ai (it reaches Claude Code as
chrome-bridge@synced) next to a marketplace install. In claude.ai chat the
plugin loads only the recipes skill: the tools need Claude Code, or Cowork
running on your computer, where the local MCP server can start. Clients that
read Agent Plugins 1.0 get the same from
plugin.json + mcp.json.
Why it takes fewer turns
- Refs, not screenshots.
navigatereturns the page's interactive elements as short refs (n1,n2…), so the next call is the click, not a screenshot and a coordinate guess. - One call for a whole form.
fill_formfills N fields and submits in the same call. - Filtering on the server.
extract_tablewithwhereandcolumnsreturns the matching rows of a 1,500-row table, not the table. - Debugging starts with the answer.
navigatereports the first console error mapped to its source line and the failed requests with their status;get_css_stylesnames the rule behind a style and flags undefined CSS variables. - Deferred loading. 22 stay in context; the rest of the 46 in the
default set wait behind Claude Code's tool search (2.1.285+), and loading
one mid-session does not invalidate the prompt cache. The other 23, in seven
optional groups, switch on mid-session with
get_status({enable: [...]}), no restart.
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 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. Several Claude Code sessions share the same browser: the second one becomes a relay on the first one's bridge.
WebMCP. When a page declares its own tools through
WebMCP, navigate and
get_interactives say so in one line, webmcp_tools lists them and
webmcp_call runs one, with a timeout. Needs the WebMCP flag or origin trial
in Chrome; get_status reports whether it is on.
Limits you can set. upload_file refuses keys and credentials
(~/.ssh, .env*, *.pem, …) and --read-root fences it to one directory;
--write-root fences every path the model writes; --no-js removes arbitrary
JavaScript. The agent never types credentials: for a login, a 2FA code or a
choice, handoff shows a banner in the page and waits for you.
Compared
Codex for Chrome (OpenAI, May 2026) sits in the Claude in Chrome column: an
official extension with the debugger permission, macOS and Windows only,
the ChatGPT app required. Claude in Chrome documents Linux desktop since
September 2026; ChromeOS and WSL stay out. Competitor tool counts measured on
2026-09-01 and 2026-09-11 (docs/analisi-2026-09-11-concorrenti.md); WebMCP, recording and
tracing rows checked in their documentation on 2026-10-28.
[Claude checks its own work: console errors, pixel diffs, network mocking and audits]
Using it
The skill in skills/chrome-bridge/SKILL.md
is what makes the tools discoverable: recipes with the phrase that triggers
each one ("verify the email arrives", "test the checkout with a test card",
"which plugin slows the page", "what fires before consent"), the tool sequence,
and the zero-token CLI commands the model would otherwise never see.
install.sh copies it to ~/.claude/skills/chrome-bridge; do the same by
hand for other clients.
Beyond the MCP tools, two lanes keep work away from the model entirely.
[Some jobs never touch the model: the CLI lane runs the same tools at zero tokens]
CLI — batch operations, piped through grep or jq before anything reaches
the context:
Launch mode — a dedicated Chromium instance with an ephemeral profile, for isolated sessions or CI:
It looks for Chromium, Microsoft Edge, Brave and last Google Chrome in their
standard paths on Linux, macOS and Windows; CHROME_BRIDGE_BROWSER picks
another binary. Google Chrome 137+ ignores --load-extension, so the
extension never connects in it: use Chromium, Edge, Brave or Chrome for
Testing.
Pair 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
69 in total. core (46 tools: every tool used in 101 real sessions, plus the
two WebMCP tools) loads by default; the other 23 sit in seven optional caps,
switched on with get_status({enable: ["visual"]}) or at startup with --caps.
[69 tools in nine groups, from clicking a button to tracing a page]
Every tool, with the notes that matter: docs/TOOLS.md.
How it works
[It drives the Chrome you are logged into, over a local WebSocket bridge]
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
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.
Threat model
chrome-bridge gives an AI agent your real, logged-in browser. Scanners that
rate MCP servers by capability flag it, correctly, for code execution
(execute_js), requests that carry your cookies (http_request) and reading
private page data (get_storage, get_tabs). Those are the product, not bugs.
What matters is who can reach them and what a hostile page can make the agent
do with them.
- Launch mode also opens a DevTools port on 127.0.0.1 (chosen by the
system), for
lighthouseandheap_snapshot. CDP has no authentication: any local process can drive that dedicated browser while it runs. Its profile is temporary and holds nothing of yours; your own Chrome never gets a port. - The debugger bar is the signal.
click/press_keywithtrusted,emulate_media via: "debugger",perf_traceandscreencastattachchrome.debuggerto one tab only for that work; Chrome shows its "started debugging this browser" bar meanwhile, and cancelling it ends the work. - The real risk is prompt injection. A page can ask the agent to run JavaScript, send a request with your cookies, submit a form or upload a file. Treat every page you automate as untrusted input, and review what the agent proposes on sites that hold money or credentials.
- Reduce the surface:
--caps core(the default) exposes the smallest set, and see Limits you can set. For sessions that matter, automate in a separate Chrome profile. --no-jsis not a sandbox:inject_cssstays, and CSS attribute selectors withurl()can leak attribute values to a remote host.- What leaves your machine is what the browser sends on the agent's behalf. chrome-bridge itself has no telemetry; the error log below stays local unless you approve an issue.
Local error log
When one of its own tools fails, chrome-bridge adds a line to a local file,
${XDG_STATE_HOME:-~/.local/state}/claude-observe/chrome-bridge.jsonl (mode
0600, in a 0700 folder), in the claude-observe
format (the plugin's copy is in observe/). A PostToolUseFailure hook writes
it, or the server when used without the plugin. A repeated error is one line
with a count.
- Kept: the tool name, the error text after scrubbing (your home folder
becomes
~; emails, URL queries, secrets and typed values are removed), the names of the parameters and the length of text values, the chrome-bridge version, the OS, the name of the working folder and of the Claude Code config folder. With the plugin, also the Claude Code and model versions, the session id and the names of the last three tools called. - Never kept: parameter values — no URLs, selectors, typed text or page content.
- Nothing leaves your computer unless you say yes. With the plugin, once
a few errors have piled up (or one has waited a few days, or one is marked
as a defect), a line at the end of a turn tells you so, and Claude may offer
to send them as one GitHub issue: it shows the anonymized text first and
sends only what you choose.
/chrome-bridge:observe senddoes the same on demand;list,markandaddread and triage the log. The server alone never sends or offers anything. - Security observations (a read or write outside the perimeter, a secret
exposed, unwanted code execution, data leaving the computer) never enter a
public issue:
/chrome-bridge:observe send --securityprepares a private vulnerability report for the maintainers, see SECURITY.md. - Turn it off:
{"enabled": false}in~/.config/claude-observe/config.json(every plugin that uses claude-observe), orCHROME_BRIDGE_OBSERVE=offfor the server. Keep the log but stop the offers:{"propose": false}.
Troubleshooting
Symptoms and fixes
Documentation
- docs/TOOLS.md — all 69 tools, by group
- docs/CAPABILITIES.md — what the bridge gets past and what it does not, one dated state per wall
- docs/EFFICIENCY.md — the benchmark and the design behind it
- docs/misure/2026-10-token-cache-vs-claude-in-chrome.md — the 17/10 paired set and the prompt-cache breakdown (Italian)
- docs/PERFORMANCE.md — latency per tool on the real path,
npm run bench:latency - bench/RESULTS.md — raw runs and inclusion rule
- CHANGELOG.md
Tests
npm test (Chrome-free, ~22s) · npm run test:e2e (needs Chrome and a
connected extension; with a bridge already on 8765:
CHROME_BRIDGE_PORT=8799 node test/test-devtools.js --launch, which opens
its own Chromium with extension/) · npm run measure (schema cost) ·
npm run bench:latency (milliseconds per tool, launches its own Chromium,
writes docs/PERFORMANCE.md).
Related projects
- agent-webbridge — drives several Chrome profiles at once, with parallel tabs
- awb-recipes — community-maintained, dated per-site recipes for automating logged-in websites
License
MIT
來源:README.md,提交 eeb896a
工具
0版本歷史
26- v1.32.1最新Oct 29, 2026
- v1.30.7Oct 26, 2026
- v1.30.6Oct 23, 2026
- v1.30.5Oct 17, 2026
- v1.30.4Oct 17, 2026
- v1.30.3Oct 16, 2026
- v1.30.2Oct 15, 2026
- v1.30.0Oct 14, 2026
- v1.29.3Oct 14, 2026
- v1.29.2Oct 9, 2026
- v1.29.1Oct 9, 2026
- v1.29.0Oct 6, 2026
- v1.28.0Oct 2, 2026
- v1.27.0Oct 1, 2026
- v1.26.0Sep 29, 2026
- v1.25.1Sep 29, 2026
- v1.24.0Sep 28, 2026
- v1.23.4Sep 27, 2026
- v1.23.3Sep 27, 2026
- v1.23.0Sep 26, 2026
- v1.22.0Sep 25, 2026
- v1.21.0Sep 24, 2026
- v1.20.0Sep 24, 2026
- v1.19.0Sep 23, 2026
- v1.18.0Sep 22, 2026
- v1.17.0Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分