要約
Cloudflare Kitesurfは、AIエージェント向けに設計された軽量・ステートレスなブラウザであり、検索エンジンではない。CloudflareがBrowser Runの一部としてホスティングしているため、個人利用で試すだけならWorkerのデプロイは不要。Codexなどのエージェントは、ローカルMCPサーバーから認証付きCDP接続を行い、Cloudflare上のKitesurfを遠隔操作する。
キーワード検索から複数の記事を集めて要約するだけなら、Web Searchを第一選択にする。JavaScriptレンダリング、クリック、フォーム入力、無限スクロール、スクリーンショットなど、実際のブラウザ操作が必要なページに限ってKitesurfをフォールバックとして利用するのが効率的。
このセッションでは、CodexからKitesurfへ接続するMCPランチャーをローカルに作成し、グローバルMCPサーバー kitesurf として登録した。Cloudflare Account IDとBrowser Run APIトークンの入力、および実接続テストは未完了。
背景
CloudflareのKitesurf紹介記事をきっかけに、「エージェント専用ブラウザとは何か」「自分の環境でも構築できるか」を調査した。
検討した主な疑問は次のとおり。
- ブラウザがWorkers上で動き、エージェントがそれを使うという理解でよいか
- 自分でWorkerをデプロイする必要があるか
- APIトークンを使う場合、公開範囲は制限されるか
- Playgroundだけで試せるか
- Kitesurfと通常のWeb Searchはどう使い分けるか
- 費用、制限、セットアップ要件は何か
Kitesurfの位置づけ
Kitesurfは、通常のデスクトップ用Chromiumをそのままホスティングしたサービスではない。Cloudflare Workers上で動作する、AIエージェント向けの軽量ブラウザエンジンである。
人間向けブラウザに必要な次の機能を重視していない。
- タブやテーマ
- Chrome拡張
- 動画やWebGL
- ピクセル単位で完全なレンダリング
- 長時間維持されるログインセッション
代わりに、エージェントの短時間タスクで重要になる次の要素を重視する。
- DOMとHTMLの取得
- JavaScriptを実行したページの調査
- CDPによるクリック、入力、評価
- スクリーンショットやPDF
- 一時的に起動して破棄できる隔離環境
- CPU・メモリ効率
- バースト的な大量処理
アーキテクチャ
今回構築した利用経路は次のとおり。
flowchart LR
A["Codex<br>AIエージェント"] --> B["chrome-devtools-mcp<br>ローカルプロセス"]
B -->|"CDP / WebSocket<br>Bearer API Token"| C["Cloudflare Browser Run API"]
C --> D["Kitesurf<br>Cloudflare管理のブラウザ"]
D --> E["調査対象Webサイト"] 重要なのは、通常の個人利用ではKitesurfそのものを自分のWorkerとしてデプロイしない点である。KitesurfはCloudflareが管理するBrowser Runのブラウザ選択肢であり、CDPエンドポイントに browser=kitesurf を付けて利用する。
接続先の形式:
wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-run/devtools/browser?browser=kitesurf Workersへのデプロイが必要になるケース
単にCodexへブラウザ機能を与えるだけなら、Workerのデプロイは不要。ローカルMCPクライアントからCloudflareの管理APIへ接続すればよい。
独自Workerのデプロイを検討するのは次のケース。
- URLや調査条件を受け取る独自APIを公開したい
- 定期巡回、Webhook、Queueなどを組み合わせたい
- Durable Objectsへエージェントの状態や記憶を保存したい
- 複数ユーザーへブラウザ機能を提供したい
- 独自認証、許可ルール、監査ログを実装したい
- AIモデル、Browser Run、D1、R2などを1つのサービスに統合したい
公開範囲とセキュリティ
Cloudflare Browser RunのCDPエンドポイントはインターネット上に存在するが、接続にはCloudflare Account IDとBrowser Run権限を持つAPIトークンが必要。
今回の構成では以下の方針を採用した。
- 自分の公開Workerや公開Web APIは作らない
- APIトークンをMCP登録コマンドの引数へ直接埋め込まない
- Git管理対象外のローカル .env からトークンを読む
- MCPランチャーが接続時にAuthorizationヘッダーを組み立てる
- .env.example にはダミー値だけを置く
注意点:
- APIトークンが漏れると、そのトークンの権限範囲で利用される可能性がある
- 最小権限のトークンを使う
- トークンをチャット、Git、スクリーンショットへ載せない
- Kitesurfへ入力した情報やアクセス先はCloudflareのサービスを経由するため、機密情報の利用には別途判断が必要
PlaygroundとMCPの違い
Kitesurf Playgroundは、コードを書かずにKitesurfの互換性や動作を試す場所。
Playgroundで確認できるもの:
- ページのレンダリング結果
- DOM
- Console
- Network
- WebAssemblyメモリ使用量
- 対象サイトがKitesurfで動くか
使い分け:
- Playground:人間が特定サイトを試す
- MCP接続:CodexなどのAIエージェントに操作させる
- 独自Worker:ブラウザ処理をアプリや業務フローとして提供する
最初にPlaygroundで対象サイトの互換性を確認し、問題なければMCPへ進むのがよい。
Web Searchとの違い
Kitesurfは検索エンジンではない。検索結果を探す機能と、ページをブラウザとして操作する機能は分けて考える。
キーワード調査に対する推奨構成
「特定KWで検索し、複数ページを調査して内容をまとめる」という用途では、Web Searchを第一選択にする。
flowchart TD
A["キーワードを受け取る"] --> B["Web Searchで候補ページを発見"]
B --> C["公式情報・信頼性・更新日で候補を選別"]
C --> D["通常の方法で本文取得"]
D --> E{"必要情報を取得できたか"}
E -->|"Yes"| F["比較・要約・出典整理"]
E -->|"No"| G["Kitesurfでレンダリング・操作"]
G --> F Kitesurfを最初からすべてのページに使わない理由:
- ブラウザ起動と操作が増え、処理が遅くなる
- ブラウザ利用時間を消費する
- 検索サイトや対象サイトのBot対策に当たる可能性がある
- 単純な記事本文ならWeb Searchの方が効率的
- ブラウザ操作ログやDOMが増え、モデルのコンテキストを消費しやすい
Kitesurfが有効な調査例
- JavaScript実行後に本文や表が表示される
- 「もっと見る」を押さないと全文が出ない
- 検索条件をフォームへ入力する
- タブやアコーディオンを開く必要がある
- 無限スクロールで結果を追加取得する
- ダッシュボードのフィルターを操作する
- 画面状態をスクリーンショットで保存する
- 通常取得できないDOMやネットワーク状態を調査する
- SPAの簡単な動作確認を行う
具体例:
- 不動産サイトで地域・価格・間取りを入力し、物件を比較する
- SaaS料金ページの月額・年額トグルを切り替える
- JavaScriptで描画されるIRダッシュボードから数値を取得する
- Webアプリでボタンを押した後の表示を確認する
Kitesurfを避けるケース
次の用途では、通常のCloudflare Browser Run(Chromium)または手元のChromeを検討する。
- 動画やWebGLが必要
- CAPTCHAや高度なBot対策がある
- 実ブラウザ相当のTLSフィンガープリントが必要
- 長時間のログイン状態を維持したい
- Chrome拡張を利用したい
- ピクセル単位の表示検証が必要
- Gmailなど既存の個人ログインセッションを使いたい
性能上の特徴
Cloudflareが14 URLのコーパスで行った計測では、KitesurfはChromiumのwarm poolと比べて次の傾向が示されている。
- スクリーンショットのCPU:約3.1倍少ない
- HTML抽出のCPU:約3.8倍少ない
- スクリーンショットのメモリ:約4.7倍少ない
- HTML抽出のメモリ:約7倍少ない
- スクリーンショットの実時間:約1.8倍遅い
- HTML抽出の実時間:約1.7倍遅い
つまり、単発処理の応答速度ではChromiumが有利な場合がある一方、大量・一時的・並列なエージェント処理では、KitesurfのCPUとメモリ効率が利点になる。
料金と制限
2026年8月8日時点で、KitesurfはBetaとして無料提供されている。ただしアカウント単位の利用制限がある。
Browser Run全体のWorkers Freeプランの主な標準制限:
- ブラウザ時間:1日10分
- Browser Sessionsの同時ブラウザ:アカウントあたり3
- 新規Browser Session:20秒に1回
- ブラウザの非アクティブタイムアウト:標準60秒
- Quick Actions:10秒に1リクエスト
- Crawl:1日5ジョブ、1クロール最大100ページ
Browser RunのWorkers Paidプラン:
- 月10ブラウザ時間を含み、超過は1時間あたり$0.09
- Browser Sessionsの月平均同時ブラウザ10個まで含む
- 超過する月平均同時ブラウザは1個あたり月$2.00
- 標準の同時実行上限はアカウントあたり120
- Quick Actionsは秒間10リクエスト
Kitesurf Beta固有の無料条件や制限は今後変更される可能性があるため、利用前に公式ドキュメントを再確認する。
セットアップ要件
- Cloudflareアカウント
- Cloudflare Account ID
- Browser RunへアクセスできるAPIトークン
- Node.jsとnpx
- MCP対応クライアント(今回はCodex)
- chrome-devtools-mcp
このセッションで実施したセットアップ
ローカルディレクトリ:
/Users/meg/work/memo/tools/kitesurf-mcp/ 作成したファイル:
- README.md:用途、必要条件、設定、確認方法
- .env.example:必要な環境変数の雛形
- .gitignore:秘密を含む.envを除外
- start.mjs:環境変数を読み、Kitesurf CDPへ接続するMCPランチャー
Codexへ登録したMCP:
Name: kitesurf
Status: enabled
Transport: stdio
Command: node
Args: /Users/meg/work/memo/tools/kitesurf-mcp/start.mjs ランチャーのJavaScript構文チェックと、認証情報未設定時に明確なエラーを返すことを確認済み。
残りのセットアップ手順
- Cloudflare Dashboardへログインする。
- Account homeでAccount IDを確認する。
- API Tokens画面でBrowser Runを利用できるAPIトークンを作成する。
- ローカルで次を実行する。
cd /Users/meg/work/memo/tools/kitesurf-mcp
cp .env.example .env - .envへ次の値を設定する。
CLOUDFLARE_ACCOUNT_ID=実際のAccount ID
CLOUDFLARE_API_TOKEN=発行したAPIトークン - Codexを再起動するか、新しいタスクを開始する。
- 次のような依頼で接続を確認する。
Kitesurfを使って https://example.com を開き、
ページタイトルと主要リンクを取得してください。 決定・学び
- Kitesurfは検索エンジンではなく、ブラウザ操作ツールとして扱う。
- 一般的なキーワード調査はWeb Searchを優先する。
- Kitesurfは動的ページや操作が必要なページへのフォールバックにする。
- 個人利用の試行ではWorkerをデプロイしない。
- 互換性確認はまずPlaygroundで行う。
- APIトークンはローカル.envに置き、GitとMCP設定引数へ埋め込まない。
- 長時間認証、動画、WebGL、強いBot対策にはKitesurfを選ばない。
成果物・参照先
- ローカルREADME:/Users/meg/work/memo/tools/kitesurf-mcp/README.md
- MCPランチャー:/Users/meg/work/memo/tools/kitesurf-mcp/start.mjs
- 環境変数雛形:/Users/meg/work/memo/tools/kitesurf-mcp/.env.example
- Kitesurf Playground
- Cloudflare Dashboard
未解決事項
- Cloudflare Account IDは未設定。
- Browser Run APIトークンは未発行または未設定。
- Kitesurfへの実接続テストは未実施。
- 実際に調査したい対象サイトでの互換性は未確認。
- Kitesurf Betaの料金と制限は今後変更される可能性がある。
出典
- Cloudflare Blog:Kitesurf — Kitesurfの背景と設計思想
- Cloudflare Docs:Kitesurf — 用途、制約、CDP・MCP接続、性能比較、Playground
- Cloudflare Docs:Browser Run — Browser Run全体の概要と統合方式
- Cloudflare Docs:Browser Run Pricing — Free・Paidプランの料金
- Cloudflare Docs:Browser Run Limits — 利用時間、同時実行、レート制限
- Cloudflare Docs:Agents Browser tools — Agents SDKからBrowser Runを利用する構成
- Chrome DevTools MCP — MCPクライアントからCDPブラウザを操作するためのMCPサーバー