chrome-bridge
Allows AI agents to directly control a logged-in Google Chrome browser, providing tools for managing tabs, navigating pages, reading page content, taking screenshots, clicking and typing, executing JavaScript, and managing browser profiles.
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., "@chrome-bridgeCheck my Gmail in the work profile and summarize the first unread email"
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.
Chrome Bridge
複数のChromeプロファイルを、MCPセッションごとに独立して同時操作する。
Claude Code / Codex / その他のMCP対応クライアントから、すでに開いてログイン済みのChromeプロファイルを操作するためのローカルブリッジです。
先に: 公式の chrome-devtools-mcp で足りるか確認してください
単に「起動中のChromeに繋ぎたい」だけなら、公式の chrome-devtools-mcp で足ります。--autoConnect --browserUrl --wsEndpoint --userDataDir があり、すでに動いているChromeにも、指定したユーザーデータディレクトリにも接続できます。DevTools機能(トレース、ネットワーク/コンソール調査)まで含めて、公式のほうが圧倒的に充実しています。まず公式を試してください。
このブリッジが埋めるのは1点だけです。プロファイルが複数あり、それぞれ別のアカウントでログインしていて、それらを同時に、セッションごとに独立して扱いたい場合。 常駐ハブが各プロファイルの拡張機能をルーティングし、MCPセッションはそれぞれ自分の対象プロファイルを持ちます。Chromeを再起動したり、リモートデバッグを有効化したり、Cookieを移し替えたりせずに済みます。
Claude Code ──stdio──▶ server.js ──HTTP──▶ hub.js ──WebSocket──▶ Chrome拡張 ──▶ あなたのChrome
(MCPクライアント) (薄いクライアント) (常駐ハブ) (ログイン済み)何ができるか
41個のMCPツールを提供します。
分類 | ツール |
プロファイル |
|
タブ |
|
移動 |
|
読み取り |
|
操作 |
|
低レベル |
|
その他 |
|
real_click / real_type / evaluate_debugger — これは検知回避の機能です
互換性のための機能ではありません。使う前に読んでください。
real_click / real_type は Chrome DevTools Protocol 経由で isTrusted: true の入力イベントを送ります。ReactやWixのフォームが合成イベントを拒否する場合に動くようになりますが、同時に、ページ側が人間とエージェントを区別するための数少ない手掛かりを消します。 認証済みのプロファイルと組み合わさると、これは「クリックが通るようになる」以上の能力です。
evaluate_debugger も同様に、Trusted Types を有効にしたページ(Googleフォームなど)で evaluate がブロックされるのを、Debuggerドメイン経由で迂回します。
対象サイトの利用規約と、その操作を自分の名義で行ってよいかを確認したうえで使ってください。
補足として、公式の chrome-devtools-mcp は Puppeteer 経由で CDP 入力を送るため、element.click() が無視される問題自体が起きません。この機能が必要なのは、このブリッジが素のJavaScriptクリック(click)も併せて提供しているためです。
Related MCP server: Real Browser MCP
複数プロファイルの同時利用
このブリッジの中心的な設計です。仕事用と個人用、あるいは複数の顧客アカウントを、セッションごとに独立して扱えます。
ハブ(
hub.js)は1本だけ常駐し、接続してきた拡張機能をプロファイル単位でルーティングしますMCPクライアント(
server.js)はセッションごとに別プロセスで起動し、それぞれ自分のtargetProfileを持ちますあるセッションで
set_active_profileを呼んでも、他のセッションには影響しません
Claude Codeを2つ立ち上げて、片方は仕事アカウント、もう片方は個人アカウントを操作する、といった使い方ができます。
必要なもの
Node.js 18以上
Google Chrome(Windows。他OSは未検証です)
セットアップ
1. 依存関係
npm install2. Chrome拡張機能を読み込む
Chromeで
chrome://extensionsを開く右上の「デベロッパーモード」をON
「パッケージ化されていない拡張機能を読み込む」で
extension/フォルダを選択拡張機能のポップアップを開き、
alias(例:work,personal)を設定
複数のプロファイルで使う場合は、各プロファイルで同じ手順を繰り返し、それぞれ違う alias を付けてください。
3. ハブを起動
node hub.js1台のマシンにつき1本だけ動かします。拡張機能がWebSocketで接続してきます。
4. MCPクライアントを繋ぐ
Claude Codeの場合、.mcp.json に追加します。
{
"mcpServers": {
"chrome-bridge": {
"command": "node",
"args": ["/path/to/chrome-bridge/server.js"],
"env": { "CHROME_BRIDGE_PROFILE": "work" }
}
}
}CLIから使う
MCPを介さず直接叩くこともできます。デバッグや、シェルスクリプトからの利用に便利です。
node call.mjs list_profiles
node call.mjs ping profile=work
node call.mjs tabs_list profile=personal
node call.mjs navigate profile=work url=https://example.com
node call.mjs chrome_bridge_health注意: JSON引数と key=value 形式を1つのコマンドで混ぜないでください。引数が失われます。どちらかに統一します。
停止中のプロファイルを起動する
Chromeの Local State には存在するが、まだ起動していないプロファイルを立ち上げられます。
node call.mjs launch_profile profile=you@example.com
node call.mjs launch_profile profile="Profile 10" url=https://example.comハブは profile.info_cache からメールアドレス、プロファイル名、Gaia名、ディレクトリ名の順に解決します。Chromeは起動したが拡張機能が timeoutMs(既定20秒)以内に接続しない場合、HTTPは200を返しますが success:false になります。そのプロファイルで拡張機能を入れて再試行してください。
環境変数
ハブ側
変数 | 既定値 | 説明 |
|
| 拡張機能用WebSocketポート |
|
| クライアント用HTTPポート |
| — |
|
| 自動検出 |
|
|
|
|
クライアント / CLI側
変数 | 既定値 | 説明 |
|
| ハブのホスト |
|
| ハブのHTTPポート |
| — | セッション初期の対象プロファイル |
ツールの危険度と再試行
読み取り専用のツールと、状態を変えるツールを分けて扱ってください。
区分 | ツール | 再試行 |
読み取り専用 |
| 安全 |
状態変更 |
| 盲目的に再試行しない |
既知の再現性の欠陥: real_click を送った直後に拡張機能のWebSocketが切れると、ページ側はクリックを処理済みなのに、MCP呼び出しは切断エラーで失敗します。冪等キーも重複排除も実装していません。
状態変更ツールが切断エラーで失敗した場合は、再接続してからページの状態(またはネットワーク/遷移の結果)を確認し、本当にもう一度実行してよいかを判断してください。エラーに出る「retry in 5s」は読み取り系を想定した文言で、状態変更ツールには当てはまりません。
つまずきやすいところ
実運用で踏んだものです。
画面が描画されない / クリックが効かない
ウィンドウが非表示・非最前面だと、Chromeがレンダリングを止めることがあります。スクリーンショットが真っ白になったり、クリック座標がずれたりします。CDPで Emulation.setFocusEmulationEnabled を有効にすると解決します。
node call.mjs cdp profile=work method=Emulation.setFocusEmulationEnabled params='{"enabled":true}'evaluate が Uncaught で失敗する
Trusted Typesを使っているサイトです。evaluate_debugger に切り替えてください。また、evaluate_debugger に渡すスクリプトは改行を含まない1行にしてください。複数行のスクリプトは失敗します。
タブが応答しなくなる
evaluate_debugger が20秒でタイムアウトするようになったら、そのタブは死んでいます。tabs_select では復旧しません。新しいタブを作り直してください。
.click() が無反応
real_click を使ってください。セレクタを指定できます。チェックボックスの場合、input 要素ではなく親の <label> や <div> をクリックしないと入らないことがあります。
テスト
代替ポートを使うので、稼働中のハブ(9239/9240)には触れません。
node test/multiprofile.test.mjs
node test/launch-profile.test.mjs責任について
この道具は、あなたのログイン済みブラウザセッションに対する完全な操作権限をAIエージェントに渡します。認証済みのアカウントで、購入・送信・削除といった取り消せない操作が実行できてしまうということです。
信頼できるエージェントとプロンプトでのみ使ってください。 Webページの内容を読ませる場合、そのページに書かれた文字列は指示ではなくデータとして扱う設計にしてください
取り消せない操作の前には人間の確認を挟んでください。 送信・購入・削除・公開は特にそうです
ハブは
127.0.0.1だけをlistenします。ネットワークに公開しないでください各サービスの利用規約を確認してください。ブラウザ自動化を禁止しているサイトがあります
作者はこの道具の使用結果について責任を負いません。
ライセンス
MIT
由来
25個の個人プロジェクトを1人で運用する中で、AIエージェントに「ログイン済みのブラウザ」を触らせる必要があって作りました。使い分けたいプロファイルが複数あり、それらを同時に扱いたかったのが理由です。
公開後、r/mcp で「公式の chrome-devtools-mcp でも既存セッションに接続できる」と指摘をもらい、そのとおりだったので、上の説明を書き直しました。当初は「ヘッドレスではない」ことを差分として書いていましたが、それは公式でもできます。残る差分は複数プロファイルの同時・独立操作だけです。
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.
Browserless MCP — wraps the Browserless headless-Chromium REST API (browserless.io)
Automate cloud Chrome—navigate, click, type, screenshot, run code, record screen video
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to control and interact with the user's real Chrome browser session, leveraging existing logins, cookies, and extensions for AI-driven automation.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables browser automation over MCP using a real Chrome browser with existing profile, supporting real tabs, downloads, cookies, and RPA workflows.120 npmMIT
- 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 gradedqualityBmaintenanceEnables AI agents to control your existing Chrome browser via MCP, using your logged-in sessions for automation on authenticated sites. Provides high-level browser tools plus raw CDP and Chrome API access.MIT