BrowserDo について
BrowserDoは、AIエージェントとWindowsブラウザーEmbiodyをつなぎ、ページの閲覧やタブ操作を可能にするMCPサーバーです。バックグラウンドでの閲覧や任意の複数ステップタスクに対応し、その間もPCを使えます。
主な機能
- 01ページのテキストとリンクを取得
- 02クリック、入力、スクロール、移動
- 03操作の一括実行
- 04複数ページをバックグラウンドで閲覧
- 05ブラウザーのダイアログとポップアップに対応
- 06タブ操作を人に引き継ぎ
活用シーン
- 01ログイン済みサイトのページを読む
- 02複数タブでブラウザー操作を自動化
- 03パスワードやCAPTCHAを人が処理
- 04設定したビジョンモデルでブラウザータスクを実行
MCP 対応
stdioまたは任意のSSEトランスポートで、MCPクライアントにページ閲覧とブラウザー操作のツールを公開し、Embiodyに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
BrowserDo
AI エージェントのために構築。人々と共有。
Embiody は Windows ブラウザーです。AI エージェントがバックグラウンドで最大速度で操作する間も、あなたは PC を使い続け、いつでも操作に加われます。BrowserDo は、エージェントを Embiody に接続する MCP サーバーです。Claude Code、Claude Desktop、Codex、Cursor、VS Code、Gemini CLI に追加すれば、エージェントはあなたがサインインしているサイトを含め、ページの閲覧、クリック、入力、読み取りができます。
BrowserDo を選ぶ理由
1. バックグラウンドで最大速度で動作し、画面を占有しません
ページはバックグラウンドタブ、バックグラウンドウィンドウ、最小化されたウィンドウ、非表示のウィンドウでも最大速度で動作します。エージェントの作業中、ブラウザーを手前に表示しておく必要はありません。そのため、作業を続けながら、エージェントに一度に十数個のタブで作業させることができます。
通常の Chrome では、表示していないページの動作が遅くなります。テストでは、ブラウザーウィンドウを別のウィンドウで 7 分間完全に覆いました。
| タイマー | ページ上のカウントダウン | |
|---|---|---|
| Embiody、フォアグラウンドのタブ | 常に毎秒 10 回 | 時間どおり |
| Embiody、バックグラウンドのタブ | 常に毎秒 10 回 | 時間どおり |
| Chrome、フォアグラウンドのタブ | 12 秒後に遅延 | 355 秒遅れ |
この機能に起動フラグは必要ありません。制限が 1 つあります。ウィンドウを最小化している間にページを開くと、スクリーンショットが表示されないことがあります。ただし、テキストと要素番号は引き続き表示されます。
2. ボットがブロックされる場所でも動作します — ボットではないからです
エージェントはあなたに代わってあなたのブラウザーを使うため、ボット対策があるサイトでも、あなた自身がアクセスしているときと同じように扱われます。
3. ページ全体を認識し、正しい場所をクリックします
- 決済フォームやサインインボックスなど、他のサイトから埋め込まれたフレーム内のコンテンツを読み取り、クリックできます。
- ポップアップやオーバーレイに覆われた要素には番号が付かないため、エージェントはあなたに見えないものをクリックできません。
- 長いページも、画面に表示されている部分だけでなく全体を読み取ります。
- 画面外の要素は、クリックする前に表示領域までスクロールされます。
- 複数のモニターを使っている場合や、ディスプレイの拡大率が異なる場合も、クリックは正しい場所に届きます。
- すべての要素番号は 1 つのスナップショットに属します。古いスナップショットの番号は、クリック前に拒否されるため、置き換わった別の要素をクリックしてしまうことはありません。
4. エージェントの操作を確認できます
エージェントが操作しているタブには、仮想マウスポインター、ページを囲む枠、タブ上のマーカーが表示されます。いつでも開いて動作を確認できます。
5. 互いの作業を妨げずに、あなたとエージェントが同じブラウザーを共有できます
エージェントが操作しているタブであなたがクリックまたは入力すると、操作を引き継ぐかどうか尋ねられます。エージェントも、あなたのタブに触れる前に確認します。
6. 1 回の呼び出しで複数の手順を実行
browser_batch は複数の操作(クリック、入力、キー押下)を続けて実行し、ページの最新のスナップショットを返します。そのため、エージェントの往復回数とトークン消費を抑えられます。
7. 要約ではなく、ページそのものを読み取ります
browser_read_pages は、スクリプトで構築されたページや、あなたがサインインしているサイトから、リンクを含むページ自体のテキストを返します。短いモデル生成の要約を返す Claude Code の WebFetch の代わりに使えます。8 ページを比較したところ、BrowserDo は WebFetch では取得できなかった BBC News の記事を読み取り、8 ページすべてを並列で約 20 秒で読み取りました。
8. ブラウザー独自のポップアップも認識します
権限の確認バブル、メニュー、「名前を付けて保存」ダイアログ、「サイトを離れますか?」という確認、アラートがすべてのスナップショットに報告され、それぞれの応答方法も示されます。
9. 最新のエンジンと署名付きリリース
Chromium 156 をベースに構築されています。リリースには署名が付いており、ブラウザーは更新のたびに署名を検証して自動更新します。
要件
- Windows 10 または 11、64 ビット(Embiody は現在 Windows 専用です)
- Node.js 20 以降。
node -vで確認してください。インストールされていないと、BrowserDo は起動に失敗します(Claude Code では「Failed to connect」と表示されます)。winget install OpenJS.NodeJS.LTSでインストールしてから、クライアントを再起動してください。 - Embiody ブラウザー、バージョン 0.9.0.3 以降:BrowserDo の初回起動時に自動的にインストールされます。約 140 MB のダウンロードで、数分かかります。クライアントはすぐに BrowserDo を使用でき、ブラウザーの準備が整うまでは各ツールが進行状況を返します。古いバージョンの場合、BrowserDo はブラウザーの更新ページを開き、更新後にブラウザーと BrowserDo を再起動するよう求めます(詳細)。
API キーは不要です。エージェントは自身のモデルを使ってブラウザーを操作します。
インストール
BrowserDo は npx -y browserdo-mcp として実行します。使用するクライアントのセクションに従ってください。その他のセクションは別のクライアント向けです。
Claude Code
claude mcp add browserdo -- npx -y browserdo-mcp
チームで .mcp.json を通じて共有するには --scope project を、すべてのプロジェクトで使用するには --scope user を追加してください。
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json を編集します。
{
"mcpServers": {
"browserdo": {
"command": "npx",
"args": ["-y", "browserdo-mcp"]
}
}
}
Codex
codex mcp add browserdo -- npx -y browserdo-mcp
または、~/.codex/config.toml に追加します。
[mcp_servers.browserdo]
command = "npx"
args = ["-y", "browserdo-mcp"]
Cursor
~/.cursor/mcp.json(すべてのプロジェクト)または .cursor/mcp.json(1 つのプロジェクト)に追加します。
{
"mcpServers": {
"browserdo": {
"type": "stdio",
"command": "npx",
"args": ["-y", "browserdo-mcp"]
}
}
}
VS Code
コマンドパレットから MCP: Add Server を実行し、Command (stdio) を選択して npx -y browserdo-mcp を入力します。または、.vscode/mcp.json に追加します。
{
"servers": {
"browserdo": {
"type": "stdio",
"command": "npx",
"args": ["-y", "browserdo-mcp"]
}
}
}
Gemini CLI
~/.gemini/settings.json(すべてのプロジェクト)または .gemini/settings.json(1 つのプロジェクト)に追加します。
{
"mcpServers": {
"browserdo": {
"command": "npx",
"args": ["-y", "browserdo-mcp"]
}
}
}
その他の MCP クライアント
クライアントの設定でローカル(stdio)MCP サーバーを追加し、コマンドに npx、引数に -y browserdo-mcp を指定します。ほとんどのクライアントでは、次の形式で指定します。
{
"mcpServers": {
"browserdo": {
"command": "npx",
"args": ["-y", "browserdo-mcp"]
}
}
}
次に、エージェントにウェブ上で何かをするよう依頼します。
来週水曜日の朝にシドニーからメルボルンへ向かう直行便を探して、最も安い 3 つの候補を見せてください。
ツール
各ツールはブラウザー上の 1 つの操作を実行します。windowId と tabId はどこでも省略可能です。省略すると、最前面のウィンドウとタブが使用されます。
| ツール | 機能 |
|---|---|
browser_take_snapshot | 要素ごとに 1 行でページを表示します。操作可能な各要素には番号が付き、ページ位置、URL、タイトル、表示を妨げるポップアップ、および snapshotId も含まれます。ページが PDF、エラーページ、またはクラッシュしたタブの場合は、その旨を知らせます。includeImage を指定すると注釈付きスクリーンショットを追加し、readWholePage を指定すると画面外も読み取ります。 |
browser_read_pages | バックグラウンドタブで一度に最大 10 ページを読み取り、リンクを脚注として付けたテキストを取得します。 |
browser_batch | 1 つのタブで複数の操作を続けて実行し、その後、新しいスナップショットを取得します。最初の失敗時、またはページを変更したステップの後に停止します。 |
browser_click、browser_input_text、browser_press_key、browser_select_editable_text、browser_scroll | 要素の番号と、その要素を含む snapshotId を指定して操作します。browser_input_text は、周囲の語句で指定した位置のテキストも編集できます。 |
browser_move、browser_drag | ホバー、押下、移動、解放を行います。ドラッグはスライダー、キャンバス、並べ替え可能なリストで機能します。 |
browser_navigate、browser_go_back、browser_go_forward、browser_reload、browser_stop_loading、browser_wait | ページを移動します。 |
browser_get_window_info、browser_new_window、browser_close_window、browser_show、browser_minimize | ウィンドウを操作します。browser_get_window_info は、すべてのウィンドウとタブを ID とともに一覧表示します。 |
browser_new_tab、browser_select_tab、browser_close_tab、browser_set_audio_muted | タブを操作します。 |
browser_close_popup_bubble | 権限のバブルまたはダイアログに応答します。 |
browser_start_human_control、browser_stop_human_control | パスワードまたは CAPTCHA の入力時にタブを人に渡し、完了後に制御を取り戻します。 |
browser_status | ブラウザーの準備状況、または初回インストールの進行状況を確認します。 |
設定
クライアントの設定にある env ブロックに設定するか、設定ファイルに記述してください(browserdo.config.example.yaml を browserdo.config.yaml にコピーしてサーバーの実行場所に置くか、--config <path> を渡します)。環境変数は設定ファイルより優先されます。
| 変数 | 機能 |
|---|---|
EMBIODY_TOOLS | browser(上記のツール)、task(browser_run_task のみ)、または all(デフォルト)。 |
EMBIODY_SAVE_SNAPSHOTS | 1 にすると、デバッグ用にすべてのスナップショットのスクリーンショットとページテキストを run/browser_data に保存します。デフォルトではオフです。 |
EMBIODY_EXE_PATH | インストール済みの Embiody の代わりに、独自にビルドした Embiody を別のプロファイルで起動します。 |
EMBIODY_USER_DATA_DIR | 自分の Embiody ではなく、エージェント専用のプロファイルフォルダーを指定します。すると BrowserDo は、そのフォルダーを使って独自のブラウザーを起動します。 |
EMBIODY_VLLM_ENDPOINT、EMBIODY_VLLM_MODEL、EMBIODY_VLLM_API_KEY | browser_run_task(下記)に使用するモデル。 |
サンプル設定ファイルには、フォールバックモデル、タイムアウト、ページの読み込みを待つ時間など、その他の設定について説明があります。--transport sse を指定すると、stdio の代わりに http://127.0.0.1:3000/sse で MCP を HTTP 経由で提供します。このマシンからのリクエストにのみ応答します。
プライバシー
BrowserDo は、テレメトリー、使用統計、エラー報告を行いません。
- ダウンロード:Embiody がインストールされていない状態で初めて起動すると、GitHub からインストーラーをダウンロードします。GitHub に接続できない場合は、ミラーからダウンロードします。
- アップデート:クライアントが
npxで BrowserDo を起動すると、npm は BrowserDo の起動時に npm レジストリで最新バージョンを確認します。このリクエストを行うのは BrowserDo ではなく npm です。 - 使用するモデル:モデルにデータを送信するのは
browser_run_taskのみで、送信先は設定したエンドポイントに限られます。ブラウザツールはページを自分のエージェントに返します。 - コンピューター上のデータ:
%LOCALAPPDATA%\Embiody\BrowserDo\logsにあるデバッグログには、アクセスした URL と実行した手順が記録されますが、ページの内容やタスクは記録されません。5 MB のファイルを最大 3 つ保持します。EMBIODY_SAVE_SNAPSHOTS=1を設定しない限り、スナップショットは保存されません。 - プロファイル:エージェントは自分の Embiody の Default プロファイルで動作するため、そこでサインインしているサイトを利用できます。ほかの Embiody プロファイルは使用されず、Chrome や Edge など、コンピューター上のほかのブラウザーも使用されません。エージェントを別環境で動作させるには、専用フォルダーを
EMBIODY_USER_DATA_DIRに設定してください。
プライバシーポリシーと Embiody エンドユーザーライセンス契約をご覧ください。
オプション:browser_run_task
ブラウザーを一つずつ操作するのではなく、タスク全体を任せたい場合は、
browser_run_task を使うと、任意の OpenAI 互換エンドポイントに対応するビジョンモデルで BrowserDo 内のタスクを実行できます。スクリーンショットはエージェントのコンテキストに含まれません。
"env": {
"EMBIODY_VLLM_ENDPOINT": "<your-openai-compatible-endpoint>",
"EMBIODY_VLLM_MODEL": "<your-vision-model>",
"EMBIODY_VLLM_API_KEY": "<your-api-key>"
}
| パラメーター | 備考 |
|---|---|
task | 必須。 自然言語でタスクを指定します。 |
windowId、tabId | 同じタブで以前のタスクを続ける場合は、両方を渡します。 |
maxRounds | デフォルトは 12 です。 |
closeTabWhenDone、closeBrowserWindowWhenDone | デフォルトは false です。 |
humanReply | クライアントがタスクの途中で質問できない場合に、前回の実行が停止した質問に対する回答を指定します。 |
タスクの実行にあなたの対応が必要になると、エージェントから確認があります。パスワードやコードの入力など、あなただけが行える手順では、まずタブがあなたに渡され、完了したと伝えると処理が続行されます。タスク中の質問に対応しているクライアント(Claude Code の tasks.requests.elicitation.create など)では、質問が会話に表示されます。それ以外のクライアントでは、質問が表示された時点でタスクが終了するため、humanReply を指定して再度呼び出し、回答してください。
browser_stop_task は、実行中のタスクを現在の手順が終わった時点で停止します。
コミット対象のファイルに API キーを含めないでください。 クライアントの設定で環境変数を展開できる場合は、その機能を使ってください。できない場合は、リポジトリの外にある設定ファイルにキーを記述し、--config でそのファイルを指定してください。
注意事項
- Claude Code は会話内に古いツール定義を保持します。 BrowserDo をアップグレードした後、新しいツールとパラメーターを確認するには、新しい会話を開始してください。
- BrowserDo は MCP プロトコルバージョン
2025-11-25を使用し、古いバージョンにもネゴシエーションで対応します。
開発
npm install
npm run build
npm test # 902 tests
npm run test:fast # unit and module tests only
テストの構成については、test/README.md を参照してください。
ライセンス
BrowserDo は Apache License, Version 2.0 の下でライセンスされています。詳細は LICENSE を参照してください。インストールされる Embiody ブラウザーには、Embiody EULA が適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。