agent-browser について
agent-browser は Vercel の agent-browser CLI をラップし、MCP クライアントから Chromium を操作する MCP サーバーです。セッションの永続化やブラウザー環境の診断も備えています。
主な機能
- 01Chromium の移動と操作
- 02アクセシビリティツリーのスナップショットと撮影
- 03Cookie と localStorage の永続化
- 04ページテキストのパターン検索
- 05ブラウザー環境の診断
活用シーン
- 01フォーム入力とページのクリックの自動化
- 02操作前のページ構造の確認
- 03セッション間でのログイン状態の復元
MCP 対応
stdio 経由で MCP クライアントにブラウザー操作ツールを提供し、agent-browser CLI を利用します。ページ移動や操作、アクセシビリティツリーの確認、スクリーンショットの取得ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-server-agent-browser
ステータス:ベータ — CLI ラッパーは、ユニットテストとフェイクブラウザーを使った stdio スモークテストでカバーされています。実際の Chromium を再起動した後の Cookie 復元は、まだ手動で確認する必要があります。
LLM が実際のブラウザーを操作できるようにします。この MCP サーバーは agent-browser(Vercel Labs)をラップしており、あらゆる MCP クライアントから、ページの移動、フォームへの入力、クリック、アクセシビリティツリーのスナップショット取得、スクリーンショットの撮影ができます。
Grok の web_search / open_page とは異なります。これらはドキュメントを取得しますが、こちらは Chromium を実行します。検索で URL を見つけてから、browser_navigate を使用してください。
前提条件
cargo install agent-browser
agent-browser install
不足しているものがある場合は、browser_doctor を呼び出してください。
ビルド
cargo build --release
バイナリ:target/release/mcp-server-agent-browser
cargo test
./tests/test-stdio.sh
実際の Chromium でのログイン状態の復元は CI では確認されません。画面を表示した状態でログインした後、MCP プロセスを再起動し、次の browser_navigate でもログイン状態が維持されていることを確認してください。
設定
MCP クライアント(stdio):
{
"mcpServers": {
"agent-browser": {
"command": "/path/to/mcp-server-agent-browser"
}
}
}
~/.config/mcp-server-agent-browser/config.toml に任意の TOML ファイルを配置できます(config.example.toml を参照)。ファイルがない場合はデフォルト値が使われます。MCP_AGENT_BROWSER_CONFIG でパスを上書きできます。
| 設定 | デフォルト値 | 意味 |
|---|---|---|
headed | false | ウィンドウを表示します。起動時にのみ適用されます。ヘッドレスデーモンがすでに起動している場合は、まず browser_close を実行してください。また、AGENT_BROWSER_HEADED=1 でも設定できます。 |
persist | true | --session-name <namespace>-<session_id> を指定します(デフォルトのセッションキーは default)。--namespace CLI フラグはありません。代わりに、namespace はその名前に組み込まれます。 |
keep_daemon | false | false の場合、MCP の終了時に close を実行して復元状態を保存し、Chrome が残らないようにします。 |
namespace | mcp-server | --session-name の復元キーのプレフィックスです。この MCP の復元ファイルを、CLI を直接使うユーザーのファイルから分離します。 |
command_timeout_secs | 120 | ラッパーのタイムアウトです。Playwright 独自の 25 秒のアクションタイムアウトは変更しません(CLI IPC は約 30 秒です)。 |
idle_timeout | 1h | AGENT_BROWSER_IDLE_TIMEOUT_MS を設定します(環境変数のみ。--idle-timeout CLI フラグはありません)。keep_daemon = true の場合は "0" を使用してください。 |
download_dir | ~/Downloads | --download-path。~ は展開されます。 |
profile | 未設定 | 永続的な Chrome ユーザーデータディレクトリを任意で指定します。普段使いの Chrome プロファイルは指定しないでください。 |
encryption_key_file | 未設定 | AGENT_BROWSER_ENCRYPTION_KEY を設定します。復元ファイルには認証情報が含まれます。この設定がない場合、平文で保存されます。 |
AGENT_BROWSER_PATH | agent-browser | CLI バイナリです。 |
allowed_domains は任意です。localhost は、localhost を除外するリストを設定しない限り許可されます。
できること
これまでと同じ操作(移動、クリック、入力、スナップショット、スクリーンショット、Cookie、eval、CDP、セッション)に加えて、以下を利用できます。
browser_doctor— CLI、設定、永続化、headed/DISPLAY、デーモンの推定状態を確認します。Chrome は起動しません。browser_get_textpattern— ページのテキストに対して正規表現で検索し、前後 2 行のコンテキストを返します。browser_wait— セレクターに加えて、load/url/textを待機条件に指定できます。
一般的な流れ:
browser_navigatebrowser_snapshot(インタラクティブ要素には-iを指定)@refs を使ってbrowser_click/browser_fill- ピクセル単位の情報が必要な場合は
browser_screenshot
永続化
persist = true(デフォルト)の場合、各セッションは終了時と CLI の自動保存間隔で Cookie と localStorage を保存します。状態は ~/.agent-browser/ 以下に、mcp-server の名前空間で保存されます。分離された session_ids は復元キーを共有しません。
画面を表示した状態で一度ログインし、browser_close を実行するか MCP を終了してから、再起動してください。次の移動時にそのセッションが復元されます。
MCP プロセスを強制終了すると、デーモンが実行中のまま残ることがあります。browser_doctor で確認できます。永続化が有効であれば、アイドル時のシャットダウンでも状態は保存されます。
制限事項
agent-browser(Playwright)経由の Chromium を使用します。検索はできません。- 既存のデーモンを終了するまで、ヘッド表示は無視されます。
- Ubuntu の Snap 版 Chromium では、DevTools ポートが通知されないことがあります。
agent-browser installのブラウザーまたはexecutable_pathの使用を推奨します。 - 書き込み(スクリーンショット、PDF、ダウンロード)は、相対パス、
/tmp配下、またはdownload_dir配下で行う必要があります。 - 要素のスクリーンショットでは、CSS セレクターまたは
@refと、末尾の:has-text("...")を指定します。セレクターは最初に検証されるため、一致しない場合はエラーとなり、ビューポート全体のスクリーンショットに黙って切り替わることはありません。full_pageとは併用できません。 - Playwright のアクションタイムアウト 25 秒は、このラッパーではなく上流の CLI による制限です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。