camoufox-mcp について
camoufox-mcp は、Camoufox の検出対策 Firefox ブラウザーを自動化する MCP サーバーです。AI エージェントに、ブラウザー操作、分離セッション、ページ検査、ネットワークとコンソールの監視ツールを提供します。
主な機能
- 01ページ移動と要素操作
- 02分離セッションと保存済み認証状態の管理
- 03スナップショット、スクリーンショット、ページテキストの取得
- 04JavaScript 実行とフレームワーク状態の抽出
- 05ネットワークリクエストの監視と傍受
活用シーン
- 01Camoufox によるブラウザー操作の自動化
- 02複数の認証済みブラウザープロファイルの並行実行
- 03ページ検査とネットワーク活動の記録
MCP 対応
この MCP サーバーは、セッション、ページ、操作、検査、監視などの Camoufox ブラウザー自動化ツールを MCP クライアントに公開します。stdio で起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
42掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
🦊 Camoufox MCP
AI エージェント向けの検出回避ブラウザー自動化
Camoufox を使用したブラウザー自動化用 MCP サーバーです。Camoufox は検出回避機能を備えた Firefox ブラウザーです。
インストール
npx camoufox-mcp
Claude Desktop の設定
claude_desktop_config.json に追加します。
基本:
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"]
}
}
}
プロキシを使用する場合(環境変数経由):
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"],
"env": {
"PROXY_SERVER": "http://1.2.3.4:8080",
"PROXY_USER": "username",
"PROXY_PASS": "password"
}
}
}
}
続いて、~/.config/camoufox-mcp/settings.json に追加します。
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}
Camoufox MCP を選ぶ理由
| 機能 | Camoufox MCP | Chrome DevTools MCP |
|---|---|---|
| 検出回避 | ||
| ボット検出の回避 | ✅ 組み込み | ❌ 検出される |
| フィンガープリントのランダム化 | ✅ | ❌ |
| WebRTC の漏えい防止 | ✅ | ❌ |
| Canvas フィンガープリントの偽装 | ✅ | ❌ |
| 自動化 | ||
| 人間らしいカーソル移動 | ✅ 現実的な軌跡 | ❌ 瞬時に移動 |
| 人間らしい遅延を伴うクリック | ✅ | ❌ |
| GeoIP 自動設定付きプロキシ | ✅ タイムゾーン/ロケール | ❌ 手動 |
| JavaScript の評価 | ||
MainWorld eval(__NUXT__、__NEXT_DATA__) | ✅ | ✅ |
| Isolated eval(async/await) | ✅ | ✅ |
| セッション管理 | ||
| 分離されたブラウザーセッション | ✅ 複数のコンテキスト | ❌ 単一のコンテキスト |
| 認証済みセッションの事前読み込み | ✅ Cookie/localStorage の注入 | ❌ |
| セッション状態のエクスポート | ✅ JSON に保存 | ❌ |
| 機能 | ||
| Cookie ポップアップの自動非表示 | ✅ 50 種類以上のセレクター | ❌ |
| ユーザー操作の記録 | ✅ | ❌ |
| ネットワークの傍受 | ✅ | ✅ |
| コンソールの記録 | ✅ | ✅ |
| パフォーマンスのトレース | ❌ | ✅ |
| ブラウザー | ||
| エンジン | Firefox(Gecko) | Chrome(Chromium) |
| 自動インストール | ✅ 約 150MB | ✅ |
ツール
セッション管理
セッションは分離されたブラウザーコンテキストを提供します。各セッションは、それぞれ独自の Cookie、localStorage、キャッシュを持ちます。セッションを使うと、複数の認証済みプロファイルを同時に実行できます。
| ツール | 説明 |
|---|---|
create_session | 新しい分離セッションを作成します。必要に応じて、JSON ファイルから Cookie/localStorage を事前に読み込めます |
list_sessions | 各セッションのページ数とメタデータを含め、すべてのセッションを一覧表示します |
save_session | セッションの Cookie と localStorage を JSON ファイルにエクスポートします |
close_session | セッションと、そのセッションに属するすべてのページを閉じます |
list_context_files | 設定に登録されているコンテキストファイルを一覧表示します |
ページ管理
| ツール | 説明 |
|---|---|
new_page | 新しいページを作成します。必要に応じて、特定のセッション内に作成できます |
list_pages | セッション ID とともに、開いているすべてのページを一覧表示します |
select_page | ページをアクティブに設定します |
close_page | ページを閉じます |
ナビゲーションと操作
| ツール | 説明 |
|---|---|
navigate_page | URL への移動、戻る、進む、または再読み込みを行います |
click | UID で要素を指定してクリックします |
hover | 要素にカーソルを合わせます |
fill | フォームフィールドに入力します |
fill_form | 複数のフォームフィールドに一度に入力します |
press_key | キーまたはキーの組み合わせを押します |
drag | 要素を別の場所にドラッグします |
検査
| ツール | 説明 |
|---|---|
take_snapshot | 操作可能な要素の UID を含むテキストスナップショットを取得します |
take_screenshot | ページまたは要素のスクリーンショットを取得します |
get_page_text | テキストコンテンツを抽出します |
evaluate_mainworld | ページコンテキストで JS を実行します(同期のみ) |
evaluate_isolated | 分離されたコンテキストで JS を実行します(async に対応) |
get_framework_state | Next.js/Nuxt.js の状態を抽出します |
コンテキストの注入
| ツール | 説明 |
|---|---|
inject_context | JSON ファイルからセッションに Cookie と localStorage を注入します |
モニタリング
| ツール | 説明 |
|---|---|
start_network_capture / stop_network_capture | ネットワークリクエストをキャプチャします |
get_network_logs / clear_network_logs | キャプチャしたリクエストを表示/消去します |
intercept_network / remove_intercept | リクエストをブロックまたは変更します |
start_console_capture / stop_console_capture | コンソールメッセージをキャプチャします |
get_console_logs / clear_console_logs | コンソールメッセージを表示/消去します |
start_recording / stop_recording / get_recording_status | ユーザーの操作を記録します |
ユーティリティ
| ツール | 説明 |
|---|---|
dismiss_popups | Cookie 同意ポップアップを自動的に閉じます |
wait_for | テキストまたはセレクターを待ちます |
wait_for_navigation | ナビゲーションの完了を待ちます |
reload_settings | 設定ファイルから設定を再読み込みします |
get_config_paths | 設定ファイルのパスを表示します |
init_user_config | ユーザー設定ディレクトリを初期化します |
セッション
セッションを使用すると、複数の認証済みプロファイルを並行して実行できます。各セッションは、独自の Cookie と localStorage を持つ独立したブラウザーコンテキストです。
Browser (single Camoufox instance)
├── Session "github" (cookies from github.json)
│ ├── Page: github.com
│ └── Page: github.com/repo
├── Session "linkedin" (cookies from linkedin.json)
│ └── Page: linkedin.com/feed
└── Session "default" (no pre-loaded state)
└── Page: example.com
使用例
認証情報を事前に読み込んだセッションを作成する:
contextPath: "github-cookies.json"を指定してcreate_sessionを実行します。sessionIdが返されますurl: "https://github.com"とsessionIdを指定してnew_pageを実行すると、GitHub にログイン済みの状態で開きます
2 つのアカウントを同時に実行する:
contextPath: "account1.json"を指定してcreate_sessionを実行します。セッション A になりますcontextPath: "account2.json"を指定してcreate_sessionを実行します。セッション B になります- セッション A で
new_pageを実行すると、アカウント 1 でログインします - セッション B で
new_pageを実行すると、アカウント 2 でログインします
セッションの状態を後で使用するために保存する:
- セッションで手動でログインします
outputPath: "my-session.json"を指定してsave_sessionを実行すると、Cookie と localStorage がエクスポートされます- 次回、
contextPath: "my-session.json"を指定してcreate_sessionを実行すると、状態が復元されます
コンテキストファイルの形式
コンテキストファイルには、Playwright の storageState 形式が使用されます。
{
"cookies": [
{
"name": "session_id",
"value": "abc123",
"domain": ".example.com",
"path": "/",
"expires": 1735689600,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://example.com",
"localStorage": [
{ "name": "token", "value": "xyz789" }
]
}
]
}
コンテキストファイルを設定に登録する
settings.json にコンテキストファイルのパスを追加すると、list_context_files から参照できるようになります。セッションは必要に応じて遅延作成されるため、エージェントが create_session を呼び出すまではメモリを使用しません。
{
"contextPaths": [
"/path/to/github-cookies.json",
"/path/to/linkedin-cookies.json"
]
}
エージェントは list_context_files を呼び出して利用可能なファイルを確認し、必要に応じて目的の contextPath を指定して create_session を呼び出し、読み込むことができます。
設定
~/.config/camoufox-mcp/settings.json を作成します。
{
"browser": {
"headless": false,
"viewport": [1280, 1080],
"timeout": 30000,
"humanize": 0.5
},
"proxy": {
"enabled": true,
"server": "http://proxy.example.com:8080",
"username": "user",
"password": "pass",
"geoip": true
},
"contextPaths": []
}
プロキシの例
HTTP/HTTPS プロキシ:
{ "proxy": { "enabled": true, "server": "http://1.2.3.4:8080" } }
SOCKS5 プロキシ:
{ "proxy": { "enabled": true, "server": "socks5://1.2.3.4:1080" } }
認証あり(環境変数を使用):
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}
geoip: trueを設定すると、プロキシ IP の位置情報に基づいてブラウザーのタイムゾーンと言語・地域設定が自動調整されます。
詳細はこちら
- Camoufox - 検出防止機能を備えた Firefox ブラウザー
- camoufox-js - JavaScript/TypeScript バインディング
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。