Claude Media
Cloudflare Browser Rendering(Browser Run)のMCPでスクレイピングを自動化

Cloudflare Browser Rendering(Browser Run)のMCPでスクレイピングを自動化

Cloudflare Browser Rendering(現Browser Run)のMCPサーバーは13ツールを1接続で扱えます。追加手順、無料枠の制限、Quick Actionsの守備範囲を示します。

CloudflareのBrowser Rendering MCPサーバーは、ヘッドレスブラウザーの操作をClaude Codeから呼び出せる公式のリモートMCPサーバーです。URLを渡すだけでHTML取得・Markdown変換・スクリーンショット・PDF化・構造化データ抽出までを1本の接続でこなせます。ローカルにChromeやPuppeteerを用意する必要はなく、Cloudflareのアカウントに接続するだけで使えます。

Browser Renderingは現在「Browser Run」という名前で、MCPサーバーも同じhttps://browser.mcp.cloudflare.com/mcpです。無料枠は1日10分で、Workers Paidなら月10時間まで含まれます。

Cloudflare Browser Rendering MCPサーバーとは

Cloudflareのグローバルネットワーク上で動くヘッドレスChromeを、MCPプロトコル経由でAIクライアントから操作できるようにする公式サーバーです。https://browser.mcp.cloudflare.com/mcpに接続し、Cloudflare OAuthでアカウントを認可すると使えるようになります。

Cloudflareは「製品別MCPサーバー」を16種類公開しており、このサーバーはその1つです。Workers Bindings・Observability・Radar・AI Gateway・Logpushなど、それぞれが自社サービスの特定領域だけを担当します。Browser Rendering MCPサーバーが扱うのはヘッドレスブラウザー操作だけで、DNS分析やAI Gatewayのログ検索を同じ接続で兼ねることはできません。

別系統の「Cloudflare API MCPサーバー」(https://mcp.cloudflare.com/mcp)は、2,500以上のAPIエンドポイントをsearch()とexecute()の2ツールで扱います。モデルがOpenAPI仕様に対してJavaScriptを書いて実行する方式で、トークン消費は約1,000トークンです。全エンドポイントを個別ツールにすると約117万トークン(必須パラメーターのみでも約24万トークン)かかる計算で、この差がコード実行方式を採る理由になっています。ブラウザー操作に絞るなら、ツール名と引数が用途に合った専用サーバーのほうが呼び出しの意図が伝わりやすくなります。

Claude Codeへの追加方法

Streamable HTTPで公開されているので、claude mcp addにHTTPトランスポートを指定するだけで接続できます。

手順

追加から最初の呼び出しまで

  1. 1

    サーバーを登録する

    次のコマンドを実行します。名前のcf-browserは任意です。

  2. 2

    OAuth認可を済ませる

    認可を求められたら、ブラウザーでCloudflareのOAuth認可を済ませます。承認するとツールが使え、APIトークンを手動で発行する必要はありません。

  3. 3

    話しかけてツールを選ばせる

    「https://example.com をMarkdownに変換して」のように頼むと、Claude側が該当ツールを選びます。

claude mcp add --transport http cf-browser https://browser.mcp.cloudflare.com/mcp

v2.1.287で--scope projectを付けて実行すると、作業ディレクトリに.mcp.jsonが作られ、次の内容になりました。チームで共有するときはこのファイルをリポジトリに含めます。

{
  "mcpServers": {
    "cf-browser": {
      "type": "http",
      "url": "https://browser.mcp.cloudflare.com/mcp"
    }
  }
}

ツールはアカウント単位で動きます。単一アカウントの認証情報なら対象は自動で決まります。複数アカウントにアクセスできる認証情報では、ツール呼び出しでaccount_idを渡すか、cf-account-idヘッダーを設定します。ヘッダーは--headerで付けられ、同じバージョンで.mcp.jsonに次のように入りました。

"cf-browser": {
  "type": "http",
  "url": "https://browser.mcp.cloudflare.com/mcp",
  "headers": {
    "cf-account-id": "<ACCOUNT_ID>"
  }
}

/mcpと/sseの両URLは同じStreamable HTTPハンドラーに届き、リクエストごとに認証コンテキストを作るステートレスな実装です。/sseは非推奨のHTTP+SSEトランスポートではなく、同じサーバーへのエイリアスなので、新規接続では/mcpを使います。

13個のツールでできること

公開ツールは、単発の取得系、非同期のクロール系、セッション管理系の3グループです。

ツール用途
get_url_html_content用途指定URLのHTMLをそのまま取得
get_url_markdown用途ページ内容をMarkdownに変換して取得
get_url_screenshot用途スクリーンショットを取得(ビューポート指定可)
get_url_pdf用途ページをPDF文書としてレンダリング
get_url_snapshot用途HTMLとスクリーンショットを1回でまとめて取得
scrape_url_elements用途CSSセレクターで要素を抽出
get_url_json用途プロンプトとJSONスキーマを指定し、AIで構造化データを抽出
get_url_links用途ページ内のリンク一覧を取得
start_crawl用途非同期のクロールジョブを開始しjob_idを返す
get_crawl_result用途クロールジョブの状態と結果を取得
cancel_crawl用途実行中のクロールジョブを中止
list_browser_sessions用途アカウントで動いているブラウザーセッションを一覧
kill_browser_session用途セッションIDを指定してセッションを終了

取得系の8ツール(get_url_html_contentからget_url_linksまで)はステートレスな単発呼び出しです。get_url_jsonはプロンプトとJSON Schemaを渡してAIに抽出させるので、CSSセレクターを書かなくても商品名や価格のようなフィールドを狙えます。ここで使うのはWorkers AIの@cf/meta/llama-3.3-70b-instruct-fp8-fastで、呼び出しごとにWorkers AIの利用量も発生します。Claudeがページを読むのとは別のモデルが抽出する点に注意が必要です。

ページ系ツールとクロールには、省略可能なbrowser引数があります。省略すると既定のChromeで描画し、kitesurfを指定するとKitesurfブラウザーエンジンで描画します。start_crawlでkitesurfを使えるのは、renderがtrueのときだけです。

クロールは2段構成です。start_crawlはjob_idを返すだけで、結果はget_crawl_resultで取りに行きます。ジョブの状態はrunning・completed・erroredのほか、cancelled_by_user・cancelled_due_to_limits・cancelled_due_to_timeoutの3種類の中止があります。最大実行時間は7日で、完了後の結果は14日間保持されます。呼び出しが早すぎればrunningが返るので、完了を待ってから再取得します。

同じくクラウドのヘッドレスブラウザーをMCP経由で操作する選択肢には、StagehandベースのBrowserbase MCPサーバーがあります。

Quick Actionsの範囲を超える作業は別の経路が要る

Browser Run(旧Browser Rendering)の統合方法は「Quick Actions」と「Browser Sessions」の2種類で、課金の単位も違います。

くらべる

どちらの経路で動かすか

単発・ステートレス

Quick Actions

スクリーンショット・PDF・スクレイピング・クロールを、コードのデプロイなしで呼び出します。課金はブラウザー時間だけです。

コードで制御

Browser Sessions

Puppeteer・Playwright・CDP(Chrome DevTools Protocol)・Stagehandで、ログイン状態の維持やフォーム入力まで書きます。課金はブラウザー時間と同時実行ブラウザー数の両方です。

MCPサーバーの13ツールのうち、セッション側に触れるのは一覧と終了の2本だけです。フォーム入力やページ内クリックのツールはありません。ログインを維持した複数ページの操作が必要なら、Workers上のPuppeteerやPlaywright、あるいはCDP経由の接続が必要です。Cloudflareは別途、「AIエージェントのブラウジング」向けにPlaywright MCPとCDPのMCPクライアント接続を案内しています。単発のページ取得やスクリーンショットで済むタスクなら、コードなしでこのMCPサーバーだけで足ります。

旧称「Browser Rendering」と現行の「Browser Run」

この製品はもともと「Browser Rendering」で、現在は「Browser Run」に改称されています。MCPサーバーのGitHubリポジトリではapps/browser-renderingというディレクトリ名が残る一方、READMEのタイトルは「Cloudflare Browser Run MCP Server」です。ドキュメントのURLはdevelopers.cloudflare.com/browser-run/に統一されています。

ブログ記事や既存の連携ガイドには旧称の表記が多く残っているので、情報を探すときは両方の名前で検索します。旧URLのbrowser-renderingではなく、browser-runのページが現行です。

料金と無料枠の制限

Browser RunはWorkers FreeとWorkers Paidの両プランで使えます。Quick Actionsの課金対象は「ブラウザー時間」で、Browser Sessionsと同じ枠を共有します。

プランブラウザー時間超過分
Workers Freeブラウザー時間1日10分超過分翌UTC日まで429で拒否。クロールはcancelled_due_to_limitsで中止
Workers Paidブラウザー時間月10時間超過分1時間あたり$0.09

Workers Paidで月50時間使うと、無料枠10時間を引いた40時間が対象で、40時間×$0.09の月額$3.60が料金ページの計算例です。

料金より先に効いてくるのは、レート制限です。Quick Actionsを使うMCPサーバーには次の上限が掛かります。

数字

Workers FreeとPaidのQuick Actions上限

  • Free: リクエスト間隔

    10秒に1回

    Quick Actionsの合計リクエスト数

  • Free: クロール

    1日5ジョブ

    1回あたり最大100ページ

  • Paid: リクエスト

    毎秒30回

    Quick Actionsの合計リクエスト数

  • ブラウザーのタイムアウト

    60秒

    FreeもPaidも同じ

Freeプランで1ページずつ頼む用途なら10秒間隔は問題になりにくい一方、get_url_*を続けて並列に呼ぶ使い方では詰まります。間隔を超えると、Browser Runは429 Too many requestsを返し、待ち時間はRetry-Afterヘッダーで読めます。

別の429もあります。Freeの1日10分を使い切ると429 Browser time limit exceeded for todayが返り、翌UTC日まで新しいブラウザーを起動できません。前者は数秒待てば通り、後者は待っても日付が変わるまで解けないので、メッセージで見分けます。

Browser Sessionsでは、browser.close()を呼ばないと60秒のタイムアウトまで(keep_alive使用時は最長20分)ブラウザー時間を消費し続けます。Freeから有料へ上げた直後に1日10分の上限が残る場合は、Cloudflareが案内するとおりWorkerを再デプロイして利用量を新プランに紐付けます。

つまずいたときの切り分け

意図しないアカウントに繋がる

複数アカウントにアクセスできる認証情報でaccount_idを省くと、対象が自動判定されません。cf-account-idヘッダーを.mcp.jsonに固定しておけば、呼び出しごとの指定が要りません。

クロールの結果が空に見える

start_crawlの直後はrunningしか返りません。completedになるまで待ち、cancelled_due_to_limitsが出たらアカウントの上限に達しています。Freeプランでは前掲のジョブ数とページ数の上限が先に来ます。

上限で止まるときは、ブラウザー時間を減らす指定が効きます。start_crawlでは、静的なページならrenderをfalseにして描画を避け、limitを小さくします。render: falseのクロールは、ベータ期間中は課金されません。キャッシュを再利用する期間を延ばすmaxAgeはREST APIの/crawlにあり、MCPツールからは指定できません。

クロールが遅い

クロール先のサイトがrobots.txtでcrawl-delayを指定していれば、クローラーはそれに従います。指定がなければ、同じドメインへのリクエストの間隔は既定で0.5秒です。同じドメインを対象に複数のクロールジョブを走らせると、このドメイン単位のレート制限を共有します。

JSON抽出の結果がぶれる

get_url_jsonで抽出するのはWorkers AI上のLlama 3.3 70Bです。フィールド名と型をJSON Schemaで固定し、通貨や税込・税別の扱いはプロンプトに書くと、ページごとの解釈の揺れを抑えられます。

ログインが必要なページが取れない

ツール一覧に入力・クリック系が無いのが原因です。前節のとおりBrowser Sessions側の仕事になります。公式リポジトリは「開発途上で、今後もツールを追加する」としているので、一覧は更新されます。

まとめ

分かれ目は、ログイン状態を保つ必要があるかどうかです。必要なら最初からBrowser Sessions側で組み、不要ならこのMCPサーバーで始めて、Freeの上限に当たってから有料化を考えても遅くありません。サイト全体のクロールや検索結果からの情報収集が中心なら、Firecrawl MCPのような特化サーバーも選択肢です。

MCPサーバーの追加方法の基礎はClaude Code MCP設定ガイド、リモートMCPのOAuth認証の仕組みはリモートMCPのOAuth認証にあります。外部ツールへの権限付与はMCPセキュリティガイドも参照してください。

この記事を共有:XはてブLinkedIn