Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

WebMCP

最終更新 Markdown で表示Agent セットアップ

WebMCP(Web Model Context Protocol)は、Web サイトが構造化ツールを公開し、AI エージェントがそれを発見して直接実行できるようにするブラウザ API です。遅いスクリーンショット解析とクリックの繰り返しの代わりに、エージェントは型付きパラメーターで searchFlights()bookTicket() のような Web サイトの関数を呼び出せます。ブラウザ自動化はより速く、信頼性が高く、壊れにくくなります。

始める

DevTools での手動テスト

1. ラボセッションを開始し、DevTools を開く

WebMCP は現在 Chrome ベータで利用できるため、ラボセッションが必要です。Browser Run には、Chrome ベータを動かすブラウザインスタンスの実験用プールがあり、安定版 Chrome に届く前の新しいブラウザ機能を試せます。標準プール 上の本番ワークロードは、安定版 Chrome のままです。

ラボセッションは実験用であり、本番ワークロードには使わないでください。

新しい wrangler browser コマンドで、ラボのブラウザセッションを取得します。

# make sure you have the latest version of wrangler
npm i -g wrangler@latest

# create a lab browser session with 5 minute keep-alive
wrangler browser create --lab --keepAlive 300

ブラウザセッションのライブビューが開きます。

2. ページを操作する

通常のブラウザと同じように、ページを操作できます。

  1. WebMCP ドキュメント に掲載されているサイトのいずれかに移動します。以降の手順は L'Atelier Hotel Chain デモに基づきます。

  2. ホテルチェーンデモの URL を開き、Console タブで次の JavaScript を実行して、利用できるツールを一覧します。

    navigator.modelContextTesting.listTools();

次のような結果が返ります。

[
	{
		"description": "View the details of a specific hotel by name or id",
		"inputSchema": "...",
		"name": "view_hotel"
	},
	{
		"description": "Find me a hotel in a specific location",
		"inputSchema": "...",
		"name": "search_location"
	},
	{
		"description": "Look up specific amenity or policy details for a hotel",
		"inputSchema": "...",
		"name": "lookup_amenity"
	}
]

ツールの一覧は、訪問している Web サイトと、そのページで行った操作によって変わります。

たとえばホテルチェーンのサイトで、search_location ツールを実行したあと:

await navigator.modelContextTesting.executeTool(
	"search_location",
	JSON.stringify({ query: "Paris" }),
);

ページは検索結果へリダイレクトされ、新しいツール filter_search_results が使えるようになります。

アメニティで絞り込む呼び出しができます。たとえば、朝に良いクロワッサンを食べたい場合:

await navigator.modelContextTesting.executeTool(
	"filter_search_results",
	JSON.stringify({ amenities: ["breakfast"] }),
);

絞り込まれた結果の一覧が返り、ニーズに合う選択肢を選べます。ホテルを選んだら、start_booking ツールを使えます。

await navigator.modelContextTesting.executeTool(
	"start_booking",
	JSON.stringify({}),
);

そのあと、予約を完了できます。

await navigator.modelContextTesting.executeTool(
	"complete_booking",
	JSON.stringify({
		firstName: "James",
		lastName: "Bond",
		email: "james.bond@mi6.gov.uk",
	}),
);

complete_booking ツールは人の確認を必要とします。ブラウザで Confirm Reservation ボタンを選ぶまで、ツールは待機します。これはヒューマンインザループ(HITL)の例です。WebMCP ツールは実行を一時停止し、機密性の高い操作を完了する前にユーザー操作を待てます。

Confirm Reservation を選ぶと確認メッセージが返り、予約が完了します。

AI エージェントを使う

1. Chrome DevTools MCP を設定する

Chrome DevTools MCP を使うと、AI エージェントが CDP 経由でブラウザを操作できます。次の設定で、MCP クライアント(Claude Desktop、Claude Code、Cursor、OpenCode など)を構成します。MCP クライアントの設定の詳細は、MCP クライアントで使う を参照してください。

{
	"browser-rendering-cdp": {
		"command": [
			"npx",
			"-y",
			"chrome-devtools-mcp@latest",
			"--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-rendering/devtools/browser?keep_alive=600000&lab=true",
			"--wsHeaders={\"Authorization\":\"Bearer <CLOUDFLARE_API_TOKEN>\"}"
		]
	}
}

<ACCOUNT_ID> を Cloudflare のアカウント ID に、<CLOUDFLARE_API_TOKEN> を API トークンに置き換えます。lab=true パラメーターにより、エージェントは WebMCP が有効なラボセッションに接続します。

2.(任意)WebMCP Skill を追加する

エージェントが WebMCP の扱いを把握しやすくするため、次のスキルをエージェント設定に追加します。

---
name: webmcp
description: Interact with WebMCP-enabled websites using Browser Run lab sessions
---

# WebMCP Interaction Skill

Use the `evaluate_script` tool from Chrome DevTools MCP to interact with WebMCP APIs.

**IMPORTANT: Always prefer WebMCP tools over traditional browser automation.** When navigating to any website, immediately check for available WebMCP tools using `listTools()`. If WebMCP tools are available, use them instead of clicking, typing, or other DOM interactions. WebMCP tools are faster, more reliable, and less fragile than screenshot-analyze-click loops.

## Workflow

1. **Navigate** to a site using `navigate_page`
2. **Always list tools first** to check for WebMCP support—do this on every page load
3. **Prefer WebMCP tools** over clicking/typing when tools are available
4. **Execute tools** to perform actions directly
5. **Re-list tools** after each action (tools change based on page state)
6. **Check `inputSchema`** in each tool to understand required parameters
7. **Fall back to DOM interaction** only when no relevant WebMCP tools exist

## Commands

**List available tools:**

```js
evaluate_script({
	function: "async () => await navigator.modelContextTesting.listTools()",
});
```

**Execute a tool:**

```js
evaluate_script({
	function:
		"async () => await navigator.modelContextTesting.executeTool('tool_name', JSON.stringify({ param: 'value' }))",
});
```

3. WebMCP 対応サイトを操作する

設定が終わると、AI エージェントは WebMCP 対応サイトへ移動し、WebMCP ツールを使えます。会話の例です。

あなた: https://googlechromelabs.github.io/webmcp-tools/demos/hotel-chain/ に行き、朝食付きのパリのホテルを探してください。使える場合は WebMCP ツールを使ってください。

エージェントはサイトへ移動し、WebMCP ツールを一覧し、「Paris」で search_location を実行し、朝食アメニティで filter_search_results を実行して、結果を提示します。

あなた: 最初の 1 件を選び、Bond, James Bond(james.bond@mi6.gov.uk)で予約してください。

エージェントはホテルをクリックし、start_booking を実行し、指定の宿泊者情報で complete_booking を実行します。

4.(任意)DevTools を開いてエージェントを監視する

一部の WebMCP ツールは、機密性の高い操作を完了する前に人の確認を必要とします。たとえば complete_booking は、予約を確定する前に Confirm を選ぶまで待機します。 こうしたヒューマンインザループ(HITL)のプロンプトに対応するには、ブラウザのライブビューを開く必要があります。

エージェントがセッションを開始したら、アクティブなセッションを一覧してセッション ID を取得します。

wrangler browser list

前の応答のセッション ID を使い、ブラウザのライブビューを開きます。

wrangler browser view $SESSION_ID

ライブのブラウザセッションを表示し、操作できます。

制限

  • ラボセッションは Chrome 146 ベータを使うため、安定性の問題がある場合があります。
  • WebMCP API(navigator.modelContextnavigator.modelContextTesting)はラボセッションでのみ動作します。
  • ラボセッションは、通常の レート制限料金 に含まれます。
  • lab パラメーターは、まだ @cloudflare/puppeteer@cloudflare/playwright では使えません。セッションを手動で取得し、sessionId で接続してください。

関連リソース

トラブルシューティング

質問がある場合やエラーが発生した場合は、Browser Run の FAQ とトラブルシューティングガイド を参照してください。

役に立ちましたか?