
firefox-devtools-mcp v0.9.15
Firefox DevTools 用 Model Context Protocol サーバー - Remote Debugging Protocol を介して AI アシスタントが Firefox ブラウザを検査・制御できるようにします
Firefox DevTools MCP
WebDriver BiDi(Selenium WebDriver 経由)で Firefox を自動化するための Model Context Protocol サーバー。Claude Code、Claude Desktop、Cursor、Cline などの MCP クライアントで動作します。
リポジトリ: https://github.com/mozilla/firefox-devtools-mcp
注記: この MCP サーバーはローカルの Firefox ブラウザーインストールが必要で、glama.ai などのクラウドホスティングサービスでは実行できません。ローカルで実行するには
npx @mozilla/firefox-devtools-mcp@latestを使用するか、提供されている Dockerfile で Docker を使用してください。
セキュリティ
ブラウザー MCP サーバーには固有のリスクがあります。重要なプラクティスをいくつか示します:
- 専用の Firefox プロファイルを使用してください。 通常のプロファイルに対してサーバーを実行しないでください。エージェントはブラウザーが到達できるすべてのもの(Cookie や保存済みセッションを含む)にアクセスできます。
- アクセスするサイトには注意してください。 ページはエージェントを操作するように設計されたコンテンツ(プロンプトインジェクション)を返す可能性があります。自分が管理または信頼するサイトに限定してください。
- 必要なツールモジュールのみを有効にしてください。 デフォルトの
basicプリセットには既にevaluate_scriptが含まれています。--tool-preset slimでそれを除外できます。--tool-preset developer(デバッグ、ネットワーク、コンソール、プロファイラー)や--tool-preset mozilla(特権コンテキスト)などの上位プリセットは、エージェントが実行できる範囲をさらに拡大します。
リスクの完全な内訳と脆弱性の報告方法については、SECURITY.md を参照してください。
要件
- Node.js ≥ 20.19.0
- Firefox 100+ がインストールされていること(自動検出、または
--firefox-pathで指定)
Claude Code または Codex でのインストールと使用(npx)
推奨: npx を使用して、npm から公開されている最新バージョンを実行してください。
オプション A — CLI
Claude Code
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest
# 引数によるヘッドレス + ビューポート
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720
# または環境変数による指定
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest \
--env START_URL=https://example.com \
--env FIREFOX_HEADLESS=true
Codex
codex mcp add firefox-devtools -- npx @mozilla/firefox-devtools-mcp@latest
# 引数によるヘッドレス + ビューポート
codex mcp add firefox-devtools -- \
npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720
# または環境変数による指定
codex mcp add firefox-devtools \
--env START_URL=https://example.com \
--env FIREFOX_HEADLESS=true \
-- npx @mozilla/firefox-devtools-mcp@latest
オプション B — 設定ファイルを編集
Claude Code
Claude Code の mcp_settings.json に追加:
{
"mcpServers": {
"firefox-devtools": {
"command": "npx",
"args": ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
"env": {
"START_URL": "about:blank"
}
}
}
}
Codex
~/.codex/config.toml に追加:
[mcp_servers.firefox-devtools]
command = "npx"
args = ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"]
[mcp_servers.firefox-devtools.env]
START_URL = "about:blank"
オプション C — ヘルパースクリプト(ローカル開発ビルド)
npm run setup
# Claude Code を選択。スクリプトが JSON を適切なパスに保存します
MCP Inspector で試す
npx @modelcontextprotocol/inspector npx @mozilla/firefox-devtools-mcp@latest --start-url https://example.com --headless
その後、以下のようなツールを呼び出せます:
list_pages、select_page、navigate_pagetake_snapshotの後にclick_by_uid/fill_by_uidlist_network_requests(常時キャプチャ)、get_network_requestlist_downloads(常時キャプチャ)、set_download_behaviorscreenshot_page、list_console_messages
CLI オプション
フラグまたは環境変数(右側の名前)を渡せます:
--firefox-path— Firefox バイナリへの絶対パス--headless— UI なしで実行(FIREFOX_HEADLESS=true)--viewport 1280x720— 初期ウィンドウサイズ--profile-path— 特定の Firefox プロファイルを使用--firefox-arg— 追加の Firefox 引数(繰り返し指定可能)--start-url— 起動時にこの URL を開く(START_URL)--accept-insecure-certs— TLS エラーを無視(ACCEPT_INSECURE_CERTS=true)--connect-existing— 新しい Firefox を起動する代わりに、実行中の Firefox に接続(CONNECT_EXISTING=true)--marionette-port— connect-existing モード用の Marionette ポート、デフォルトは 2828(MARIONETTE_PORT)--pref name=value— 起動時にmoz:firefoxOptions経由で Firefox 設定を設定(繰り返し指定可能)--tool-preset— 有効にするツールモジュールを選択:slim、basic(デフォルト)、developer、mozilla、またはall。ツールモジュールとプリセット を参照。(TOOL_PRESET)--tools— 有効にするツールモジュールの明示的なリスト。--tool-presetを完全に上書きします(例:--tools pages network script)。ツールモジュールとプリセット を参照。--enable-script— 非推奨。--tool-preset developerまたは--tools ... script debuggingを使用してください。developerツールプリセットを選択します。(ENABLE_SCRIPT=true)--enable-privileged-context— 非推奨。--tool-preset mozillaまたは--tools ... privileged prefsを使用してください。mozillaツールプリセットを選択します。MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1が必要です(ENABLE_PRIVILEGED_CONTEXT=true)--android-device— Firefox for Android モードを有効化。値は ADB デバイスシリアル(例:emulator-5554)。接続されているデバイスを一覧表示するにはadb devicesを実行してください。値を省略するかautoを使用すると、接続されている単一のデバイスが自動的に選択されます。--android-wipe-app-data— Android モードがターゲットアプリのすべてのデータを消去することを確認。--android-deviceと一緒に必須です。(ANDROID_WIPE_APP_DATA=true)--android-package— Android アプリのパッケージ名、デフォルトはorg.mozilla.firefox。その他のパッケージ: Firefox Beta はorg.mozilla.firefox_beta、Firefox Nightly はorg.mozilla.fenix、Firefox Nightly Debug はorg.mozilla.fenix.debug、geckoview はorg.mozilla.geckoview_example(ANDROID_PACKAGE)--unrestricted-save-paths—saveToパラメータがデフォルトのルートの代わりにディスク上の任意の場所に書き込めるようにします。大きな出力をディスクに保存する と SECURITY.md のセキュリティに関する注記を参照してください。(UNRESTRICTED_SAVE_PATHS=true)--log-file— MCP サーバーのログを stderr の代わりにファイルに書き込みます。サーバー出力を隠す MCP クライアントでのデバッグセッションに便利です。詳細なデバッグログも含めるにはDEBUG=*を設定してください。例:--log-file /tmp/firefox-mcp.log
ツールモジュールとプリセット
ツールはモジュールにグループ化されています。名前付きプリセット(--tool-preset)または明示的なリスト(--tools)のいずれかで公開するモジュールを選択します。両方が指定された場合、--tools が優先され、プリセットは無視されます。
モジュール: pages、snapshot、input、network、console、screenshot、downloads、
utilities、management、webextension、profiler、screencast、script、debugging、
prefs、privileged。
プリセット(それぞれが前のプリセットのスーパーセット):
slim—pages、snapshot、input、screenshotbasic(デフォルト) —slimに加えてdownloads、script、utilities、management、webextension、screencastdeveloper—basicに加えてdebugging、network、console、profilermozilla—developerに加えてprefs、privilegedall— すべてのモジュール
デフォルトの basic には script が含まれ、したがって evaluate_script ツールが含まれることに注意してください。攻撃対象領域への影響については SECURITY.md を参照し、それを除外するには --tool-preset slim または明示的な --tools リストを使用してください。
# developer プリセットを使用(network、console、debugging、profiler ツールを追加)
npx @mozilla/firefox-devtools-mcp --tool-preset developer
# 必要なモジュールのみを有効化
npx @mozilla/firefox-devtools-mcp --tools pages network console
prefs および privileged モジュールには MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 が必要で、Mozilla 内部ビルドでのみ利用可能です。公開パッケージは要求された場合でもこれらをスキップし、除外したモジュール名を記載した警告をログに記録します。
