ClaudeにBrowser Control MCPをつないでFirefoxのタブと履歴を読ませる
Firefox拡張とMCPサーバーを組み合わせ、Claudeに開いているタブ、閲覧履歴、ページ本文を扱わせる手順です。ドメインごとの同意と共有シークレットで、操作の範囲を絞る仕組みも説明します。
Browser Control MCPでClaudeにできること
Browser Control MCPは、Firefoxのタブ、閲覧履歴、ページの本文をAIアシスタントに扱わせるためのMCPサーバーです。Firefox拡張とMCPサーバーの2つで1組になっています。拡張だけ、サーバーだけでは動きません。
Claudeのコネクタ一覧では「Firefox Control」の名前で、作者eyalzhのコネクタとして掲載され、Anthropic verifiedの表示が付いています。追加されたのは2025年11月です。
扱えるのは、タブの操作、履歴の検索、ページ本文の読み取りに限られます。クリックやフォーム入力のようなページ操作は含まれません。
| 操作 | 内容 | ユーザーの同意 |
|---|---|---|
| タブを開く・閉じる | 内容URLを開く、指定のタブを閉じる | ユーザーの同意記載なし |
| タブ一覧の取得 | 内容開いているタブを列挙する | ユーザーの同意記載なし |
| タブのグループ化と並べ替え | 内容名前と色を付けたグループを作る | ユーザーの同意記載なし |
| 履歴の読み取りと検索 | 内容最近の閲覧履歴を引く | ユーザーの同意記載なし |
| ページ本文とリンクの読み取り | 内容本文テキストとリンクを返す | ユーザーの同意ドメインごとに必要 |
| テキストの検索とハイライト | 内容タブ内の語を探して強調する | ユーザーの同意必要 |
| タブのスクリーンショット | 内容見えている範囲を撮る | ユーザーの同意タブごとに必要 |
コネクタ一覧に載るツールは8つです。open-browser-tab、close-browser-tabs、get-list-of-open-tabs、get-recent-browser-history、get-tab-web-content、reorder-browser-tabs、group-browser-tabs、find-highlight-in-browser-tabが並びます。
スクリーンショットは、GitHubのREADMEには機能として書かれています。一方でコネクタ一覧のツール名には見当たりません。使いたい場合は、導入後にClaudeが見えているツールの一覧で確かめてください。
導入手順 — Claude Desktopに入れる場合
順序が大切です。先にFirefox拡張を入れ、そこで表示される秘密鍵を、あとからMCPサーバー側に渡します。
Claude Desktopでの導入の流れ
- 1
Firefox拡張を入れる
addons.mozilla.orgの「Browser Control MCP」を追加します。インストール後に「Manage extension」ページが自動で開きます。
- 2
秘密鍵を控える
拡張の設定ページに共有シークレットが表示されます。about:addonsからも開けます。これをコピーします。
- 3
Claude Desktop拡張を入れる
「Manage extension」ページにDXTファイルへのリンクがあります。ファイルを開くか、Claude Desktopの設定画面にドラッグします。
- 4
拡張を有効にして秘密鍵を貼る
DXT拡張を有効にし、設定欄にさきほどの秘密鍵を貼ります。接続が確立するまで数秒かかることがあります。
DXTの導入は、最新のClaude Desktopでのみ動くと書かれています。古いバージョンでは次の手動設定を使います。
手動でMCPサーバーを設定する
リポジトリをクローンし、ビルドしてからサーバーの実体を指定します。
git clone https://github.com/eyalzh/browser-control-mcp.git
cd browser-control-mcp
npm install
npm run buildFirefoxにはまだ拡張を公開版として入れていない場合、about:debuggingの「This Firefox」から「Load Temporary Add-on...」を選び、firefox-extensionフォルダのmanifest.jsonを指定します。一時的なアドオンなので、Firefoxを再起動すると読み込み直しが必要です。
設定ファイル(Claude Desktopならclaude_desktop_config.json)には、次の形で書きます。
{
"mcpServers": {
"browser-control": {
"command": "node",
"args": ["/path/to/repo/mcp-server/dist/server.js"],
"env": {
"EXTENSION_SECRET": "<拡張の設定ページに出る秘密鍵>",
"EXTENSION_PORT": "8089"
}
}
}
}/path/to/repoは実際のクローン先に置き換えます。EXTENSION_PORTは省略でき、既定値は8089です。ポートを変えるときは拡張側とサーバー側で合わせます。
Dockerでサーバーを動かす構成もあります。この場合は-p 127.0.0.1:8089:8089でポートを公開し、CONTAINERIZED=trueを渡します。ホスト側のアドレスを127.0.0.1に固定している点が肝で、同じネットワークの別マシンから届かない形になります。
Claude Codeに追加する場合
READMEが例示しているのはClaude Desktopの設定です。Claude Codeでも、MCPサーバーの起動コマンドと環境変数が分かれば追加できます。claude mcp addで、stdioサーバーとして登録します。
claude mcp add --transport stdio \
--env EXTENSION_SECRET=<秘密鍵> \
--env EXTENSION_PORT=8089 \
browser-control -- node /path/to/repo/mcp-server/dist/server.js--envの直後にサーバー名を置くと、名前が環境変数の組として読まれて拒否されます。上の例のように、--transport stdioを前に置いてください。--より後ろは、サーバーの起動コマンドとしてそのまま渡されます。
秘密鍵を含む設定は、既定のローカルスコープなら~/.claude.jsonに保存され、そのプロジェクトでだけ読み込まれます。--scope projectにすると.mcp.jsonに書かれ、リポジトリで共有されます。秘密鍵をコミットしないよう、このコマンドではスコープを変えないのが無難です。
追加後はclaude mcp get browser-controlで接続状態を見られます。管理設定でMCPの追加が止められている環境では、追加自体が失敗します。その場合の見分け方はclaude mcp addが失敗する原因にあります。
閉じる操作だけを止める権限設定
タブ整理で一番手戻りが大きいのは、Claudeが誤ったタブを閉じる事態です。Claude Codeの権限では、MCPツールをmcp__<サーバー名>__<ツール名>で指定できます。close-browser-tabsだけを確認付きにする例です。
{
"permissions": {
"allow": [
"mcp__browser-control__get-list-of-open-tabs",
"mcp__browser-control__get-recent-browser-history"
],
"ask": [
"mcp__browser-control__close-browser-tabs"
]
}
}一覧と履歴は自動で通し、閉じる操作は毎回、実行前に確認が入ります。サーバー名browser-controlは、上のclaude mcp addで付けた名前と一致させます。名前を変えたなら、ルール側も変えてください。
同意の仕組み — Web自動化MCPとの違い
Browser Control MCPの設計は、Playwright系のようなWeb自動化MCPと比べて、できることを意図的に削っています。READMEはこの違いを「ユーザー自身のブラウザで安全に使うため」と説明しています。
Web自動化MCPとBrowser Control MCP
Web自動化MCP
ページの変更、ページ上の操作、任意のスクリプト実行までを扱えます。できることが広いぶん、個人のブラウザにつなぐと影響も広がります。
Browser Control MCP
ページの変更、操作、任意のスクリプト実行に対応しません。個人のブラウザにつなぐことを想定しています。
READMEが挙げる安全面の特徴は、次の6点です。
- 本文の読み取りには、ブラウザ上でドメインごとの明示的な同意が要る。これは拡張のマニフェストの段階で強制される
- スクリーンショットは、ユーザーが拡張のツールバーボタンを押したタブだけが対象。FirefoxのactiveTab権限に依存し、タブが遷移するか閉じると失効する
- 拡張は、スクリーンショットのために広いホスト権限を要求しない
- MCPサーバーと拡張の通信はローカル限定で、共有シークレットを使う
- リモートへのデータ収集や追跡はしない
- 拡張側にツール呼び出しの監査ログがあり、ツールごとの有効・無効も切り替えられる
同意が拡張のマニフェストレベルで強制される点は、Claude側のプロンプトでは変えられないことを意味します。Claudeに「全部読んで」と頼んでも、同意していないドメインの本文は返りません。
ここで効いているのは、プロンプトではなくブラウザの仕組みです。読ませたくないドメインは、CLAUDE.mdに書くより、ブラウザ側で同意しないでおくほうが筋の通った止め方です。
試せる指示と、頼み方のコツ
READMEの用例は、タブ整理、履歴検索、調べものの3系統です。
- 「仕事に関係のないタブをすべて閉じて」
- 「開発関連のタブを『Development』という新しいグループにまとめて」
- 「過去24時間にアクセスしていないタブをすべて閉じて」
- 「ニュージーランドのミルフォードトラックについての記事を履歴から探して」
- 「先週見たAI関連の記事を最大10件、重複なしで開いて」
読み取りと整理は、頼み方で結果が変わります。閉じる指示を出す前に、まず一覧を出させる運用が安全です。
タブを閉じる指示の出し方
一度に頼む
「仕事に関係のないタブを閉じて」とだけ伝えると、何を仕事と見なしたかを確かめる前に閉じる操作が走ります。
一覧を挟む
「開いているタブを一覧にして、閉じる候補に印を付けて。私が確認してから閉じて」と頼みます。候補を見てから、閉じる範囲を指示できます。
Claude Codeなら、権限設定でclose-browser-tabsを確認付きにしておくと、頼み方に関係なく実行前に止まります。
使う前に押さえる注意点
READMEには「まだ実験的で、利用は自己責任」と明記されています。ツール呼び出しは、ほかのMCPサーバーと同様に、許可と監視を丁寧に行うよう求められています。
ページ本文は外部の入力になる
ページ本文を読むツールは、Webの文章をそのままClaudeの文脈に入れます。ページに書かれた指示を、Claudeがユーザーの指示と取り違える危険はゼロにできません。Claude Codeのドキュメントも、外部のコンテンツを取得するサーバーは、プロンプトインジェクションのリスクにさらされると注意しています。
読み取りに限定した設計は、被害の幅を狭める助けになります。ただ、閉じる・開くといった操作は残っています。信頼できないページを読ませた直後は、閉じる操作の承認を丁寧に見るのが安全です。
日常のブラウザと分ける
READMEは、個人のFirefoxで動かしたくない場合の代案を示しています。Firefox Developer Editionのような別のFirefoxを入れて、そちらにだけ拡張を入れる方法です。ログイン済みのサービスや履歴が多い日常のプロファイルから、切り離せます。
コネクタ一覧の側も、信頼できる開発者のコネクタだけを使うよう注意しています。Anthropicはツールの提供内容を管理せず、期待どおりに動くことや、あとから変わらないことも検証できないという説明です。
つまずきやすい点
- 接続の確立には数秒かかる。すぐ繰り返し依頼せず、少し待つ
- 秘密鍵は拡張の設定ページの値と一致させる。拡張を入れ直したら再確認する
- ポートを変えたときは、拡張とサーバーの両方を揃える
- Dockerでは、ポート公開を
127.0.0.1に限定する - コネクタ一覧の案内どおり、まずFirefox拡張、次にコネクタの順で入れる
他のブラウザ系MCPとの使い分け
用途によって、選ぶ道具は変わります。
- 自分のFirefoxの状態(タブ、履歴、読んでいるページ)を渡したい: Browser Control MCP
- クラウド上のブラウザでページ操作をさせたい: Browserbase MCP
- スクレイピングや取得を自動化したい: Cloudflare Browser RenderingのMCP
- テストを複数の実機ブラウザで回したい: BrowserStack MCP
Browser Control MCPは、Web自動化の代わりにはなりません。フォーム送信やクリックはできないためです。逆に、日常のブラウザの状態を読ませる用途では、操作を持たない設計が利点になります。
まとめ
Browser Control MCPは、Firefoxの状態を読ませる用途に絞った、小さなMCPです。ページ本文はドメインごと、スクリーンショットはタブごとに、ブラウザ側の同意が要ります。
導入の山場は、拡張で表示される秘密鍵をサーバー側へ渡す手順です。Claude Codeでは、閉じる操作だけを確認付きの権限にしておくと、タブ整理を任せやすくなります。実験的な段階にあるため、日常のプロファイルから分けた別のFirefoxで試す選択肢も残っています。