Skip to main content
Glama
thenailedone

firefox-browser-control

by thenailedone

Firefox Browser Control for Codex

Codex から、すでに開いている Firefox のセッションを操作できます。このプラグインは、非プライベートなタブを一覧表示して整理したり、ネイティブのタブグループを作成したり、タブを安全に開く、アクティブ化する、移動する、閉じるといった操作を実行できます。

Firefox 拡張機能とそのブリッジはローカルで実行され、TCP リスナー、テレメトリ、広告、拡張機能による直接のネットワークリクエストは一切ありません。ユーザーが要求したブラウザデータは、そのユーザーが設定した Codex 環境に渡されます。プライバシーポリシー を参照してください。

できること

  • Firefox コンパニオン拡張機能が接続されているか確認する。

  • タブとネイティブのタブグループを一覧表示する。

  • 選択したタブをグループ化する、または URL/タイトルの一致でタブをグループ化する。

  • タブのグループ解除、開く、アクティブ化、移動、閉じるを実行する。

ページコンテンツの読み取り、要素のクリック、フォームへの入力、プライベートウィンドウの検査、HTTP(S) 以外の URL への移動は、意図的に実行できません。

プロンプトの例:

  • “Firefox で開いている Gmail のタブをグループ化して。”

  • “開いている Firefox のタブを一覧表示して。”

  • “プロジェクトのドキュメントを新しい Firefox タブで開いて。”

Related MCP server: universal-browser-bridge

インストール

詳細なセットアップは plugins/firefox-browser-control/INSTALL.md を参照してください。かんたんに言うと:

git clone https://github.com/thenailedone/firefox-browser-control.git
cd firefox-browser-control
codex plugin marketplace add "$PWD"
codex plugin add firefox-browser-control@firefox-browser-control
node plugins/firefox-browser-control/scripts/install-native-host.mjs

利用可能になったら、Mozilla Add-ons から署名済み拡張機能をインストールします。開発中は、about:debugging#/runtime/this-firefox から plugins/firefox-browser-control/extension/manifest.json を一時的に読み込みます。その後、新しい Codex タスクを開始します。

仕組み

実装は 4 つの部分からなるローカルブリッジです:

Codex
  │ MCP over stdio
  ▼
MCP server (Node.js)
  │ newline-delimited JSON over a user-only Unix socket
  ▼
Firefox native-messaging host (Node.js)
  │ Firefox native messaging over stdin/stdout
  ▼
Firefox WebExtension
  │ WebExtension APIs
  ▼
Non-private tabs and tab groups in the running Firefox profile
  1. Codex がプラグインマニフェストから .mcp.json を検出し、scripts/mcp-server.mjs を起動します。

  2. MCP サーバーは、firefox_list_tabs や firefox_group_tabs のような厳密に定義されたツールを公開します。

  3. ツール呼び出しにはランダムなリクエスト ID が割り当てられ、ローカルの Unix ソケット経由で送信されます。

  4. scripts/native-host.mjs は、Firefox の長さプレフィックス方式のネイティブメッセージングプロトコルでそのリクエストを中継します。

  5. extension/background.js は、Firefox WebExtension API を使って要求された操作を実行し、同じ経路で結果を返します。

ネイティブホストは、Firefox 拡張機能が接続されている間ソケットを保持します。MCP サーバーはツール呼び出しごとに短命なソケット接続を行うため、Firefox の外部にバックグラウンドデーモンを常駐させる必要はありません。

なぜ 2 つのプロトコルがあるのか

Codex は stdio 上で Model Context Protocol を話しますが、Firefox 拡張機能がローカルプログラムと通信できるのはネイティブメッセージングだけです。この小さな Unix ソケットリレーは、TCP ポートを開かず、ブラウザをネットワークにさらすこともなく、その 2 つの環境を接続します。

ツール一覧

Tool

Purpose

firefox_status

拡張機能とネイティブブリッジが接続されていることを確認する。

firefox_list_tabs

タブ ID、サニタイズされたオリジン、ウィンドウ、グループ ID を返す。

firefox_list_groups

Firefox のネイティブなタブグループ ID と表示状態を一覧表示する。

firefox_group_tabs

明示的なタブ ID を名前付きグループにまとめる。

firefox_group_tabs_by_url

URL / タイトルでタブを照合し、ウィンドウごとにグループ化する。

firefox_ungroup_tabs

タブを現在のグループから外す。

firefox_open_tab

URL を開く。

firefox_navigate_tab

選択したタブを移動する。

firefox_activate_tab

タブとそのウィンドウにフォーカスを合わせる。

firefox_close_tabs

選択したタブを閉じる。

セキュリティモデル

  • ブリッジはネットワークポートではなく、Unix ソケットで待ち受けます。

  • ソケットは現在の OS ユーザーにのみ制限されます(0600)。

  • Firefox は、インストーラが宣言した拡張機能 ID からのみネイティブメッセージを受け付けます。

  • プライベートブラウジングのタブは拡張機能から見えません。

  • 完全な URL、URL クエリ / フラグメント、ページタイトル、ページコンテンツは Codex には返されません。タブ一覧の結果にはオリジンのみが含まれます。

  • MCP サーバーは、明示的な JSON Schema と固定されたツールからメソッドへのマッピングを強制します。

  • リクエストは 10 秒後にタイムアウトします。

  • 拡張機能は固定ディスパッチャ内のタブメソッドのみを実行し、移動は HTTP(S) URL と about:blank に限定します。

  • 一時ディレクトリのフォールバックでは、ユーザーごとに 0700 アクセス権のディレクトリを作成し、ソケットは 0600 になります。

拡張機能はウェブサイトのホスト権限を要求せず、直接のネットワークリクエストも行いません。ユーザーが Codex でタブ管理コマンドを実行したときだけ、サニタイズされたブラウジングアクティビティを送信します。

リポジトリ構成

.agents/plugins/marketplace.json             Codex marketplace catalog
plugins/firefox-browser-control/
  .codex-plugin/plugin.json                  Plugin metadata
  .mcp.json                                  MCP server launch configuration
  extension/                                 Firefox WebExtension
  scripts/mcp-server.mjs                     MCP tool server
  scripts/native-host.mjs                    Firefox/native-socket relay
  scripts/install-native-host.mjs            Native-host installer
  scripts/review-client.mjs                  Standalone reviewer test client
  skills/control-firefox/SKILL.md            Agent usage guidance

開発

Node.js 20 以降でリポジトリのチェックを実行します:

npm test

AMO 対応拡張機能のアーカイブをビルドします:

npm run build:extension

ZIP は artifacts/ に出力されます。ストア掲載の説明文、レビューア向けの手順、提出チェックリストは store/AMO_SUBMISSION.md にあります。

拡張機能を変更したら、about:debugging の一時アドオンの横にある Reload を使ってください。プラグインのメタデータ、スキル、または MCP サーバーを変更したら、プラグインをインストールし直し、新しい Codex タスクを開始してください。

制限

  • 拡張機能は署名されていないため、Firefox を再起動したら再度読み込む必要があります。

  • ネイティブホストの自動インストールは、現在 Linux と macOS に対応しています。

  • リレーは現在 Unix ソケットを使用しており、Windows ネイティブはサポートしていません。

  • 拡張機能を使うには、Node.js とネイティブホスト、それに Codex またはスタンドアロンのレビュークライアントが必要です。

  • これは独立したコミュニティコミュニティ統合であり、Mozilla や OpenAI とは提携・関係ありません。

  • これは独立したコミュニティインテグレーションであり、Mozilla や OpenAI の関連団体ではなく、その推奨も受けていません。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible AI agents to securely control Chrome tabs via a local bridge, with explicit per-tab sharing and human approval for consequential actions.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP-capable CLIs to operate real, already-logged-in Firefox tabs via a WebExtension and native messaging, without simulated input. Supports navigation, clicking, typing, reading, screenshots, and console/network capture with policy gating and frame awareness.
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server for Codex that provides on-demand, read-only access to Edge tabs and bookmarks, plus controlled interaction with agent-owned tabs. Requires manual activation via the browser extension and enforces a fail-closed security model.
    -