Stealth Browser Mcp について
Stealth Browser MCPは、Chrome系ブラウザーとChrome DevTools Protocolを基盤とする、MCP対応AIエージェント向けのブラウザー自動化サーバーです。ページ操作、抽出、ネットワーク調査のツールを構成でき、ボット対策への対応状況はサイトや環境によって異なります。
主な機能
- 01Chrome、Chromium、Edgeの自動操作
- 02フル、最小、カスタムのツール構成
- 03ネットワークリクエストとレスポンスの調査
- 04構造やスタイルを含むページ要素の抽出
- 05JavaScriptとCDPコマンドの実行
活用シーン
- 01ページの移動と要素の操作
- 02Webサイトのデバッグ時に通信を確認
- 03ページ要素と視覚的な詳細の抽出
- 04ログインやチャレンジ対応を含むブラウザー作業の自動化
MCP 対応
このサーバーはstdioまたはHTTPトランスポートを通じて、MCPクライアントにブラウザー操作とデバッグのツールを提供します。独自ブローカーなしで標準的なMCPクライアント設定を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Stealth Browser MCP
MCP 対応 AI エージェント向けのステルスブラウザー自動化です。
nodriver、Chrome DevTools Protocol、FastMCP を活用した Chrome 系ブラウザーの実際のインスタンスを使って、Cloudflare のチャレンジ、ボット対策チェック、ログイン画面を突破します。
スポンサー
NodeMaven — Web スクレイピングと自動化に最適な、業界最高品質の IP を提供する、最も効率的なプロキシプロバイダーです。
NodeMaven を選ぶ理由
- ZIP コードによるターゲティング
- 稼働率 99.9%
- IP フィルタリング:すべてのプロキシの不正利用スコアが 97% 未満
- KYC 不要
- プロキシ帯域幅チェッカー、メタタグチェッカー、IP ルックアップなど、独自の無料ツールを提供
Stealth-browser-mcp ユーザー向け特別コード
STEALTHMCP35— モバイルプロキシと住宅用プロキシが 35% オフSTEALTHMCP40— ISP(静的)プロキシが 40% オフ
スポンサー枠への掲載です。NodeMaven は本プロジェクトの有料スポンサーです。
目次
- スポンサー
- デモ
- 機能
- クイックスタート
- エージェントスキル
- 信頼モデル
- モジュール式アーキテクチャ
- サーバー設定
- ツールボックス
- Stealth と Playwright MCP の比較
- トラブルシューティング
- 使用例
- ショーケース
- ロードマップ
- コントリビューション
- サポート
- ライセンス
デモ
Stealth Browser MCP が Cloudflare のチャレンジを通過し、UI 要素を複製し、AI チャットコマンドを使ってネットワークトラフィックを調査します。
特徴
- ボット対策への耐性 - テストではCloudflareやQueue-It形式のチャレンジを通過しています。結果はサイト、地域、ブラウザーのバージョン、検出器のバージョンによって異なります。
- 11セクションにわたる101個のツール - 基本的なナビゲーションから高度なCDP関数の実行まで対応します。
- モジュール式の読み込み - 101個のツールすべてを実行することも、最小構成の21個のコアツールを実行することもできます。不要なセクションは無効にできます。
- ピクセル単位で正確な要素の複製 - CDPを介して、CSS、DOM構造、イベント、アニメーション、アセットを含む要素全体を抽出します。
- ネットワークの検査 - AI エージェントを通じて、リクエスト、レスポンス、ヘッダー、ペイロード、キャプチャした本文を検査できます。
- 動的フックシステム - 制限付きのPythonフックで、リクエスト/レスポンスのフローを傍受、ブロック、リダイレクト、充足、変更できます。
- CDPの実行 - 信頼されたローカルMCPクライアントを通じて、JavaScript、直接のCDPコマンド、ドキュメント読み込み前のスクリプトを実行できます。
- 即時のテキスト入力 - CDP経由で大量のコンテンツを貼り付けたり、人間らしいキーストロークで入力したり、信頼されたCDPキーイベントで実際のキーを押したりできます。
- クロスプラットフォーム - Windows、macOS、Linux、Docker、CI環境に対応し、ブラウザーとプラットフォームを自動検出します。
- ブラウザーのサポート - Chrome、Chromium、Microsoft Edgeに対応し、実行ファイルを自動検出します。
- シンプルなMCP連携 - カスタムブローカーなしで、標準のMCPクライアントから利用できます。
クイックスタート
1. インストール
Python 3.10以降と、Chrome、Chromium、またはMicrosoft Edgeが必要です。
pipxを使用する場合(推奨):
pipx install browserstealthmcp
これにより、PATHにstealth-browser-mcpコマンドが追加されます。pipx upgrade browserstealthmcpでアップグレードできます。uvx browserstealthmcpを使うと、インストールせずに実行できます。リリースではなく最新のコミットを実行するには、pipx install git+https://github.com/vibheksoni/stealth-browser-mcp.gitを使用します。
PyPI上のstealth-browser-mcpは別の無関係なプロジェクトに属しているため、PyPIパッケージ名はbrowserstealthmcpです。pipx install stealth-browser-mcpを実行すると、このプロジェクトではなく、その別プロジェクトがインストールされます。
クローンからインストールする場合(開発用):
git clone https://github.com/vibheksoni/stealth-browser-mcp.git
cd stealth-browser-mcp
python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate
pip install -r requirements.txt
2. MCPクライアントに追加する
pipxでインストールした場合:
claude mcp add stealth-browser-mcp -- stealth-browser-mcp
または、任意のクライアントのJSON設定に追加します。
{
"mcpServers": {
"stealth-browser-mcp": {
"command": "stealth-browser-mcp",
"args": [],
"env": {}
}
}
}
クライアントからコマンドが見つからない場合は、pipx listで表示されるフルパスを使用してください。uvを使う場合は、インストールを省略して"command": "uvx", "args": ["browserstealthmcp"]を使用できます。
Claude Code CLIでクローンから実行する場合:
Windows:
claude mcp add-json stealth-browser-mcp "{\"type\":\"stdio\",\"command\":\"C:\\path\\to\\stealth-browser-mcp\\venv\\Scripts\\python.exe\",\"args\":[\"C:\\path\\to\\stealth-browser-mcp\\src\\server.py\"]}"
macOS / Linux:
claude mcp add-json stealth-browser-mcp '{
"type": "stdio",
"command": "/path/to/stealth-browser-mcp/venv/bin/python",
"args": ["/path/to/stealth-browser-mcp/src/server.py"]
}'
例のパスを、実際のクローンのパスに置き換えてください。
手動でのJSON設定(Claude Desktop、Cursorなど)
Windows(%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"stealth-browser-mcp": {
"command": "C:\\path\\to\\stealth-browser-mcp\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\stealth-browser-mcp\\src\\server.py"],
"env": {}
}
}
}
macOS / Linux(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"stealth-browser-mcp": {
"command": "/path/to/stealth-browser-mcp/venv/bin/python",
"args": ["/path/to/stealth-browser-mcp/src/server.py"],
"env": {}
}
}
}
FastMCP CLIによる実験的なインストール
これらのコマンドは、FastMCPのインストーラーを使いたいユーザー向けに用意されています。推奨される方法は、上記のstdio JSON設定です。
pip install fastmcp
fastmcp install claude-desktop src/server.py --with-requirements requirements.txt
fastmcp install claude-code src/server.py --with-requirements requirements.txt
fastmcp install cursor src/server.py --with-requirements requirements.txt
3. 動作を確認する
MCPクライアントを再起動し、エージェントに次のように依頼します。
stealth-browserを使ってhttps://example.comに移動し、スクリーンショットを撮ってください。
エージェントスキル
このリポジトリには、Codex形式のスキルに対応するクライアント向けのエージェントスキルがskills/stealth-browser-mcpに含まれています。推奨されるツールの使用順序、状態の確認、ドキュメント読み込み前のCDPスクリプトの使用方法、ネットワークのデバッグ手順、ブラウザーのクリーンアップに関するルールをエージェントに教えます。
LLMが適切なMCPツールを選べない場合や、操作後にブラウザーの状態を確認し忘れる場合は、このスキルを使用してください。クライアントがリポジトリ内のスキルを自動で読み込まない場合は、skills/stealth-browser-mcpをクライアントのスキルディレクトリに追加するか、シンボリックリンクを作成してください。
信頼モデル
このサーバーは、CDP の実行、ページの JavaScript 実行、Cookie/ストレージへのアクセス、ネットワークインターセプト、動的フック、ヘッダーの変更、ナビゲーション、許可リストに登録されたローカルパスからのファイルアップロードなど、強力なローカルブラウザー制御プリミティブを公開します。
MCP クライアントまたはエージェントをセキュリティプリンシパルとして扱ってください。推奨されるデプロイ方法は、信頼できるデスクトップ MCP クライアントを使用したローカルの stdio トランスポートです。HTTP トランスポートを使用する場合は、STEALTH_BROWSER_MCP_AUTH_TOKEN を設定し、信頼できるローカルネットワークまたはプライベートネットワークの外部に、認証なしの HTTP を公開しないでください。
モジュラーアーキテクチャ
必要な機能だけを選択してください。全 101 ツールのスイートを実行することも、21 ツールのコアに絞ることもできます。
| モード | ツール数 | 用途 |
|---|---|---|
| フル(デフォルト) | 101 | ブラウザーの自動化とデバッグの全機能 |
最小(--minimal) | 21 | ブラウザーの基本的な自動化と操作 |
カスタム(--disable-*) | 任意 | 特定のセクションを無効化 |
Xpool セーフ(--xpool-safe) | 84 | Runtime.enable をトリガーする CDP 関数ツールを無効化 |
stealth-browser-mcp --minimal
stealth-browser-mcp --disable-cdp-functions --disable-dynamic-hooks
stealth-browser-mcp --list-sections
stealth-browser-mcp --debug
stealth-browser-mcp --transport http --host 127.0.0.1 --port 8000
クローンから実行する場合も、python src/server.py に同じフラグを指定できます。
詳細なサーバー診断を stderr に出力するには、--debug を使用するか、STEALTH_BROWSER_DEBUG=1 を設定してください。JSON-RPC トランスポートの出力が破損するのを防ぐため、通常の MCP stdio 実行ではデフォルトで出力は抑制されます。
利用可能なセクション:
| セクション | ツール数 | 説明 |
|---|---|---|
browser-management | 8 | ブラウザーの基本操作 |
element-interaction | 13 | ページの操作と変更 |
element-extraction | 9 | 要素の複製と抽出 |
file-extraction | 9 | ファイルベースの抽出ツール |
network-debugging | 10 | ネットワークの監視とキャプチャ |
cdp-functions | 17 | Chrome DevTools Protocol の実行 |
progressive-cloning | 10 | 高度な要素の複製 |
cookies-storage | 3 | Cookie の管理 |
tabs | 5 | タブの管理 |
debugging | 7 | デバッグとシステムツール |
dynamic-hooks | 10 | AI 支援によるネットワークフック |
サーバー設定
これらは MCP サーバープロセスの環境変数です。シェル、サービスマネージャー、Docker 環境、または MCP クライアントの env ブロックで設定してください。
| 変数 | デフォルト | 意味 |
|---|---|---|
STEALTH_BROWSER_MCP_AUTH_TOKEN | unset | HTTP トランスポート用の任意のベアラートークンです。設定すると、HTTP クライアントは Authorization: Bearer <token> を送信する必要があります。 |
MCP_AUTH_TOKEN | unset | STEALTH_BROWSER_MCP_AUTH_TOKEN との後方互換性を保つための別名です。 |
BROWSER_IDLE_TIMEOUT | 600 | 使用されていないブラウザーインスタンスを自動終了するまでの、全体のアイドルタイムアウト(秒)です。0 に設定すると、全体のアイドルクリーンアップが無効になります。 |
BROWSER_IDLE_REAPER_INTERVAL | 60 | バックグラウンドのクリーンアップ処理が確認を行う間隔(秒)です。 |
BROWSER_TAB_RECYCLE_NAVIGATIONS | 0 | 指定回数のナビゲーション後に、メインタブを新しいタブに置き換えます。0 の場合は同じタブを維持し、履歴とセッションストレージが保持されます。 |
BROWSER_ORPHAN_PROFILE_MAX_AGE | 21600 | 古い uc_* 一時プロファイルを削除する際の、起動時のしきい値(秒)です。0 に設定すると、この起動時のクリーンアップが無効になります。 |
STEALTH_BROWSER_EXECUTABLE | auto-detect | 自動検出された実行ファイルの代わりに起動する、Chrome、Chromium、または Edge の実行ファイルへのパスです。 |
BROWSER_FILE_UPLOAD_ALLOWED_DIRS | repo root or data dir | file_upload() が読み取り可能なディレクトリです。複数のルートを指定する場合は、Windows では ;、macOS/Linux では : で区切ります。クローンではリポジトリのルートがデフォルトとなり、インストール済みパッケージではデータディレクトリ内の uploads フォルダーがデフォルトになります。 |
STEALTH_BROWSER_MCP_DATA_DIR | repo root or user data dir | 要素のクローンと大きなレスポンスの書き込み先です。クローンではリポジトリのルートがデフォルトとなり、インストール済みパッケージでは、Windows では %LOCALAPPDATA%\stealth-browser-mcp、macOS では ~/Library/Application Support/stealth-browser-mcp、Linux では $XDG_DATA_HOME/stealth-browser-mcp(~/.local/share/stealth-browser-mcp)がデフォルトになります。 |
STEALTH_BROWSER_DEBUG | 0 | 1 に設定すると、詳細なデバッグログを stderr に出力します。 |
DEBUG | 0 | STEALTH_BROWSER_DEBUG の旧式の別名です。 |
XPOOL_SAFE_MODE | 0 | 起動時に cdp-functions セクションを無効にします。 |
PORT | 8000 | --port が指定されていない場合のデフォルト HTTP ポートです。 |
PowerShell の例:
$env:STEALTH_BROWSER_MCP_AUTH_TOKEN='replace-with-a-long-random-token'
$env:BROWSER_IDLE_TIMEOUT='900'
$env:BROWSER_IDLE_REAPER_INTERVAL='30'
$env:BROWSER_ORPHAN_PROFILE_MAX_AGE='43200'
$env:BROWSER_FILE_UPLOAD_ALLOWED_DIRS='C:\Users\me\uploads;C:\Users\me\Documents'
python src/server.py
MCP クライアントの env ブロック:
{
"mcpServers": {
"stealth-browser-mcp": {
"command": "C:\\path\\to\\stealth-browser-mcp\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\stealth-browser-mcp\\src\\server.py"],
"env": {
"STEALTH_BROWSER_MCP_AUTH_TOKEN": "replace-with-a-long-random-token",
"BROWSER_IDLE_TIMEOUT": "900",
"BROWSER_FILE_UPLOAD_ALLOWED_DIRS": "C:\\Users\\me\\uploads;C:\\Users\\me\\Documents"
}
}
}
}
HTTP クライアントの例:
from fastmcp import Client
from fastmcp.client.auth import BearerAuth
client = Client(
"http://127.0.0.1:8000/mcp/",
auth=BearerAuth("replace-with-a-long-random-token"),
)
インスタンスごとのアイドルタイムアウトの上書き:
spawn_browser(idle_timeout_seconds=1800)は、そのインスタンスを操作のない状態で 30 分間維持します。spawn_browser(idle_timeout_seconds=0)は、そのインスタンスのアイドルクリーンアップを無効にします。
ツールボックス
ブラウザー管理(8)
| ツール | 説明 |
|---|---|
spawn_browser() | ステルスブラウザーインスタンスを作成します |
list_instances() | アクティブなブラウザーセッションを一覧表示します |
close_instance() | ブラウザーを正常に終了します |
get_instance_state() | ブラウザーの状態に関する全情報を取得します |
navigate() | URL に移動します |
go_back() | 履歴を戻ります |
go_forward() | 履歴を進みます |
reload_page() | 現在のページを再読み込みします |
要素の操作(13)
| ツール | 説明 |
|---|---|
query_elements() | CSS セレクターまたは XPath で要素を検索します |
click_element() | 要素をクリックします |
type_text() | 改行に対応した、人間のような文字入力を行います |
paste_text() | CDP 経由でテキストを即座に貼り付けます |
press_key() | 信頼された CDP キーイベントで実際のキーを押します(Enter、Tab、矢印、修飾キー) |
file_upload() | 許可リストに登録されたローカルファイルをファイル入力欄にアップロードします |
select_option() | ドロップダウンのオプションを選択します |
get_element_state() | 要素の状態を調べます |
wait_for_element() | 要素が現れるまで待機します |
scroll_page() | 自然な動きでページをスクロールします |
execute_script() | ページの JavaScript を実行します |
get_page_content() | ページの HTML とテキストを読み取ります |
take_screenshot() | スクリーンショットを撮影します |
ネットワークのデバッグ(10)
| ツール | 説明 |
|---|---|
list_network_requests() | キャプチャしたネットワークリクエストを一覧表示 |
get_request_details() | リクエストヘッダーとペイロードを調査 |
get_response_details() | レスポンスのメタデータを調査 |
get_response_content() | キャプチャしたレスポンスの内容を読み取る |
search_network_requests() | キャプチャしたリクエストを検索 |
export_network_data() | キャプチャしたネットワークデータをエクスポート |
import_network_data() | ネットワークデータをインポート |
set_network_capture_filters() | キャプチャフィルターを設定 |
get_network_capture_filters() | 有効なキャプチャフィルターを読み取る |
modify_headers() | リクエストヘッダーを追加または置換 |
Cookie とストレージ(3)
| ツール | 説明 |
|---|---|
get_cookies() | Cookie を読み取る |
set_cookie() | Cookie を設定 |
clear_cookies() | Cookie を消去 |
デバッグ(7)
| ツール | 説明 |
|---|---|
get_debug_view() | ページネーション付きでデバッグログと統計情報を表示 |
clear_debug_view() | デバッグログを消去 |
export_debug_logs() | ログを JSON、pickle、または gzip 形式でエクスポート |
get_debug_lock_status() | デバッグロガーのロック状態を調査 |
hot_reload() | サーバーを再起動せずにモジュールを再読み込み |
reload_status() | モジュールの再読み込み状態を確認 |
validate_browser_environment_tool() | ブラウザーとプラットフォームの互換性を診断 |
タブ(5)
| ツール | 説明 |
|---|---|
list_tabs() | 開いているタブを一覧表示 |
switch_tab() | アクティブなタブを切り替え |
close_tab() | タブを閉じる |
get_active_tab() | 現在アクティブなタブを取得 |
new_tab() | 新しいタブを作成 |
要素の抽出(9)
| ツール | 説明 |
|---|---|
extract_element_styles() | 計算済み CSS プロパティを抽出 |
extract_element_structure() | DOM 構造を抽出 |
extract_element_events() | イベントリスナーを抽出 |
extract_element_animations() | アニメーションとトランジションを抽出 |
extract_element_assets() | 画像、フォント、動画、アセットを抽出 |
extract_element_styles_cdp() | 純粋な CDP スタイル抽出 |
extract_related_files() | 関連する CSS/JS ファイルを検索 |
clone_element_complete() | 要素を完全に複製 |
extract_complete_element_cdp() | CDP ベースで要素を完全に複製 |
段階的な複製(10)
| ツール | 説明 |
|---|---|
clone_element_progressive() | 軽量な要素の初期複製 |
expand_styles() | 必要に応じてスタイルを展開 |
expand_events() | 必要に応じてイベントを展開 |
expand_children() | 必要に応じて子ノードを展開 |
expand_css_rules() | CSS ルールのデータを展開 |
expand_pseudo_elements() | 擬似要素を展開 |
expand_animations() | アニメーションのデータを展開 |
list_stored_elements() | 保存済みの段階的な複製を一覧表示 |
clear_stored_element() | 保存済みの要素を 1 つ消去 |
clear_all_elements() | 保存済みの要素をすべて消去 |
ファイルベースの抽出(9)
| ツール | 説明 | |------|-------------| | `clone_element_to_file()` | クローン全体をファイルに保存 | | `extract_complete_element_to_file()` | 抽出した全内容をファイルに保存 | | `extract_element_styles_to_file()` | スタイルをファイルに保存 | | `extract_element_structure_to_file()` | 構造をファイルに保存 | | `extract_element_events_to_file()` | イベントをファイルに保存 | | `extract_element_animations_to_file()` | アニメーションをファイルに保存 | | `extract_element_assets_to_file()` | アセットをファイルに保存 | | `list_clone_files()` | 保存済みのクローンファイルを一覧表示 | | `cleanup_clone_files()` | 古いクローンファイルをクリーンアップ |CDP 関数の実行(14)
| ツール | 説明 |
|---|---|
list_cdp_commands() | 利用可能な CDP コマンドを一覧表示 |
execute_cdp_command() | CDP コマンドを直接実行 |
add_script_to_evaluate_on_new_document() | ページの JavaScript 実行前にスクリプトをインストール |
get_execution_contexts() | JavaScript 実行コンテキストを一覧表示 |
discover_global_functions() | グローバル JavaScript 関数を検索 |
discover_object_methods() | JavaScript オブジェクトのメソッドを検索 |
call_javascript_function() | 検出した JavaScript 関数を実行 |
inspect_function_signature() | 関数の詳細を確認 |
inject_and_execute_script() | カスタム JavaScript を挿入して実行 |
create_persistent_function() | 再読み込み後も維持される関数を作成 |
create_page_binding() | window.<name>() を公開し、ページの JavaScript からエージェントを呼び出せるようにする |
get_page_binding_calls() | キューに入ったページバインディング呼び出しを読み取る。必要に応じて呼び出しを待機 |
resolve_page_binding_call() | ページバインディング呼び出しに値またはエラーで応答 |
remove_page_binding() | ページバインディングを削除し、保留中の呼び出しを拒否 |
execute_function_sequence() | 関数呼び出しを順番に実行 |
execute_python_in_browser() | py2js で Python を JavaScript に変換して実行 |
get_function_executor_info() | エグゼキューターの状態を確認 |
動的フック(10)
| ツール | 説明 |
|---|---|
create_dynamic_hook() | 制限付きの Python ネットワークフックを作成 |
create_simple_dynamic_hook() | 一般的なプリセットからフックを作成 |
list_dynamic_hooks() | 有効なフックを一覧表示 |
get_dynamic_hook_details() | フックのソースとメタデータを確認 |
remove_dynamic_hook() | フックを削除 |
get_hook_documentation() | リクエストオブジェクトとアクションのドキュメントを読む |
get_hook_examples() | フックの例を表示 |
get_hook_requirements_documentation() | マッチングとベストプラクティスのドキュメントを読む |
get_hook_common_patterns() | 一般的なフックパターン |
validate_hook_function() | 使用前にフックコードを検証 |
Stealth と Playwright MCP の比較
検出結果は特定時点のものであり、サイトのポリシー、地域、ブラウザーのバージョン、IP の評価、検出器のバージョンによって異なります。Linux、Windows、macOS 上で GitHub Actions により実行される benchmarks/stealth/ のベンチマークから得られた週次の自動テスト結果と、以前の手動スナップショットについては、STEALTH_TESTS.md をご覧ください。
| 機能 | Stealth Browser MCP | Playwright MCP |
|---|---|---|
| Cloudflare/Queue-It のようなチェック | テストで一般的な JS チャレンジに合格 | 一般にブロックされる |
| 強固に保護されたサイト | nodriver 経由で実際の Chrome 系ブラウザーインスタンスを使用 | 自動化として頻繁に検出される |
| ログインが必要なページ | CDP を通じて読み込み済みのコンテンツやオーバーレイを調査可能 | 手動でのスクリプト作成が必要になることが多い |
| UI 要素の複製 | CDP による正確な抽出 | 限定的 |
| ネットワークのデバッグ | AI ツールを通じてリクエスト/レスポンスを完全に調査 | 基本的 |
| API のリバースエンジニアリング | チャットを通じてペイロードを調査 | 手動ツールのみ |
| 動的フックシステム | リアルタイムのインターセプトに対応する、制限付きの Python フック | 利用不可 |
| モジュール型アーキテクチャ | 11 セクション、21~101 個のツール | 固定されたツールセット |
| ツールの合計数 | カスタマイズ可能な 101 個のツール | 約 20 個 |
トラブルシューティング
互換性のあるブラウザーが見つからない
Chrome、Chromium、または Microsoft Edge をインストールしてください。サーバーは利用可能な最初のブラウザーを自動検出します。診断には validate_browser_environment_tool() を実行してください。
ツールがハングする、または不正な JSON を返す
MCP の stdio トランスポートでは、デバッグ出力を stdout に出力しないでください。最新の master ブランチを取得し、問題を診断する場合を除いてデバッグログを無効にしてください。
通常の実行を煩雑にせず、詳細な診断情報が必要
python src/server.py --debug を使用するか、STEALTH_BROWSER_DEBUG=1 を設定してください。デバッグログは stderr に出力されます。通常の MCP stdio 実行では、デフォルトで出力は抑制されます。
Linux、Docker、または CI でブラウザーがクラッシュする
環境で必要な場合に限り --sandbox=false を指定して実行するか、環境が Chromium のサンドボックスに対応していることを確認してください。サーバーは root/コンテナー環境を自動検出し、起動引数を調整します。
孤立した Chromium プロセスや uc_* の一時プロファイルが蓄積する
サーバーはアイドル状態のブラウザーインスタンスを自動的に終了し、追跡対象の孤立プロセスと古い uc_* 一時プロファイルを起動時にクリーンアップします。ブラウザーのライフサイクルを完全に手動で管理する場合に限り、BROWSER_IDLE_TIMEOUT=0 を設定してください。
macOS のディスクが code_sign_clone フォルダーでいっぱいになる
以前のバージョンでは、Chrome が起動のたびにアプリバンドルを com.google.Chrome.code_sign_clone にコピーし、インスタンスがクラッシュまたは強制終了された場合も、そのコピーが残っていました。現在、サーバーは MacAppCodeSignClone を無効にして Chrome を起動するため、新しいコピーは作成されません。以前のバージョンで残されたコピーを削除するには、Chrome を終了して rm -rf /private/var/folders/*/*/X/com.google.Chrome.code_sign_clone を実行してください(Edge の場合は com.microsoft.edgemac.code_sign_clone を使用します)。
AI チャットにツールが多すぎて煩雑になる
コアツール 20 個を使うには --minimal、xpool 互換の動作には --xpool-safe を使用するか、次のようにセクションを選択して無効にしてください。
python src/server.py --disable-cdp-functions --disable-dynamic-hooks --disable-progressive-cloning
モジュールが見つからないというエラーが発生する 仮想環境を有効化し、依存関係をインストールしたことを確認してください。
pip install -r requirements.txt
使用例
- 市場調査 - 競合他社の価格と機能を抽出し、比較表を出力します。
- UI の複製 - 正確なフォント、スタイル、アセット、インタラクションを備えた価格セクションを再現します。
- 在庫の監視 - 商品ページを監視し、在庫状況が変わったときに通知します。
- API のリバースエンジニアリング - リクエストをインターセプトし、エンドポイントを整理して、データフローを調査します。
- フォームの自動化 - 許可リストに登録されたパスからファイルをアップロードし、処理後のページ状態を確認します。
すべて単一の AI エージェントとの会話から実行できます。
ショーケース
Augment Codeのヒーローセクションのクローン - ユーザーがClaudeに、augmentcode.comのヒーローセクションをクローンするよう依頼しました。エージェントはステルスブラウザーを起動してサイトにアクセスし、CDP経由で要素全体(スタイル、構造、アセット)を抽出して、レスポンシブデザインとアニメーションを備えた、ピクセル単位で正確なHTMLを生成しました。会話全体にかかった時間は2分未満でした。
ロードマップ
ROADMAP.mdで最新の計画をご確認ください。コントリビューションを歓迎します。
コントリビューション
CONTRIBUTING.mdを読み、PRを作成してください。初めてのコントリビューターも歓迎します。
このプロジェクトで時間を節約できたら、リポジトリにスターを付けてください。想像以上に役立ちます。
サポート
このツールで時間を節約できた、または収益を得られた場合は、開発へのご支援をご検討ください。
ライセンス
MIT - 詳細はLICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
