mcpField
N
NexusBrowser

NexusBrowser

ローカル
julienpiron.frブラウザ自動化4今日更新

NexusBrowser について

NexusBrowser は MCP サーバーとローカルブリッジで、エージェントがユーザーの Chrome をバックグラウンドタブから操作できるようにします。既存のセッションと拡張機能を利用し、タブの所有権管理と制限付きの操作を提供するため、ユーザーは自分のタブで作業を続けられます。

主な機能

  1. 01エージェント別のバックグラウンドタブ
  2. 02信頼されたマウス・キーボードイベント
  3. 03ロケーターによるページ操作
  4. 04ネットワーク記録とダウンロード
  5. 05クロスオリジン iframe へのアクセス
  6. 06シークレットのマスキングと緊急停止

活用シーン

  1. 01ログイン済み Chrome セッションを使うエージェント作業
  2. 02ページの Markdown エクスポート
  3. 03ネットワーク応答とダウンロードの調査
  4. 04クロスオリジンフレーム内の要素操作

MCP 対応

`nexus-browser` MCP サーバーはローカルブリッジと Chrome 拡張機能に接続し、MCP クライアントにタブ、ページ操作、ネットワーク、ダウンロード、エクスポート機能を公開します。ブリッジと拡張機能がタブの所有権とコマンド制限を管理します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"pironjulien-nexus-browser": {
"command": "uvx",
"args": [
"nexus-browser"
],
"env": {
"NEXUS_BROWSER_AGENT": "<NEXUS_BROWSER_AGENT>"
}
}
}
}
起動コマンドuvx nexus-browser
設定が必要な環境変数
NEXUS_BROWSER_AGENTAgent name used for the tab group (Claude, Codex, Antigravity...)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypinexus-browser2.31.6

ツール

48

掲載時のツール一覧 · 今日に更新

このツールにパラメーターはありません。

詳細

NexusBrowser

Release PyPI Tests OpenSSF Scorecard License: MIT Chrome MV3 Python 3.14 MCP

NexusBrowser: your real Chrome, driven by an AI agent in a background tab.

NexusBrowser: an AI agent types into a form, picks an option and clicks in a background Chrome tab while the user keeps browsing

AI エージェントがバックグラウンドタブで操作する、あなた自身の Chrome です。 NexusBrowser を使うと、Antigravity、Claude、Codex は、ユーザー自身の Chrome(セッションや拡張機能)を、共有のローカルブリッジと単一の MCP サーバー nexus-browser を介して利用できます。各エージェントはそれぞれの名前が付いた専用のバックグラウンドタブで作業し、Chrome DevTools Protocol を通じて実際の(信頼された)マウスおよびキーボードイベントを送信するため、ユーザーは自分のタブで作業を続けられます。

Windows 10/11 · Chrome 116+ · Python 3.14 · MIT ライセンス

Nexus ファミリーの一部です:NexusWindows (Claude · Codex · Antigravity)、 NexusBrowser (リポジトリ)、 NexusAndroid (リポジトリ)。 プロジェクトページ:julienpiron.fr/nexusbrowser。

その理由

ブラウザーの自動化では通常、独立したヘッドレスブラウザー(セッションや拡張機能なし)を使うか、画面レベルでコンピューターを操作してユーザーのカーソルを動かし、ウィンドウを前面に表示します。NexusBrowser は、ユーザーが普段使っているブラウザー内で動作し、エージェントのタブやウィンドウをアクティブにしません。また、エージェントではなく拡張機能とブリッジ側で安全対策を維持します。タブの所有権、DevTools コマンドの許可リスト、マスクされたシークレット、緊急停止機能を備えています。

  • Antigravity:独自のブラウザーエージェントは別の Chrome プロファイルで動作し、ユーザーの閲覧に使う Cookie やサインイン情報にはアクセスできません (Antigravity のドキュメント)。NexusBrowser を使うと、ユーザー自身の Chrome を利用できます。
  • Claude と Codex:すでに独自の Chrome 拡張機能(Claude in Chrome、Codex Chrome 拡張機能)を備えています。NexusBrowser は、DevTools プロトコルを使ったブリッジが役立つ場面で、これらを補完します。JavaScript ダイアログ(browser_handle_dialog)、レスポンス本文を含む詳細なネットワークキャプチャ、クロスオリジン iframe 内の要素、コンテンツや Google Docs/Sheets/Slides のエクスポート、ダウンロードに対応します。

2.4.0 までは「Antigravity Browser Bridge」という名前で、Antigravity 専用として公開されていました。2.6.0 以降は、複数のエージェントで共有する中立的なブリッジになりました。

構成要素

フォルダー役割
extension/Chrome MV3 拡張機能「NexusBrowser」:CDP アクション、ロケーター、ネットワーク、ダイアログ、クロスオリジン iframe、エクスポート、タブの所有権
native-host/ローカルブリッジ(拡張機能用の WebSocket 9224 と、エージェント用の HTTP 9225 を提供する bridge_server.py)と、ネイティブホスト com.nexus.browser_auth
client/MCP サーバー nexus-browser(mcp_server.py)、認証済みトランスポート(bridge_client.py)、CLI(browser_cli.py)、共有緊急停止
skills/、plugins/スキルと Antigravity プラグイン。install.ps1 はスキルをそのプラグインにのみコピーします
benchmarks/Chrome DevTools MCP と比較する、再現可能なトークン数および成功率のベンチマーク(compare.py、結果と手法は README に記載)
mcpb/Claude Desktop 拡張機能(すべてのリリースに添付される nexus-browser.mcpb。サーバーは PyPI から取得)
gemini-extension.jsonGemini CLI 拡張機能:gemini extensions install https://github.com/pironjulien/NexusBrowser(サーバーとスキルは PyPI から取得)

ツール

MCP ツールは 49 個です。

分野ツール
タブbrowser_list_tabs、browser_active_tab(読み取り専用)、browser_new_tab、browser_select_tab、browser_adopt_tab、browser_release_tab、browser_group_tabs、browser_close_tab、browser_reload、browser_navigate(URL、戻る、進む)、browser_wait_load、browser_wait_for(テキストまたは要素の出現・消失を待機)
入力(信頼された CDP イベント)browser_click(ロケーター、マーク、セレクター、またはテキストで指定)、browser_hover、browser_fill、browser_fill_form、browser_select_option、browser_check、browser_press_key、browser_type_keys、browser_drag_and_drop、browser_scroll、browser_upload、browser_handle_dialog
要素の検索browser_find(Playwright 形式のロケーター:ロール、ラベル、テキスト、プレースホルダー、テスト ID。すべてのフレームが対象)、browser_interactive_map、browser_vision_inspect(Set-of-Mark バッジ。browser_click(mark=N) でクリック)、browser_axtree、browser_content、browser_check_handoff(2FA、CAPTCHA)
ネットワークとダウンロードbrowser_network_record、browser_network_stop、browser_network_requests、browser_network_response、browser_wait_network_idle、browser_download_status、browser_wait_download、browser_get_cookies
出力browser_screenshot(表示範囲、ページ全体、または要素)、browser_pdf、browser_export(メインコンテンツを Markdown、テキスト、または HTML で出力)、browser_export_gsuite(Google のエクスポート URL を使った Google Docs、Sheets、Slides)、browser_youtube_transcript、browser_logs
サイトが提供するツール(WebMCP)browser_webmcp_tools、browser_webmcp_call(ページが document.modelContext を通じて公開するツール)
ページへのアクセスbrowser_eval、browser_cdp_send(許可リストに登録されたコマンド)
複数のアクションbrowser_batch(1 回のラウンドトリップで最大 30 個のツール呼び出しを実行し、最初のエラーで停止。各ステップで個別にチェックを実施)

インストール

Windows 10 または 11 と Google Chrome が必要です。管理者権限は不要で、事前にほかのものをインストールする必要もありません。

  1. 最新リリースから get.ps1 をダウンロードし、右クリックして Run with PowerShell を選択します。先にファイルを確認する場合は、同時に公開されている get.ps1.sha256 と SHA-256 を照合してください。

    (Get-FileHash "$HOME\Downloads\get.ps1" -Algorithm SHA256).Hash
    

    または、PowerShell を開き(スタートメニューで PowerShell と入力)、次のコマンドを貼り付けて一度に実行します。

    irm https://raw.githubusercontent.com/pironjulien/NexusBrowser/main/get.ps1 | iex
    

    必要に応じて uv をインストールし、最新リリースを %LOCALAPPDATA%\NexusBrowser\app にダウンロードして、ローカルブリッジとネイティブホストをセットアップします。また、見つかったすべての AI クライアント(Claude Code、Claude Desktop、Codex、Antigravity)に nexus-browser サーバーを登録します。

  2. Chrome で chrome://extensions が開き、拡張機能のフォルダーがクリップボードにコピーされます。Developer mode(右上)をオンにし、Load unpacked をクリックして、フォルダーを貼り付け(Ctrl+V)、Select Folder をクリックします。これが唯一の手動操作です。Chrome ウェブストア以外から拡張機能をインストールする場合、Chrome ではこの方法しかありません。拡張機能が接続されると、インストーラーに表示されます。

  3. AI アプリを再起動して、たとえば次のように依頼します。「バックグラウンドタブで https://example.com を開いて、ページを Markdown 形式で表示してください。」

更新する場合は、もう一度実行してください。フォルダーは変わらないため、Chrome は拡張機能を保持して再読み込みします。新しいバージョンは稼働中のバージョンの隣に用意され、Python の依存関係が事前に確認されます。更新に失敗した場合は、以前のバージョンに戻して再インストールし、ブリッジを再起動します。 ブリッジから、公開インストールを直接更新することもできます(Nexus 製品間で共有される仕様)。~\.nexus\status\browser.json に version、releases/latest のリダイレクトから取得した latest(1 日に最大 1 回)、state、message が書き込まれます。GET /api/update はこの情報を返し、POST /api/update(ブリッジトークンが必要)は「Nexus Browser Update」タスクを開始します。このタスクはブリッジの外部で get.ps1 を実行し、done または failed を記録します(現在のバージョンは保持されます。エージェントが Chrome で作業中の場合は更新を延期します)。クローンは git で更新します。 あとから AI クライアントをインストールした場合も、もう一度実行してください。自分で作成したエントリや、サーバーをすでに提供している nexus-browser プラグインは変更されません。

クローンからのインストール(開発者向け)

必要なもの:uv、PowerShell 7、テスト用の Node.js。

git clone https://github.com/pironjulien/NexusBrowser.git
cd NexusBrowser
pwsh -NoProfile -File install.ps1
  • Python 環境、トークン、ログ、スクリーンショット、エクスポートは ~\.nexus\nexus-browser(クローンの外)に保存されます。 呼び出しごとのジャーナルは %LOCALAPPDATA%\NexusJournal\browser\ に保存されます(プライバシーを参照)。
  • スケジュールタスク Nexus Browser Bridge はトリガーなしで作成されます。ブリッジは必要に応じて(エージェントからの最初の呼び出し時、または schtasks /Run の実行時に)起動します。
  • Chrome(HKCU)に登録されるネイティブホスト com.nexus.browser_auth が、拡張機能の証明情報を計算します。トークンが Chrome に 渡ることはありません。
  • Antigravity のみ、プラグイン(サーバーとスキル)を通じて使用できます。また、共有 MCP デーモンのトークンが存在する場合に限ります。 プラグインは共有 HTTP デーモン(client/mcp_server.py --http、ポート 16182)を ?agent=antigravity で指定します。 このトークンがない場合、install.ps1 は警告を表示し、デーモンとこの登録をスキップします。ブリッジ、ネイティブホスト、 タスクは引き続きインストールされます。install.ps1 -Register(1 行インストーラーが実行するもの)は、Claude Code、Claude Desktop、 Codex に stdio 経由でサーバーを登録し、Antigravity が見つかった場合は nexus-browser プラグインとして登録します (scripts/register_clients.py)。その際、クライアント名(タブグループ)を NEXUS_BROWSER_AGENT に設定します。このオプションを 使用しない場合は、サーバーを自分で追加してください(下記を参照)。NEXUS_PACK=1(Nexus パック)を指定すると、確認や待機、 ウィンドウ表示なしで実行されます。
  • ブリッジが Chrome を再起動する必要がある場合は、Default プロファイルを使用します。追加の Chrome フラグ(言語など)は、 NEXUS_CHROME_EXTRA_ARGS 環境変数で指定できます(許可リスト:--lang、--accept-lang、 --variations-override-country、--disable-features=Glic…、--force-dark-mode。それ以外は無視されます)。
  • 以前の「Antigravity Browser Bridge」から移行する場合、そのタスク(ポートは同じ)とネイティブホスト com.nexusagy.bridge_auth は削除されます。

続いて、extension\ を chrome://extensions で一度読み込みます(デベロッパーモードで「パッケージ化されていない拡張機能を読み込む」を選択)。古い 「Antigravity Browser Bridge」がある場合は削除してください。拡張機能 ID は manifest.json の公開 key によって固定されています (blcgddmjdkobmgakjffjpgiicjlflgjf)。PC やフォルダーに関係なく同じ ID となり、ブリッジとネイティブホストが受け入れるオリジンはこれだけです。

PyPI から MCP サーバーをインストールする

上記のブリッジと拡張機能をインストールすると、クローンを使わずに、任意の MCP クライアントから PyPI 経由でサーバーを直接起動できます。

claude mcp add nexus-browser --scope user -e NEXUS_BROWSER_AGENT=Claude -- uvx nexus-browser

VS Code にインストール VS Code Insiders にインストール

Gemini CLI:gemini extensions install https://github.com/pironjulien/NexusBrowser(PyPI のサーバーと、gemini-extension.json のスキルをインストールします)。

Claude Desktop 拡張機能:nexus-browser.mcpb をダウンロードして Claude Desktop のウィンドウにドロップするか、 設定 > 拡張機能から追加します(サーバーは uv によって PyPI からインストールされます)。

ブリッジがなくても、サーバーは起動して 49 個のツールを一覧表示します。すべての呼び出しに対し、初回のみ必要なインストール方法を示す明確なエラーを返します。

セキュリティ(エージェントではなく、拡張機能とブリッジが担います)

  • 相互認証ブリッジ(nexus-browser/1):両方のノンスに対する HMAC 証明を行い、その後、接続ごとのキーと厳密なシーケンス番号で各メッセージに署名します。HTTP では X-Nexus-Browser-Token が必須で、ブラウザーのオリジンからのアクセスはすべて拒否されます。
  • ネイティブホストを使わないペアリング(Chrome に登録できない場合。たとえば、レジストリへの書き込みが仮想化される Microsoft Store アプリなど):scripts/pair-extension.ps1 がブリッジに単回使用の 256 ビット秘密鍵を要求します(有効期間は 5 分、証明に 5 回失敗すると無効になり、ブリッジトークンを使って POST /api/pair を実行します)。その後、chrome-extension://<id>/pair.html#<secret> を開きます。ページはアドレスから秘密鍵を消去して、双方向の証明を行い、両側でその秘密鍵とハンドシェイクから拡張機能のキーを導出します。ブリッジは拡張機能 ID ごとにキーを保持します(通知された ID は接続のオリジンと一致する必要があります)。拡張機能は、独自の IndexedDB に抽出不可能な WebCrypto キーとして保持します(コンテンツスクリプトから読み取れる chrome.storage には決して保存しません)。ネイティブホストと同じ証明、セッションキー、署名付きメッセージを使います。ネイティブホストがインストールされている場合は、引き続きそちらが優先されます。失効:POST /api/pair/revoke。
  • タブの所有権:すべてのブリッジクライアントは自身を識別します(エージェント+セッションヘッダー。ブリッジが署名付きチャネルで転送します)。browser_new_tab で開いたタブはそのセッションに属します(chrome.storage.session)。別のタブ(ユーザーのタブや別のエージェントのタブ)に対するページコマンドはすべて拒否されます。ユーザーのタブを操作できるのは browser_adopt_tab(tab_id, user_asked=True) を通じた場合のみです。すべてのページツールで tab_id が必須です。MCP プロセスが終了したセッション(または 1.618 x 60 秒間応答せず、サーバーは 37 秒ごとに応答します)のタブは孤立状態になります。同じエージェントが再取得(browser_adopt_tab。起動時にも自動的に実行)、閉じる、または解放できますが、別のエージェントは操作できません。
  • クライアントごとのタブ一覧:browser_list_tabs と browser_active_tab が返すのは、呼び出し元自身のタブ(開いたタブまたは取得したタブ)の完全なタイトルと URL のみです。ユーザーやほかのエージェントのタブではドメインのみが表示されます(url = オリジン、title は null、redacted: true)。id とドメインを指定して browser_adopt_tab を実行するには十分ですが、URL に含まれるトークンやドキュメント ID が表示されることはありません。
  • 予約済み保守コマンド:拡張機能を再読み込みできるのはインストーラー(install.ps1、ID は Installer)のみで、Chrome 内でエージェントが作業していない場合(実行中のコマンドがなく、稼働中のセッションがタブを保持していない場合)に限られます。ダウンロードの履歴項目を消去できるのは、そのダウンロードを開始したタブのクライアントのみです(browser_wait_download によって特定されます)。
  • browser_cdp_send 用の CDP 許可リスト。すべての拡張機能スクリプトは 分離されたワールドで実行されます(ページのワールドにアクセスするのは browser_eval、YouTube の文字起こし、browser_cdp_send(..., world="page") のみです)。
  • 秘密情報:秘密のヘッダー、URL パラメーター、JSON/フォームの本文フィールドはマスキングされます(ページネーショントークンと LLM トークンカウンターは保持されます)。Cookie 値が含まれるのはローカル開発用オリジンのみです(include_values=True)。秘密フォルダーからのアップロードはブリッジ自体が拒否します(パスは正規化されます)。パスワード、一回限りのコード、または決済カードのフィールド(type=password、autocomplete の current-password、new-password、one-time-code、cc-number、cc-csc、cc-exp)の値がページ外に出ることはありません。browser_content(html モードを含む)、browser_vision_inspect、browser_find、browser_axtree、および browser_fill が読み戻す値は、代わりに [masked value] を返します。
  • browser_eval はページへの完全なアクセスを許可し、マスキングは行いません:browser_cdp_send(Runtime.evaluate) と同様に(どちらのワールドも同じドキュメントを共有します)、ページから読み取れる情報(document.cookie を通じた HttpOnly ではない Cookie、localStorage、sessionStorage、IndexedDB、フォームフィールド)を読み取り、ユーザーのセッションを使って fetch を実行します。上記のマスキングは専用ツールを対象としており、スクリプトや browser_cdp_send の生の Chrome 応答(DOM.getOuterHTML、Accessibility.getFullAXTree など)は対象外です。これは意図的な仕様であり、ツール、スキル、サーバーの指示に明記されています。scriptToEvaluateOnLoad を指定した Page.reload は拒否されます(読み込み時にスクリプトが挿入されるため)。
  • 外部への操作には、その具体的な操作に対するユーザーの同意が必要です(2.12.0):クリック(browser_click)、Enter/Control+Enter/Space(browser_press_key、browser_fill の keys)、入力による改行(browser_type_keys)、ドラッグの前に、サーバーは操作を伴わずにトリガーを読み取ります。読み取りにはブリッジの既存の読み取り経路(ロケーター用の find と、拡張機能の分離されたワールドで cdp-send により評価される読み取り専用スクリプト client/trigger_probe.js)を使います。新しい拡張機能アクションは必要ないため、拡張機能がすでに読み込まれている環境でも動作します。クリックされたコントロール、またはフォーカス中のフィールドが属するフォームの送信ボタンを読み取ります。共有ポリシー(client/garde-fous.json)が外部への操作を示す語句(送信、支払い、購入、注文、公開、投稿、発信、送金、登録、予約など)を検出すると、操作の詳細(対象、宛先、機密情報を除いたフォームの内容、添付ファイル、ページのオリジンとパス)をまとめて操作を拒否し、有効期間 10 分の単回使用トークンを発行します。エージェントはこの概要をユーザーに示し、ユーザーが同意した場合に限り、confirm=true と accord="<token>" を付けて同じ呼び出しを再実行します。同意後に変更があれば無効になります。confirm=true だけでは決して不十分で、ページ内で読み取ったトークンは認識されません。送信ボタンに Submit、Soumettre、Transmettre、Postuler、Valider ma demande と表示され、フォームに入力データ(自由記述、メールアドレス、電話番号、ファイル)が含まれる場合、または読み取れなかった場合は、フォーム送信も外部への操作とみなされます。ログインフォーム(パスワードフィールドがある場合)、検索、フィルター、空のフォーム、ウィザードの次へ進む操作は、引き続き確認なしで行えます(このブラウザー固有のルールです。トリガーのフォームを読み取るツールはこれだけです)。中立的なリンクやボタンも確認なしで操作できます。読み取りに実際に失敗した場合に限り、チェックは安全側に倒して拒否します(スクリプトエラー、クロスオリジンフレーム内にフォーカスがある、Enter の対象フィールドのフォームが読み取れない場合)。AI に向けた指示のように見えるページテキスト出力(browser_content、browser_axtree、browser_export、Google と YouTube のエクスポート、ネットワーク本文)には、シグナルとしてのみ untrusted_note が付与されます。CLI でも同じチェックを実行しますが、コマンド間でトークンを引き継げません(コマンドごとに別プロセスのため)。そのため、外部への操作は概要を表示して拒否し、MCP サーバーを使用するよう案内します。それ以外の操作は確認なしで実行できます。
  • WebMCP ツール(document.modelContext を通じてエージェントに独自のツールを公開するサイト。オリジントライアル中のサイトでは Chrome 149 以降でネイティブ対応):browser_webmcp_tools はツールを一覧表示し、browser_webmcp_call は Chrome 独自の getTools()/executeTool() を呼び出します。これらは拡張機能の分離されたワールドで cdp-send により評価されます(ページから置き換えることはできず、新しい拡張機能アクションや Chrome フラグも不要です)。呼び出しにも同じ同意確認が適用されます。ページが consequentialHint を付けたツール、名前、タイトル、説明、フォームの送信ボタンに外部への操作を示す語句を含むツール、または送信操作(Submit、Transmettre、Postuler など)を示し入力データを受け取るツールは、具体的な呼び出し内容(ツール、オリジン、機密情報をマスキングしつつトークンに紐付けた入力、ページ)を示して拒否され、単回使用トークンが発行されます。readOnlyHint は何も免除しません。これはページ側の自己申告です。チェック後に定義が変更されていない場合に限り、ツールが実行されます。説明と出力はページテキストであるため、untrusted_note が付与されます。
  • 同意確認を経由しない経路:browser_eval と browser_cdp_send(Runtime.evaluate、Input.dispatch*)は、設計上、ページへの完全なアクセスを維持しており、このチェックなしでクリックや送信を実行できます。ツールの説明とサーバーの指示では、外部への操作にこれらを決して使わないようモデルに伝えています。browser_drag_and_drop の座標のみを指定する操作も読み取りの対象外です。
  • 緊急停止(Ctrl+Alt+Shift+Esc、~\.nexus\stop):すでに実行中のコマンド(入力、ドラッグ、待機)はキャンセルされ、デバッガーは切断され、120 秒間すべての操作が拒否されます。同じファイルプロトコルが NexusWindows のエージェントと共有されています。
  • 操作対象:各エージェントのタブは、そのエージェントの名前が付いた Chrome のタブグループに配置されます。browser_release_tab を使うと、タブを返せます。ツールバーのアイコンをクリックすると、読み取り専用のポップアップが開き、ブリッジの状態とエージェントごとのタブを確認できます。
  • ブリッジトークンを持つ人はブラウザーセッションを操作できます。~\.nexus\nexus-browser\bridge-token は非公開にしてください。

チェック

pwsh -NoProfile -File test.ps1         # offline: ruff, Pyright, pytest (real bridge on ephemeral ports), Node tests
pwsh -NoProfile -File test.ps1 -Full   # plus real validation in the user's Chrome: --mouse then --full-live
pwsh -NoProfile -File verify.ps1 -Browser  # task, native host, bridge reached, loaded extension up to date

test.ps1 は、install.ps1 が作成した環境を使用します。

既存のインストールを更新する際は、拡張機能で読み込まれているバージョンと機能も確認し、必要に応じて再読み込みしてから、管理対象の Browser MCP ワーカーを再読み込みします。 エージェントがブラウザーのタブを所有している間は更新を保留します。更新処理がユーザーのタブを操作したり、アクティブにしたりすることはありません。 Chrome が閉じている場合、更新された拡張機能のファイルは次回の起動時に読み込まれます。この状態はリアルタイムの検証ではありません。

プライバシー

NexusBrowser は PC 上で完全に動作します。Chrome 拡張機能、127.0.0.1 にバインドされたローカルブリッジ(ローカルトークンで認証)、MCP サーバーで構成されています。アカウント、テレメトリー、分析機能、リモートサーバーはなく、作成者や第三者に情報が送信されることもありません。

  • 読み取る情報:エージェントが開いたタブ(または、明示的に引き継ぎを許可したユーザーのタブ)にあるページのテキストとアクセシビリティツリー、スクリーンショット、コンソールログ、ネットワークリクエスト(ヘッダーと秘密情報を含むフィールドはマスク)、browser_get_cookies の呼び出し時の Cookie。パスワード、コード、カード番号は読み取り時にマスクされ、スクリーンショットと PDF ではドットで表示されます(クロスオリジンを含むすべてのフレームが対象です)。コンソールログもネットワークの本文と同様にマスクされます。browser_eval と、browser_cdp_send 経由の Runtime.evaluate はページに完全にアクセスできます。
  • ネットワーク:ページは、ユーザー自身の Chrome とセッションを使用して、ユーザーが閲覧する場合と同様に読み込まれます。エクスポート(Google Docs、Sheets、Slides、YouTube の文字起こし)は、ユーザーのセッションで各サイトから取得されます。
  • 送信先:ツールの結果は、接続した AI クライアント(Antigravity、Claude、Codex…)に返されます。クライアントは独自のプライバシーポリシーに従って、結果をモデルプロバイダーに送信する場合があります。
  • 保存する情報:~/.nexus/nexus-browser/ に、Python 環境、ブリッジトークン、bridge.log(接続と緊急停止のイベントを記録。1 MB でローテーションし、バックアップを 3 つ保存)、install.log、スクリーンショット(最大 50 枚。それぞれ 24 時間以内に削除)、およびユーザーが要求したエクスポートを保存します。拡張機能は Chrome のセッションストレージにタブの所有権を保持し、Chrome を閉じると消去されます。
  • Gmail の未読件数カウンター(既定ではオフ):ツールバーのポップアップに表示される、MX Keypad AI Agents 用の項目です。チェックを入れると、拡張機能がユーザー自身のセッションで Gmail の公式未読フィードを 1 分ごとに読み取ります(「Gmail チェッカー」拡張機能と同様です)。ブリッジが ~/.nexus/nexus-browser/compteurs.json に書き込むのは件数のみです。Chrome プロファイルごとにランダムな識別子で 1 件を記録し、送信者、件名、本文は保存しません。チェックを外すと、そのプロファイルの項目が削除されます(残りがない場合、ファイルも削除されます)。
  • ジャーナル:%LOCALAPPDATA%\NexusJournal\browser\<agent>\<YYYY-MM>.jsonl(または NEXUS_JOURNAL_HOME)に保存される、Nexus ツール共通の形式です。ツール呼び出しごとに 1 行記録し、呼び出した AI、アクション、結果、所要時間、手法、タブの登録可能ドメイン(google.com など。アドレスそのものは記録しません)、固定リストから選択したエラーカテゴリーを含みます。ページのテキスト、入力値、タイトル、画像は記録しません。情報が外部に送信されることはありません。月ごとのファイルは削除するまで保持されます。browser フォルダー全体または個別の月次ファイルは、いつでも削除できます。
  • 削除方法:Chrome から拡張機能を削除し、スケジュールされたタスク Nexus Browser Bridge とレジストリキー HKCU\Software\Google\Chrome\NativeMessagingHosts\com.nexus.browser_auth を削除してから、~/.nexus/nexus-browser/ と %LOCALAPPDATA%\NexusJournal\browser\ を削除します(1 行のインストール後は %LOCALAPPDATA%\NexusBrowser\ も削除してください)。インストーラーが登録した nexus-browser の設定も削除します。claude mcp remove nexus-browser -s user を実行し、~/.codex/config.toml の [mcp_servers.nexus-browser]、Antigravity の plugins/nexus-browser フォルダー、Claude Desktop の claude_desktop_config.json にある mcpServers の下の nexus-browser を削除してください。

質問や懸念がある場合は、このリポジトリに issue を作成してください。

制限事項

  • Windows と Chrome のみ(Manifest V3、chrome.debugger)。デバッガーの接続中は、エージェントのタブに Chrome の「デバッグ中です」というバナーが表示されます。保護されたページ(chrome://、ウェブストア)はスクリプトで操作できません。
  • タブの所有権は MCP プロセスごとです。同じ会話のサブエージェントは共有します。
  • YouTube の文字起こしでは、ページ自身のプレーヤー(ページのワールド)を読み取ります。
  • 外部アクションの確認では、ジェスチャーの直前にトリガーを読み取ります。その間にフォームやボタンを書き換えるページは検知されません。<form>、ダイアログ、フィールドとボタンを含む最も近いブロック(チャット入力欄のように、フィールドは最大 3 つ)を認識します。カスタムチップで表示される宛先は、email 属性がある場合にのみ読み取られます。トークンが証明するのは、このアクションが変更されずに実行される前に説明されていたことだけであり、誰が承認したかではありません。ユーザーとツールの間の唯一の窓口は、引き続きエージェントです。
  • WebMCP:readOnlyHint は何も免除しません(ページがそう主張しても、外部への影響がないことの証明にはなりません)。consequentialHint は同意を追加するだけです。クロスオリジン iframe のツールは、仕様の要件どおり、そのフレームがトップページに公開している場合(exposedTo)にのみ一覧表示されます。Chrome の CDP WebMCP ドメイン(Chrome DevTools MCP が使用)は使用しません。このドメインには、Chrome を --enable-features=DevToolsWebMCPSupport を指定して起動する必要があります。
  • コードコメントはフランス語です。

ライセンス

MIT。詳しくは LICENSE を参照してください。Copyright (c) 2026 Julien Piron.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。