Cat Burglar について
Cat Burglarは、3種類のブラウザーエンジンとローカル・リモートのCDPセッションをまとめた、エージェント向けブラウザーMCPサーバーです。ブラウザー操作、差分中心の観察、サイト別ワークフローの記憶、プロキシプール、DevTools診断、人によるCAPTCHA対応をガードレール付きで提供します。
主な機能
- 011つのサーバーで3種類のブラウザーエンジン
- 02スナップショット、安定した参照、変更の観察
- 03サイト別ヒントと学習済みワークフロー
- 04HTTP、HTTPS、SOCKS5プロキシプール
- 05リモートCDPとクラウドブラウザーへの接続
- 06DevTools診断と人によるCAPTCHA対応
活用シーン
- 01ウェブページを調査しリンク、表、構造化データを抽出
- 02ローカルアプリをテストしコンソールエラーを確認
- 03パフォーマンストレースやネットワーク活動を記録
- 04人がCAPTCHAを完了した後にブラウザーセッションを継続
MCP 対応
Cat Burglarは、ブラウザーのライフサイクル、閲覧、操作、状態管理、診断のツールをMCPクライアントに公開します。stdioクライアントに対応し、CDP経由でローカルまたはリモートのブラウザーに接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e BROWSER_MCP_ALLOW_PRIVATE_NETWORK -e BROWSER_MCP_OBSCURA_PATH -e BROWSER_MCP_PROFILE -e BROWSER_MCP_PROXY_POOL -e BROWSER_MCP_CDP_URL -e BROWSER_MCP_AUDIT ghcr.io/drmkdaddy/cat-burglar:v0.5.2BROWSER_MCP_ALLOW_PRIVATE_NETWORKSet to 1 to allow localhost and private-network pages.BROWSER_MCP_OBSCURA_PATHPath to the Obscura binary when it is not on PATH.BROWSER_MCP_PROFILEObservation profile: local, flash, frontier, or auto.BROWSER_MCP_PROXY_POOLJSON array or newline-separated HTTP/HTTPS/SOCKS5 proxy URLs.BROWSER_MCP_CDP_URLシークレットRemote Chrome DevTools Protocol endpoint for the remote engine.BROWSER_MCP_AUDITSet to 0 to disable the local audit log.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/drmkdaddy/cat-burglar:v0.5.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cat Burglar
3つのブラウザー。1つのMCP。変更点だけを取得。
Cat Burglar は、実際のブラウザーをエージェントに接続します。パッチ適用済みのステルス Chromium、DevTools 用の標準 Chromium、または Obscura の 43 MB の Rust エンジンを、1つのセッションで実行できます。完全な DOM ダンプではなく差分を送信し、サイトごとのワークフローを記憶し、影響の大きい操作には確認を求めます。CAPTCHA が表示されると、ページをブラウザーウィンドウで開いて、人が CAPTCHA を解くまで待機し、その後処理を続行します。
利用できる機能
| 機能 | メリット |
|---|---|
| 3つのエンジン、1つのサーバー | タスクに応じて、ステルス性、DevTools の忠実度、または 43 MB の軽量構成を選べます。クライアントを変更せずに切り替えられます。 |
| ダンプではなく差分 | 安定した参照、差分スナップショット、各操作後に取得する変更範囲を制限した観測を利用できます。コンテキストを減らし、往復回数を抑えます。 |
| サイトの記憶 | 実行に成功した後、オリジンごとのヒントとワークフローを学習します。繰り返し行うタスクを短縮できます。 |
| あらゆる住宅用プロキシ | 認証、固定またはローテーションセッション、地域マッチング、オンデマンドのヘルスチェックに対応した HTTP、HTTPS、SOCKS5 のプールを利用できます。 |
| リモート CDP とクラウド | Browserbase、Steel、Browserless、Obscura Cloud、またはログイン済みのローカル Chrome に接続できます。ローカルのブラウザープロセスは不要です。 |
| 必要に応じた詳細な DevTools | 必要なときに限り、HAR、CPU プロファイル、ヒープスナップショット、カバレッジ、ネットワーク/CPU スロットリングを取得します。 |
| 人による CAPTCHA の引き継ぎ | エージェントが一時停止してページをブラウザーウィンドウで開き、待機します。ユーザーが CAPTCHA を解くと、同じセッションで処理を続行します。 |
| デフォルトで有効なガードレール | SSRF 保護、オリジンリスト、信頼できないコンテンツのマーカー、トラッカーのブロック、破壊的な操作に対する確認ゲートを備えています。 |
| エージェントを選ばず利用可能 | Claude Desktop、Claude Code、Cursor、Codex、Gemini CLI、VS Code、Windsurf、Cline、OpenCode、Docker、およびあらゆる stdio クライアントで動作します。 |
| 測定済み | 状態検証を含む、ローカルで実行する12タスクのテストスイートを用意しています。同じ成功率を保ちながら、適応型観測によりテキスト量を29.9%、呼び出し回数を15%削減します。 |
対応範囲
| 領域 | 利用できる機能 |
|---|---|
| 操作 | クリック、フォーム、文字入力、選択、アップロード、ドラッグ不要のスクロール、タブ、待機 |
| 読み取り | スナップショット、差分、Markdown、リンク、テーブル、JSON-LD、メタデータ、CSS マップ |
| DevTools | HAR、CPU プロファイル、ヒープスナップショット、JS カバレッジ、ネットワーク/CPU スロットリング |
| ステルス | Patchright、フィンガープリントの自己チェック、トラッカーのブロック、WebRTC の漏えいフラグ、プロキシの地域マッチング |
| ログイン済み環境とリモート環境 | 永続プロファイル、ストレージ状態、ローカル Chrome CDP、Browserbase、Steel、Browserless |
| プロキシ | HTTP、HTTPS、SOCKS5、認証、プール、固定/ランダム/ラウンドロビン、ヘルスチェックと地域チェック |
| メモリ | オリジンごとのヒントとワークフロー。成功後に学習し、エージェントが作成したものに限定 |
| セキュリティ | SSRF ガード、オリジンリスト、信頼できないコンテンツのマーカー、リスクゲート、監査ログ |
| 評価 | 12タスクのベンチマーク、完全観測と適応型観測の比較、サーバー横断型 LLM ランナー |
| OpenCode | Code Mode 名前空間、35個のツール、14個のツールを使うスリムモード、サーバーの指示 |
インストール
ワンライナー:
curl -fsSL https://raw.githubusercontent.com/DrMkdaddy/cat-burglar/main/scripts/install.sh | bash
公式 MCP Registry から:io.github.DrMkdaddy/cat-burglar(OCI イメージ)。
GHCR から:docker run -i --rm ghcr.io/drmkdaddy/cat-burglar:latest。
インストーラーは cat-burglar バイナリを PATH に追加します。必要に応じて、pnpm でグローバルにインストールできます:
pnpm add -g https://github.com/DrMkdaddy/cat-burglar/releases/download/v0.5.2/cat-burglar-mcp-0.5.2.tgz
cat-burglar doctor
install コマンドは、claude-code、claude-desktop、cursor、codex、gemini、vscode、windsurf、cline、opencode、generic 向けのすぐに使える設定を出力します。
対応クライアント
| クライアント | セットアップ |
|---|---|
| Claude Code | claude mcp add catburglar -- cat-burglar |
| Claude Desktop、Cursor、Windsurf、Cline | docs/install.md の mcpServers JSON を貼り付けます |
| Codex | codex mcp add catburglar -- cat-burglar |
| Gemini CLI | ~/.gemini/settings.json に mcpServers エントリーを追加します |
| VS Code | .vscode/mcp.json に servers エントリーを追加します |
| OpenCode | mcp.servers の下に catburglar を追加します |
| Docker | docker run -i --rm ghcr.io/drmkdaddy/cat-burglar:latest |
サーバー名に browser を使わないでください。OpenCode にはその名前の組み込みブラウザツールセットがあり、Code Mode では重複するツールが非表示になります。
このプロンプトをエージェントにコピー
簡易版:
Install Cat Burglar from https://github.com/DrMkdaddy/cat-burglar as a local MCP server named catburglar.
Run:
curl -fsSL https://raw.githubusercontent.com/DrMkdaddy/cat-burglar/main/scripts/install.sh | bash
Then run `cat-burglar doctor`.
Add the server with command `cat-burglar` (add `--slim` if the client loads every tool schema), restart or reconnect the client, and verify by navigating to https://example.com and taking a snapshot. Report the tool count, engine, and page title.
クライアント別の手順、検証、セキュリティルールを含む完全な基本プロンプト:docs/agent-prompt.md。
<system_context>
You are installing Cat Burglar, a local browser MCP server, for this project.
</system_context>
<goal>
Add Cat Burglar to the current MCP client and verify that it can drive a browser.
</goal>
<install_steps>
1. Run:
curl -fsSL https://raw.githubusercontent.com/DrMkdaddy/cat-burglar/main/scripts/install.sh | bash
Then run `cat-burglar doctor` and report the output.
2. Add a local stdio MCP server named `catburglar` that runs `cat-burglar`.
If the client loads every tool schema into context, add `--slim`.
3. Do not use the name `browser`. It collides with OpenCode's built-in browser tools.
4. Enable `BROWSER_MCP_ALLOW_PRIVATE_NETWORK=1` only if the user needs localhost.
5. Restart or reconnect the MCP client.
6. Verify with `navigate` to https://example.com, then `snapshot`, then `close`.
</install_steps>
<verification>
Report the server name, the tool count, the engine, and the title returned by the test page.
</verification>
<constraints>
Do not commit secrets. Do not enable private-network access without asking. Use the measured
12-task local numbers if numbers are needed. Do not invent a head-to-head result.
</constraints>
<user_prompt>
Install and verify Cat Burglar for my agent.
</user_prompt>
プロンプト例
調査:
Use catburglar. Open https://news.ycombinator.com, take a snapshot, read the top five stories with markdown, and give me the titles and links.
フォームとワークフロー:
Use catburglar. Open the staging signup page, fill the form with test data, submit it, and tell me exactly what changed on the page.
ローカルアプリのテスト:
Use catburglar with engine chromium. Open http://localhost:3000, log in with the seeded test user, open the billing page, capture a screenshot, and report console errors.
パフォーマンス:
Use catburglar with engine chromium. Open the product page, start a performance trace, reload, stop the trace, and summarize the long tasks and the three slowest scripts.
3 種類のブラウザ
| エンジン | 最適な用途 | フットプリント |
|---|---|---|
patchright | 保護されたサイト、ログイン、ボット対策が必要な作業 | Chromium 全体 |
chromium | DevTools、コンソール、トレース、PDF、ローカルアプリのテスト | Chromium 全体 |
obscura | 大量の読み取り、メモリ使用量を抑えたい作業 | 約 43 MB |
{ "engine": "obscura", "restart": true }
実行中のブラウザのエンジンは、その場で変更できません。restart: true を指定して open を呼び出してください。
リモート CDP とクラウドブラウザ
ローカルブラウザを起動する代わりに、Chrome DevTools Protocol エンドポイントに接続します:
{
"engine": "remote",
"cdp_url": "wss://connect.browserbase.com?apiKey=YOUR_KEY"
}
これは Browserbase、Steel、Browserless、Obscura Cloud、その他の CDP プロバイダーに対応します。ログイン済みのローカル Chrome を使う場合は、別のプロファイルを指定して起動してください:
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/cat-burglar-chrome
その後、open({ "engine": "remote", "cdp_url": "http://127.0.0.1:9222" }) を呼び出します。ローカルのブラウザプロセスは複製されないため、この方法ではブラウザのメモリを追加で消費しません。
レジデンシャルプロキシ
Cat Burglar は、認証の有無を問わず、HTTP、HTTPS、または SOCKS5 プロキシを使用できます。プールはローテーション、スティッキー接続、セッションごとの選択に対応します。
{
"proxyPool": [
{ "id": "us-1", "url": "http://user:[email protected]:8000", "geo": { "timezone": "America/New_York", "locale": "en-US" } },
{ "id": "de-1", "url": "socks5://user:[email protected]:1080", "geo": { "timezone": "Europe/Berlin", "locale": "de-DE" } }
],
"proxyOptions": {
"mode": "sticky",
"matchGeo": true,
"testOnLaunch": false,
"rotateOnError": true
}
}
host:port:user:pass の形式で渡すこともでき、Cat Burglar が正規化します。プロキシツールを使って、エントリーの確認、テスト、ローテーション、追加、削除を行えます:
{ "action": "test", "force": true }
{ "action": "rotate" }
{ "action": "add", "url": "http://user:[email protected]:8000", "label": "us-residential" }
プロキシ URL は出力と監査ログで伏せられます。プロキシが有効な場合、Chromium には WebRTC の漏えい防止フラグが設定され、matchGeo によってブラウザのタイムゾーンとロケールがプロキシの出口に合わせられます。ヘルスチェックは必要に応じて curl 経由で実行されるため、ブラウザプロセスは追加されません。
操作の流れ
navigateでページに移動します。snapshotで URL、タイトル、コントロール、安定した参照を取得します。- 参照を使って
click、fill、またはselectを実行します。 - アクションから返される変更の観測結果を読み取ります。
- 読み取りには
markdown、構造化データの取得にはextract、トレースにはperfを使います。 - 繰り返し実行できるワークフローが成功したら、
memory learnを実行します。
要素が DOM に残っている間は、参照を有効に使えます。要素がページからなくなると、複製された要素をクリックする代わりに、古い参照エラーでアクションが失敗します。
必要に応じて使う DevTools
devtools ツールは、アクションの実行中に限り Chrome の内部情報を取得します。バックグラウンドで記録されることはありません。
| アクション | 結果 |
|---|---|
har_start / har_stop | リクエストとレスポンスのメタデータ、および任意の本文を含む HAR 1.2 ファイル |
cpu_start / cpu_stop | .cpuprofile と、実行時間が最も長い関数 |
heap | .heapsnapshot ファイル |
coverage_start / coverage_stop | URL ごとの未使用 JavaScript |
throttle | ネットワーク遅延、帯域幅、オフラインモード、CPU スロットリング |
{ "action": "cpu_start" }
{ "action": "cpu_stop" }
CAPTCHA の引き継ぎ
captcha ツールは、reCAPTCHA、hCaptcha、Turnstile、DataDome、PerimeterX、Arkose、および一般的なテキストチャレンジを検出します。チャレンジを解決することはありません。
チャレンジが表示されたら、次を呼び出します。
{ "action": "handoff" }
ローカルのデスクトップでは、Cat Burglar が同じプロファイルをヘッドモードで再起動し、現在のページに戻って実際のブラウザーウィンドウを開きます。そのウィンドウでチャレンジを直接解決したら、action: "wait" を指定して captcha を呼び出すと、エージェントは同じセッションで処理を続けます。切り替え後も、Cookie、ストレージ、現在の URL は維持されます。
navigate https://accounts.hcaptcha.com/demo
captcha: hcaptcha
captcha action=handoff
mode: window
url: https://accounts.hcaptcha.com/demo
[a real Chromium window opens on that page]
# you solve the widget
captcha action=wait
detected: false
snapshot
[e4] button "Submit"
サーバーにはソルバーとの連携機能はありません。チャレンジが消えるまでページをポーリングします。
ディスプレイがない場合、またはエンジンが Obscura の場合、handoff はループバックのライブビューページにフォールバックします。次のコマンドでこのフォールバックを強制できます。
{ "action": "stream", "open_window": false, "timeout_ms": 300000 }
リモート CDP プロバイダーの場合は、開くときにプロバイダーのライブビュー URL を渡します。
{
"engine": "remote",
"cdp_url": "wss://connect.browserbase.com?apiKey=YOUR_KEY",
"live_view_url": "https://browserbase.com/sessions/YOUR_SESSION"
}
captcha handoff はローカルウィンドウを開かず、代わりにその URL を返します。ストリームの引き継ぎはトークンで保護され、127.0.0.1 のみにバインドされます。また、Done、タイムアウト、または close によって停止します。
ベンチマーク
| モード | 成功 | ツール呼び出し | 観測文字数 | 所要時間 |
|---|---|---|---|---|
| 完全なスナップショット | 12/12 | 80 | 30,029 | 15.37 s |
| 差分+変更の観測 | 12/12 | 68 | 21,057 | 13.86 s |
サーバー側の状態チェックを含む、12 タスクのローカルスイートで測定しました。プロファイルは flash、エンジンは chromium、Node は 26 です。生の JSON:bench/results/2026-11-09-flash.json。
pnpm bench
pnpm bench:compare
ツール
デフォルトでは 35 個のツールがあり、--slim モードでは 14 個です。
| グループ | ツール |
|---|---|
| ライフサイクル | open、close、navigate、back、forward、reload、status、tabs |
| 読み取り | snapshot、markdown、extract、evaluate、screenshot、pdf |
| 操作 | click、fill、type、press、select、hover、scroll、upload、wait、captcha |
| 状態 | cookies、storage、stealth、memory、proxy |
| 診断 | network、console、perf、devtools、resources、audit |
extract は、リンク、テーブル、JSON-LD、メタタグ、テキスト、CSS フィールドマップに対応します。perf は、ウェブバイタル、CDP メトリクス、低速リソース、Chrome の完全なトレースに対応します。
安全性
- ナビゲーションとすべてのリクエストに対して、DNS チェックとリダイレクトの追跡を含む SSRF 保護を行います。
- プライベート、ループバック、リンクローカル、CGNAT、マルチキャスト、予約済みの各範囲は、明示的に許可されない限りブロックされます。
- プライベートネットワークへのアクセスを有効にしても、クラウドメタデータのエンドポイントはブロックされます。
- ワイルドカードホストに対応した、オリジンの許可リストとブロックリストがあります。
- ページ由来の出力には、信頼できないコンテンツを示すマーカーが付きます。
- delete、pay、transfer、send、publish、deactivate など、影響の大きい対象にはフラグが付きます。明示的な確認を必須にするには、
BROWSER_MCP_RISKY_ACTION_POLICY=askを設定します。 - サイトメモリに記録できるのはエージェントが作成した内容のみです。ページのテキストは取り込まれず、参照は破棄され、入力値はプレースホルダーに置き換えられます。
- トラッカーのブロックには、Obscura の 3,520 ドメインの PGL リストに加え、一般的な分析ホストが使用されます。
これらを多層防御の一部として使用してください。機密性の高いアカウントでは、ask ポリシーで実行し、承認前に確認内容を確認してください。
リソース効率
デフォルトでは、忠実度を優先してフル Chromium を使用します。明示的に要求されない限り、サーバーはブラウザーを重ねて起動せず、バックグラウンドで記録せず、プロキシチェックも実行しません。
| 選択肢 | メモリへの影響 |
|---|---|
obscura エンジン | 約 43 MB。Chromium の約 1 GB と比べて少なくなります |
remote エンジン | ローカルのブラウザープロセスは使用せず、リモート CDP プロバイダーを使用します |
--slim | ツール数が 35 個から 14 個に減り、スキーマのコストも低くなります |
| オンデマンドの DevTools | HAR、CPU、ヒープ、カバレッジの計測は、アクションの実行中にのみ行われます |
| プロキシテスト | curl のみを使用し、ブラウザープロセスは使用しません |
idleTimeoutMs | 設定すると、非アクティブ状態が続いた後にブラウザーを閉じます |
| Flash プロファイル | スナップショット、Markdown、変更の観測のサイズを小さくします |
resources ツールを使うと、プロセスツリーの RSS、プロセス数、開いているページ数、バッファーサイズを確認できます。バックグラウンドネットワーク、コンポーネントの更新、同期、ping、メトリクスは、起動時に無効化されています。
リサーチ
設計にあたって、2023年から2026年までのウェブエージェントに関する研究を調査し、評価エラー、観測の整合性、変更の観測、メモリ、計画、プロンプトインジェクションを検討しました。40件の出典を含む調査の全文はこちらです:docs/research/2026-11-browser-agent-research.md。
LLM ハーネスでは、同じ12個のタスクを ours、playwright、chrome-devtools、obscura に対して実行できます:
pnpm bench:llm -- --server ours
開発
pnpm install
pnpm build
pnpm test
pnpm smoke
pnpm bench
pnpm bench:compare
node dist/index.js doctor
node dist/index.js install --client claude-desktop
設定ファイル:~/.config/browser-mcp/config.json。例:cat-burglar.config.example.json。環境変数で設定を上書きできます。
クレジット
| 出典 | ライセンス | 使用した内容 |
|---|---|---|
| Obscura | Apache-2.0 | Ref-token スナップショットのアイデア、Markdown と抽出のセマンティクス、SSRF 対策、トラッカーリストのデータ |
| Playwright MCP | Apache-2.0 | アクセシビリティ優先のスナップショット、永続プロファイル、オリジンとファイルのポリシー |
| Chrome DevTools MCP | Apache-2.0 | パフォーマンス指標とトレース、ネットワークとコンソールの調査 |
| Patchright | Apache-2.0 | ステルス対応の Playwright ドライバー |
| browser-use | MIT | エージェントのアクション語彙と、人間らしい操作のアイデア |
コピーしたデータ資産はトラッカーリストのみです。NOTICE をご覧ください。
ステータス
バージョン 0.5.2。12タスクのローカルスイートでベンチマークを実施し、未加工の JSON をリポジトリに含めています。LLM ハーネスでは、4つのサーバーに対して同じタスクを実行できます。問題や反例を歓迎します。
ライセンス
MIT。詳細は LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。