プロダクト発表・小互の解説

Cloudflare が WebMCP を発表:ダッシュボードでスイッチをオンにするだけで、あなたのサイトを AI が直接操作できるようになります

オリジンのコードは一行も変更不要。Cloudflare がエッジで全 HTML に一行のスクリプトを挿入します。ただし、今日の Chrome 安定版はこのインターフェースをまだ認識できません。当サイトで実測した結果をお見せします。
1分でわかる要点
  • Cloudflare のダッシュボードにスイッチが追加されました。オンにすると、AIエージェントがあなたのウェブページを開いたとき、スクリーンショットを撮ってボタンを推測する必要がなくなり、関数を呼び出すように直接タスクを完了できます。
  • オリジンのコードは一行も変更不要。再デプロイも不要です。スクリプトは、ページが送信される途中に挿入されます。
  • ただし、今日このスイッチをオンにしても、ほとんどの訪問者側では何も起こりません。最新版の Chrome で実際にテストしてみました。結果は第8章にあります。
⚑ これは Cloudflare 自身が発表したプロダクトプレビューであり、機能説明とサンプルデータはベンダー提供によるものです。本文中「当サイト実測」と記載した部分は、私が自身のローカル Chrome で検証したもので、ベンダーとは関係ありません。
発表

スイッチをオンにするだけで、サイトが AI に直接操作されるように

Cloudflare は昨日、WebMCP の開発者プレビュー版を公開しました。ダッシュボードでスイッチをオンにすると、あなたのサイトに「AI 向けのボタン」セットが追加されます。AIエージェントがあなたのページを開いたとき、スクリーンショットを撮ったり、ボタンの場所を推測したり、手探りで操作したりする必要がなくなり、関数を呼び出すようにタスクを完了できます。

サイト運営者にとって、この機能の実際の価値はコストがほぼゼロであることです。オリジンのコードは一行も変更不要。再デプロイも不要で、訪問者のブラウザが対応していなければ、静かにスキップされ、ページはこれまで通り表示されます。

新しい点:WebMCP という標準規格自体は数ヶ月前から存在していましたが、これまでは「サイト側が自らコードを書いて対応する」必要がありました。どのツールを公開するか設計し、自社のインターフェースに組み込み、標準仕様の変更に合わせて維持・更新していく必要がありました。Cloudflare はこの工程を代行してくれるのです。

背景

AI が今ウェブを使う方法は、コンテンツのクロールとスクリーンショットによるボタン推測

ウェブページというものは、そもそも「画面の向こうに人間がいる」ことを前提に設計されています。人間は文字を読み、ボタンをクリックし、フォームに入力します。

今や訪問者の多くは AIエージェントです。彼らは、人間向けに作られたこれらのページをどう使うのでしょうか? 現状は主に2つの方法しかなく、どちらもあまり良い方法とは言えません。

1つ目はクロールです。 エージェントがページ全体を自社のサーバーにコピーして解析します。この方法はサイト運営者にとって最もつらい方法です。コンテンツは持ち去られるのに、トラフィックは残らず、クレジット表記もありません。

一般的な方法はクローラーで、コンテンツをサーバーにコピーすることです。そして多くの場合、元のサイトにはトラフィックもクレジットもほとんど残りません。もっと良い方法があります。それはクロールを必要としない方法です。

Cloudflare ブログ · Give any website a WebMCP interface

2つ目はスクリーンショット → 分析 → クリックです。 エージェントは人間のように画面を見ます。スクリーンショットを撮り、モデルにそれがどんな画面で検索ボックスがどこにあるかを分析させ、クリックし、またスクリーンショットを撮り、また分析する。遅く、壊れやすく、そして消費するトークンの大半は「道を見つける」ことに使われ、「タスクを実行する」ことにはほとんど使われません。ページがリニューアルされると、この一連の流れ全体が使えなくなります。

WebMCP が目指すのは3つ目の道です。ウェブサイトがエージェントに「私には直接呼び出せるツールがこれだけあります」と自ら伝えることです。例えば「フライトを検索」「航空券を予約」といった具合に、各パラメータの型も明確に記載されています。エージェントは推測する必要がなく、直接呼び出せます。

方法1 · コンテンツをクロール あなたのページ 全体をコピー AI のサーバー 代償:トラフィックもクレジットも残らない 方法2 · スクリーンショットで推測 撮影 モデルが分析 クリック また撮影して、最初から 代償:遅い、リニューアルで無効に トークンが道探しに消える 方法3 · ツールを直接呼ぶ(WebMCP) あなたのページがツールを公開 商品検索 カートに入れる 注文確認 会計 指示に従い呼ぶ AIエージェント 1回の呼び出しで完了、 トークンは実行に使われる
3つの方法のコスト比較。最初の2つが現在の現実、3つ目が WebMCP が置き換えようとしている方法です。当サイトが原文のメカニズム記述に基づき作成しました。
同じ問題への別の答え。当サイトで解説済み
Cloudflare が自動課金ゲートウェイを発表:AI があなたのウェブページや API をクロールする際に、自動で料金を支払わせることが可能に
あちらの記事の考え方は「クロールを防げないなら、料金を払わせよう」、こちらの記事の考え方は「そもそもクロールする必要がない」。同じ課題に対する2つの方向性です。
標準仕様

WebMCP はサイトが実行可能なタスクをツールとして公開し、AI がそれに従って呼び出す

まず、その立ち位置を明確にしましょう。WebMCP はブラウザ標準の提案であり、W3C のコミュニティグループで検討中で、まだ正式な標準にはなっていません。Chrome 側のステータスも本日時点では「Proposed」(提案中)とされています。

これはウェブページ内では document.modelContext というインターフェースとして実装されます。ウェブサイトはこのインターフェースにツールを登録し、ブラウザ内のエージェントがそれを参照・呼び出せるようにします。

ツールの登録方法は2通りあり、ハードルはかなり異なります。

1つは JavaScript を書く方法で、registerTool() を呼び出し、ツールの名前、説明、パラメータ構造、実行ロジックを明確に記述します。複雑なインタラクションはこの方法でしか実現できません。

もう1つはもっと簡単で、既存の HTML フォームにいくつか属性を追加するだけです。 予約フォームに toolname(このツールの名前)、tooldescription(何をするツールか)を追加し、各入力欄に toolparamdescription(この欄に何を入力するか)を追加するだけで、ブラウザが自動的にそれをエージェントが呼び出せるツールに変換し、パラメータの説明書まで自動生成してくれます。

元からある予約フォーム テーブルを予約 日付 人数 電話番号 属性を3つ追加 toolname="book_table" tooldescription="テーブルを予約" toolparamdescription="…" ブラウザが自動変換 エージェントが見るツール book_table テーブルを予約 パラメータ仕様書(自動生成) date : string · 必須 party : number · 必須 phone : string ドロップダウンは選択肢リストに、 チェックボックスははい/いいえに自動変換
宣言的記述:フォームはそのままに、3つの属性を追加するだけでツールになります。右側のパラメータ型変換ルールは Google 公式リポジトリの実装に基づくもので、ドロップダウンは選択肢リストに、数値入力欄は数値に、チェックボックスははい/いいえに変換され、必須マークは必須リストに入ります。図は当サイト作成。
実際の使い方

ツールはページに応じて変化、支払い前は人の確認を待つ

インターフェース定義を見ただけでは、実際の使用感はわかりません。Cloudflare のリモートブラウザドキュメントには、Google 公式のホテル予約デモを使った実践記録が掲載されており、2つの点が予想外でした。

1つ目は、ツールが固定されていないことです。 ページを開いた直後は3つだけです。「ホテル詳細を見る」「場所で検索」「設備・ポリシーを調べる」。次に「場所で検索」で「Paris」を検索すると、ページは検索結果に移動し、その時点で初めて「検索結果を絞り込む」という新しいツールが追加されます。ツールはページの状態に応じて変化します。

2つ目は、機密性の高い操作ではエージェントが停止することです。 「予約を完了する」というツールを呼び出しても、すぐには成立しません。ブラウザで「予約を確定」というボタンをクリックするまで、そこで停止します。これは標準に組み込まれた人間による確認メカニズムです。

ページ状態:ホテルホームページ

エージェントがページを開き、まず「ここにはどんなツールがありますか」と尋ねる

3つ返ってきました。絞り込み? そのツールはありません。ページに絞り込む対象がまだないからです。

view_hotel ホテル詳細を見る search_location 場所で検索 lookup_amenity 設備・ポリシーを調べる
ページ状態:検索結果ページ

エージェントが search_location を呼び出し、パラメータに「Paris」を入力

ページは検索結果に移動しました。もう一度ツールリストを尋ねると、1つ増えています。このツールはさっきまで存在しませんでした。

view_hotel ホテル詳細を見る search_location 場所で検索 lookup_amenity 設備・ポリシーを調べる + filter_search_results 結果を絞り込む
ページ状態:絞り込み後の結果ページ

エージェントが filter_search_results を呼び出し、パラメータに「朝食付き」を入力

絞り込まれたホテルリストが返ってきました。1つ選び、start_booking を呼び出して予約を開始します。

filter_search_results 結果を絞り込む + start_booking 予約を開始
ページ状態:予約確認ページ

エージェントが complete_booking を呼び出し、名前とメールアドレスを入力、そして停止

このステップは自動では完了しません。ツールはそこで待機し、誰かがブラウザで「予約を確定」ボタンをクリックして初めて、予約が成立します。

complete_booking · 人の確認待ち
上の4ステップをクリックすると、ツールリストの変化がわかります。フローとツール名は Cloudflare Browser Run 公式ドキュメントの実践記録からの引用です。
メカニズム

Cloudflare の方法:ページ送信の途中にスクリプトを1行挿入

標準仕様の説明は以上です。Cloudflare の今回の対応に戻りましょう。その実装は2つの部分に分かれており、どちらもオリジンサーバーの前段で行われ、あなたのコードは一字も変更する必要がありません。静的サイトでも SPA でも、効果は同じです。

パート1:エッジでスクリプトを1行挿入

ダッシュボードでスイッチをオンにすると、Cloudflare のサーバーから訪問者に送信される前に、あなたのすべての HTML ページに次の1行が追加されます。

Cloudflare が自動注入する1行
<script type="module"
        src="/.webmcp/bridge.js"
        data-packs="c2pa,mcp-server-client"
        data-mcp-url="/mcp"></script>
data-packs は有効にする機能パック、data-mcp-url はあなた自身の MCP サーバーを指します(デフォルトでは同じドメインの /mcp)。このスクリプト自体も Cloudflare が配信し、あなたのサイトと同じドメインなので、ページの他の部分は何も変わりません。

この作業を行うツールは HTMLRewriter と呼ばれ、Cloudflare がページ送信の途中で HTML を書き換えるものです。オリジンサーバーはそのことを知る由もなく、連携も不要です。

パート2:橋渡し役の bridge.js

これはページ内で実行され、最初にブラウザに WebMCP インターフェースがあるかどうかを確認します。なければそのまま戻り、何もしません。ページはこれまで通りです。あれば、data-packs に列挙されたパックを1つのツールリストにまとめ、一つずつ登録していきます。

あなたのオリジン コード変更なし Cloudflare HTMLRewriter がここで HTML に script を1行挿入 訪問者のブラウザ bridge.js が実行開始 このブラウザに WebMCP はある? ない 何もせずに戻る ページは今まで通り ← 今日のほとんどの訪問者はこちら ある パックをツールリストに統合 エージェントに順次登録
全体の流れ。左半分は Cloudflare が代行、右半分は bridge が訪問者のブラウザで実行。「インターフェースがなければ静かに戻る」という設計こそ、ワンクリックで有効化でき、恐れずに使える理由です。当サイトが原文のメカニズム記述に基づき作成しました。
ツールパック

標準で2つの機能パック:画像の出所確認と、自前 MCP サーバーの呼び出し

ツールは「パック」単位で提供されます。関連するツール群が1つにまとめられ、一緒にオン・オフされます。プレビュー版では2つのパックが提供されており、どちらも完全に訪問者のブラウザ内で動作し、Cloudflare のサーバーを経由しません。今後新しいパックが追加された場合、サイトはダッシュボードでチェックを入れるだけで利用でき、再デプロイは不要です。

パック1:ページ上の画像の作成者を確認

このパックは、画像内の C2PA 情報を読み取ります。これは画像に「出自証明書」を記録するための業界標準で、この画像が誰に生成されたか、AI によるものか、その後誰が編集したかが、画像ファイルの先頭部分のメタデータに記録されています。

例えるなら

カメラフィルムの端にある小さな文字のようなもので、この写真がどのカメラで撮影されたかが記録されています。ただし、今は「この画像は Adobe Firefly が生成し、Adobe 社が署名した」ということが記録されています。

このパックには2つのツールがあります。scan_images_c2pa はページ全体の画像をスキャンし、要約を返します。Cloudflare が示したサンプル出力は、ページ全体で12枚の画像をすべてスキャンし、うち8枚に C2PA 情報が含まれているというものです。各画像の出所がリスト表示され、例えば hero.jpg の生成元は Adobe Firefly、署名者は Adobe Inc. といった具合です。もう1つの inspect_image_c2pa は単一の画像を深く調査し、完全なアーカイブ(編集履歴、主張された作者、署名証明書)を解読します。

技術的には、これは純粋な TypeScript 製のリーダーで、画像先頭の数 KB のメタデータのみを参照し、画像全体をダウンロードしません。

この点は評価できる

これは読み取りのみで、署名検証は行いません。各結果には必ず signatureVerified: false が含まれており、エージェントに対して「これは私が画像から読み取った主張であり、暗号学的な検証は行っていません」と明確に伝えます。これにより、エージェントは「画像が自称していること」と「検証済みの事実」を混同しません。

パック2:自前の MCP サーバーをページに組み込む

あなたのサイトに既に MCP サーバーがある場合(ここ1、2年で多くの企業が構築済みです)、このパックはまず /mcp に「どんなツールがありますか」と問い合わせ、リストを取得した後、既存の各ツールをそのままプロキシとしてページに登録します。名前、説明、パラメータ仕様書もそのまま引き継がれます。

これが2つのパックの違いです。画像確認パックのツールは事前にハードコードで定義されていますが、このパックのツールは問い合わせて初めて判明します。

bridge があなたのツールをエージェントが呼び出せる形にする処理
document.modelContext.registerTool({
  name: tool.name,                 // 例: "search_products"
  description: tool.description,
  inputSchema: tool.inputSchema,   // パラメータ仕様書をそのまま使用
  execute: async (args) => {
    const res = await fetch(mcpUrl, {   // 同一ドメインの /mcp
      method: "POST",
      credentials: "same-origin",       // ← 訪問者の現在のログイン状態を使用
      headers: { "content-type": "application/json" },
      body: JSON.stringify({
        jsonrpc: "2.0", id: 1, method: "tools/call",
        params: { name: tool.name, arguments: args },
      }),
    });
    const { result } = await res.json();
    return result;   // 結果をそのまま返す
  },
});
credentials: "same-origin" の行に注目してください。エージェントがこのツールを呼び出すとき、訪問者本人の現在のログイン状態が使用されます。ユーザーがログイン済みなら、エージェントが注文を確認するために再ログインは不要です。一方で、ページ内のエージェントが取得できるのは、このユーザー本人の権限のみであることも意味します。
ページ内のエージェント 「商品検索」を呼ぶ ログイン状態付き 同一ドメインの /mcp 自分のサーバー MCP サーバーが処理 結果をそのままページへ Cloudflare のサーバーは経由せず、リクエストは訪問者のブラウザから直接あなたのサイトへ送信されます
プロキシの流れ。Cloudflare は橋を架けるだけで、実際の処理はあなた自身の MCP サーバーが行います。当サイトが原文のコードに基づき作成しました。

エージェントにとって、これらはすべてごく普通の MCP ツールです。Cloudflare は MCP プロトコル自身のデータ型を使用しているため、通常 MCP サーバーと連携するエージェントは、何も追加せずにウェブページを操作できます。

そして、今後の方向性を示す一文もあります。bridge のコードは Cloudflare エッジ上の Worker が配信しており、これは将来のために余白を残しています。将来的には、この Worker がページ単体ではできない処理(Workers AI を使ったサイトマップ全体の要約や、AI Search インデックスの参照など)を実行できるようになるでしょう。

始め方

このスイッチはどこでオンにし、どう確認するか

ダッシュボードのパス:Cloudflare Dashboard → Agent Readiness → Labs(Beta マーク付き)。この Labs ページの自己紹介は「実験的で、自分で有効化する機能。あなたのサイトと AIエージェントの連携をより良くする」というものです。

Cloudflare Dashboard の Agent Readiness 配下、Labs ページの WebMCP スイッチと2つのツールパックのチェックボックス
ダッシュボードの実際の表示:上部にメインスイッチ、下部に2つの機能パックのチェックボックスがあり、デフォルトで両方オンになっています。どちらもオフにするとデフォルトセットと同じ動作になります。画像は Cloudflare ブログより。

実際に有効になったことを確認するには、1つのコマンドで、あなたのサイトの任意のページを取得し、その挿入行があるかどうかを確認します。

確認
curl -s https://your-site.example | grep webmcp

ツールが実際に呼び出せることを確認したい場合、自分でエージェントを作る必要はありません。Browser Run(Cloudflare のクラウド上のリモートブラウザ)をあなたの URL に向けるだけで、訪問者のエージェントと同様に、ツールを発見し、呼び出してみることができます。ただし、前提条件があります。WebMCP は現在 Chrome のテスト版でのみ利用可能なため、専用の実験セッションを開始する必要があります。

Browser Run とは何か、当サイトで解説済み
Cloudflare がブラウザ Kitesurf を発表:AIエージェント専用、CPU とメモリ使用量を3〜7倍削減
Browser Run は Cloudflare の AIエージェント向けリモートブラウザサービスで、Kitesurf は本日その中で公開ベータが開始された新しいブラウザです。
当サイト実測

実測:今日の最新版 Chrome は WebMCP をサポートしていません

有効化はできましたが、訪問者側は現在実際に認識できるのでしょうか? この点についての説明は更新が必要です。

Cloudflare のブログには WebMCP が「Chrome 146 で実験的にリリースされている」と書かれています。この表現はすでに古くなっています。Chrome 公式ドキュメントによると、WebMCP の公開試用期(origin trial)はChrome 149 から開始され、サイトが Google に登録すれば、実際のユーザーに対してこの機能を有効化できます。自分の PC でスイッチを切り替えて試すだけではなくなります。そして今日、Chrome 安定版はすでに 151 です。

では、実際に使えるのでしょうか? 私はローカル環境でテストしました。テストページには Chrome が要求する隔離レスポンスヘッダーが含まれており、インターフェースが利用可能な前提条件を満たしています。

デフォルトの Chrome 151
インターフェースは存在しない
document.modelContextnavigator.modelContext も読み取れない
chrome://flags の「Experimental Web Platform Features」をオンにした後
インターフェースが出現
両方とも存在し、ツールを正常に登録できる
これが意味すること

今日このスイッチをオンにすると、Cloudflare は確かにあなたのページにそのスクリプトを注入します。しかし、ほとんどの訪問者のブラウザにはこのインターフェースが存在せず、bridge はそれを見つけられず、設計通りに何もせずに戻り、ページはこれまで通り表示されます。実際にツールを利用できるのは、自分で実験スイッチをオンにしたブラウザと、Chrome テスト版を実行しているクラウド上のリモートブラウザだけです。

これはこの機能が役に立たないという意味ではありません。「開発者プレビュー」とはそもそもそういうものです。現在の価値は「ゼロコストでサイトを先に準備しておける」ということであり、「今日オンにすれば明日にはエージェントが来る」ということではありません。Chrome がこの機能のために登録している目標リリースバージョンは 157 で、ステータスは依然として「提案中」です。

151
今日の Chrome 安定版。デフォルトではインターフェースは存在しない
149
Chrome 公式ドキュメント記載の公開試用期開始バージョン
157
Chrome がこの機能のために登録している目標リリースバージョン。未確定

ちなみに、Cloudflare 自身も確認しました。同社のブログ、公式サイト、Radar の3つのサイトは、現在この機能を有効化していません。Radar の自前 WebMCP ツールもまだリリースされておらず、発表時点では「もうすぐ」とされていました。

制限

Chrome 公式が挙げる3つの制限:ページが開いていなければ呼び出せない

標準仕様自体にも、いくつかのハードな制限があります。Chrome 公式ドキュメントの「制限」セクションに記載されています。これはこの標準を作っている人々自身が挙げたものであり、どのサードパーティの評論よりも重みがあります。

開いているページが必要

ツールの呼び出しはページの JavaScript 内で実行されるため、インターフェースを提供する開いたタブが必要です。バックグラウンドのみで、ウィンドウを開かないエージェントが静かに WebMCP ツールを呼び出すことはできません。

複雑なサイトは改修コストがかかる

サイトが複雑になるほど、ページの状態を処理するためにリファクタリングや大量の JavaScript の追加が必要になる可能性があります。この点は Cloudflare のワンクリックスイッチには完全には当てはまりません。スイッチが提供するのは汎用ツールパックだからです。しかし、本当に自社のビジネス機能を公開したい場合は、やはり MCP サーバーは避けられません。

ツールが発見されにくい

エージェントは、あなたのサイトにアクセスして初めて、呼び出し可能なツールがあるかどうかを知ります。どのサイトが準備済みかを事前に知らせる全網羅のディレクトリは存在しません。

さらに2つのセキュリティ上の制約があります。WebMCP はソース分離されたページでのみ利用可能です(サイトがこの分離を無効にすると、インターフェースは即座に無効になります)。ツールの登録にはパーミッションポリシーも関わり、デフォルトではトップレベルのページと同一オリジンのページのみが登録を許可され、クロスオリジンの iframe はデフォルトで禁止されています。ツールの登録を許可する場合は、個別に許可する必要があります。

冒頭の質問に戻りましょう。このスイッチは今オンにする価値があるでしょうか? オンにするコストはゼロです。クリックするだけで、オリジンは変更されず、ブラウザが対応していなければ静かにスキップされます。したがって、考えるべきは別の質問です。オンにした後、その2つの汎用パック以外に、接続できる自前の MCP サーバーを持っていますか? エージェントが本当にユーザーに代わってあなたのサイトでタスクを完了できるようにするのは、そのパックです。画像証明書スキャナーはおまけです。

🧰 はじめに · Cloudflare WebMCP(開発者プレビュー)
難易度ドメインを Cloudflare でホスティングし、ダッシュボードでスイッチをオンにするだけ。エージェントに自社の業務機能を呼び出させるには、同一ドメインの /mcp を持つ MCP サーバーが必要
出典
Give any website a WebMCP interfaceCloudflare·blog.cloudflare.com·2026-08-06
当サイト注記
ダッシュボードのスクリーンショットは Cloudflare ブログから。その他の図は当サイトが原文のメカニズム記述とコードに基づき作成しました。第8章の Chrome 実測は、当サイトが 2026-08-07 に macOS + Chrome 151.0.7922.108 で実施し、テストページのレスポンスヘッダーには Origin-Agent-Cluster: ?1 を含みます。ホテル予約フローとツール名は Browser Run 公式ドキュメントから。宣言的フォームのパラメータ変換ルール、Chrome バージョンの記述、および3つの制限は Chrome 公式ドキュメントと Google 公式リポジトリのソースコードに基づくもので、これらは Cloudflare のブログには記載されていません。