
Chromium Bridge
io.github.dashi96由 GitHub 账号 dashi96 发布v0.5.3更新于 Oct 24, 2026
MCP bridge between Chromium browsers (Arc, Vivaldi, Brave) and Claude Code: browser automation
概览
让助手通过本地扩展操控基于 Chromium 的浏览器(Arc、Vivaldi、Brave):标签页、导航、点击、输入、截图、控制台与网络。
- 可以做什么
- 这是一个 MCP 服务器,通过 127.0.0.1 上的 WebSocket 把 Claude Code 与本地安装的 MV3 扩展连接起来,从而桥接到 Chromium 浏览器。它提供 browser_* 工具,用于列出、打开和关闭标签页,导航,读取页面文本与无障碍树,查找元素,点击,填写表单,上传文件,执行 JavaScript,以及获取截图、控制台消息和网络请求。它还能录制标签页 GIF,并在扩展弹窗中提供聊天面板。
- 适用场景
- 当你希望助手自动化官方 Chrome 扩展支持不佳的 Chromium 浏览器(如 Arc、Vivaldi 或 Brave),并且需要真实点击、读取页面、截图或检查控制台与网络时,适合使用。它是本地桌面工具,不是托管服务。
- 运行要求
- 以 npm 包 chromium-bridge(npx chromium-bridge)或从克隆仓库通过 Node.js 以 stdio 方式在本地运行。需要基于 Chromium 的浏览器,并以开发者模式加载随附扩展,同时保持服务器会话运行。可选环境变量:CHROMIUM_BRIDGE_CHAT_MODEL 和 CHROMIUM_BRIDGE_PORT(默认 8929)。聊天面板使用 Claude Code 登录。
安装
在 SourceWeft 中
- 打开 控制台中的 Chromium Bridge,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
[图片] Chromium Bridge
A bridge between your Chromium-based browser and Claude Code. The official
"Claude in Chrome" extension connects in some Chromium browsers (Arc, Vivaldi,
and others) but automation hangs: its tools are built on the tab groups API,
which is missing or broken there. This bridge uses only plain
chrome.tabs / chrome.scripting / chrome.debugger, so it works in any
Chromium browser that can load an extension.
Demo
Claude driving the browser through the bridge — opening Wikipedia, typing a search, and landing on the article:
[Chromium Bridge demo: Claude controlling a Chromium browser]
Architecture
extension/— an MV3 extension: the service worker keeps a WebSocket to the local server and executes its commands (tabs, navigation, page text, screenshots, clicks, form filling). Clicking the icon opens the chat panel (chat.html) — a popup anchored to the extension icon.server/— an MCP server (stdio) that exposes thebrowser_*tools to Claude Code and proxies them to the extension. It accepts WS connections only from achrome-extension://…Origin — regular web pages cannot connect. It also serves the/chatchannel: panel messages run through the Claude Agent SDK (authenticated via the Claude Code login) with the samebrowser_*tools; built-in tools (Bash, Read, etc.) are disabled.
Chat panel
An equivalent of the "Claude in Chrome" side panel: a popup that opens when you
click the extension icon (no chrome.sidePanel — it is not supported
everywhere). The chat can see the browser: list tabs, read pages, take
screenshots, and click.
[Chat panel demo: Claude opens a Wikipedia article and answers from it]
The panel UI is in English by default and switches to Russian automatically when the browser UI language is Russian. A language selector (Auto / English / Русский) in the bottom bar overrides auto-detection; the on-page badge follows the same choice.
- The popup closes when it loses focus (clicking the page) — that is browser
behavior. The conversation context is not lost: the panel remembers the
session_id and the server resumes the conversation via the Agent SDK
resume. A turn that is in flight when the popup closes is interrupted. - It only works while the server is running (usually an active Claude Code
session with the
chromium-bridgeMCP); otherwise the panel shows "Server unavailable". - Model picker in the panel header: "Default" takes the model from
~/.claude/settings.json(whatever was set via/model; SDK sessions do not read Claude Code settings themselves, the server passes the model explicitly), the other entries are hard overrides. Switching applies on the fly (setModel) and is remembered. Startup override:CHROMIUM_BRIDGE_CHAT_MODEL=sonnetin the server environment. Port:CHROMIUM_BRIDGE_PORT(8929 by default) — server side only; the extension always connects to 8929, so changing the port also means editingWS_URLinextension/sw.jsandextension/chat.js. - Chat history: the 🕓 button in the header lists past conversations (stored in the panel's localStorage, the last 30).
- After each turn there is a usage line: turn tokens (↑ input incl. cache / ↓ output) and the accumulated session cost in $ (on a subscription this is an estimate, not a separate bill).
- Screenshots the agent takes along the way are shown right in the chat feed (click to expand). They are not saved to history (localStorage is finite).
- You can paste images from the clipboard (Cmd+V in the input, up to 5 per message) — the model sees them; only a marker remains in history.
- "Ask before acting" mode (checkbox above the input): reading (tabs, text, screenshots, console, network) proceeds without questions, while mutating actions — clicks/typing/navigation/JS/forms/closing tabs/file uploads — wait for an Allow / Deny card. The agent sees a denial and continues the conversation. Toggling applies immediately, without recreating the session (via the Agent SDK's canUseTool).
On-page indication
When Claude acts on a tab (from the panel or from Claude Code):
- an orange glow burns around the page edges with a "✳ Claude is working…" badge, fading 2.5s after the last action;
- a virtual cursor (an orange arrow) glides to the action point and pulses a ring on click; it disappears after 3.5s of inactivity.
Both are hidden on screenshots so they don't end up in the frame and confuse
the model when working with coordinates. On pages where scripts cannot be
injected (chrome:// and the like) the indication is silently skipped.
Installation
-
Extension: clone this repository, open
chrome://extensions(in the right space/profile!), enable "Developer mode", click "Load unpacked", and pick theextension/folder. -
MCP server — either way:
- via npm:
claude mcp add -s user chromium-bridge -- npx chromium-bridge - from the clone:
cd server && npm install, thenclaude mcp add -s user chromium-bridge -- node "$(pwd)/index.mjs".
It loads at session start — restart your Claude Code session after installing the extension.
For other MCP clients, add this to your config:
- via npm:
-
Check: the
browser_statustool should return{"connected": true}.
Tools
As of v0.5.
Everything except basic tab operations works through chrome.debugger (CDP):
screenshots don't require activating the tab, clicks are real mouse events,
and console/network are collected from the first CDP touch of the tab.
Limitations
- The extension lives in one browser profile — install it in the one you want to automate.
- While the server is running, its periodic ping keeps the extension's service worker awake. If the worker is asleep anyway (e.g. the server has just started), a keepalive alarm wakes it within ~30 seconds, and the server waits up to 12 seconds for reconnection before erroring.
- Trust model: the WS server listens on 127.0.0.1 and rejects connections
whose Origin is not
chrome-extension://…, which keeps web pages out. It does not distinguish between extensions, and a non-browser local process can fake the Origin header — anything running as your user is trusted, like with most local dev tools. Don't run the bridge on a shared machine. - On the first CDP action the browser shows a "Chromium Bridge started debugging this browser" bar — that's normal, the debugger is the control mechanism. Closing the bar detaches the debugger (the next action re-attaches it).
- Console/network are not recorded retroactively — only after the tab is first touched.
- Port 8929 is owned by one session: a second parallel Claude Code session cannot start its own WS server (the extension stays with the first one).
License
来源:README.md,提交 bdf0f94
工具
0版本历史
1- v0.5.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
