
2026/02/17 2:08
**WebMCP提案書**
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
WebMCP は、ウェブページが「ツール」―自然言語で説明された関数、JSON スキーマ、および実行コールバックを備えたもの ― を公開できる新しい JavaScript API です。これにより、エージェントやブラウザアシスタント、支援技術がブラウザ内で直接それらを呼び出すことが可能になります。
API は Model Context Protocol (MCP) を基盤としています。読み取り専用の
modelContext プロパティが Navigator インターフェースに追加されます (partial interface Navigator { readonly attribute ModelContext modelContext; })。
ModelContext メソッド:
– ツールのリストを登録し、既存のものはすべてクリアします。provideContext(options)
– 登録済みのすべてのツールを解除します。clearContext()
– 単一のツールを追加します(名前が既に存在する場合や入力スキーマが無効な場合は例外を投げます)。registerTool(tool)
– 指定されたツールを削除します。unregisterTool(name)
ModelContextTool には次の要素が必須です:
(一意識別子)name
(その機能に関する自然言語での説明)description
(期待される入力パラメータの JSON スキーマ)inputSchema
– 非同期である可能性があり、execute(object input, ModelContextClient client)
を介してユーザーへのインタラクションを要求できるコールバック。client.requestUserInteraction(callback)
オプションの
annotations.readOnlyHint は、そのツールが読み取り専用かどうかを示します。
この API は、Walderman, Lee, Nolan, Bokan, Sagar, Van Opstal, Rajasankar らによる先行研究に基づき、Nahas, McGhee、および Web Machine Learning Community Group のメンバーからのフィードバックを受けて洗練されました。
目的: 開発者が協働ワークフローを作成できるようにし、ユーザーと AI エージェントがコンテキストを共有してブラウザ内で直接ウェブ機能を制御できるようにすること。 これにより、別途サーバー側のコンポーネントを必要とせずに実現します。
本文
1. はじめに
WebMCP API は、ウェブ開発者が自らのウェブアプリケーション機能を「ツール」として公開できる新しい JavaScript インターフェースです。ツールとは、自然言語で説明された JavaScript 関数であり、構造化されたスキーマを備えているため、エージェントやブラウザのエージェント、支援技術から呼び出すことができます。WebMCP を利用するウェブページは、クライアント側スクリプトにツールを実装した「Model Context Protocol (MCP) サーバ」と考えることができ、バックエンドではなくフロントエンドで機能を提供します。WebMCP により、ユーザーとエージェントが同一のウェブインターフェース内で協働作業を行い、既存のアプリケーションロジックを活用しつつ共有コンテキストとユーザーコントロールを維持できるワークフローが実現します。
2. 用語集
- Agent(エージェント) – ユーザーの目標を理解し、ユーザーに代わって行動して達成する自律的なアシスタント。現在では、大規模言語モデル(LLM)ベースの AI プラットフォームが主流で、テキストチャットインターフェース経由でユーザーと対話します。
- Browser’s agent(ブラウザエージェント) – ブラウザ自体に組み込まれるか、拡張機能やプラグインを通じて提供されるエージェント。
- AI platform(AI プラットフォーム) – OpenAI の ChatGPT、Anthropic の Claude、Google の Gemini など、エージェンシックアシスタントを提供するサービスプロバイダー。
3. セキュリティとプライバシーに関する考慮点
(本文は省略)
4. アクセスビリティに関する考慮点
(本文は省略)
5. API
5.1 Navigator インターフェースへの拡張
partial interface Navigator { [SecureContext, SameObject] readonly attribute ModelContext modelContext; };
5.2 ModelContext インターフェース
ModelContext は、ウェブアプリケーションがエージェントに呼び出されるツールを登録・管理するためのメソッドを提供します。
[Exposed=Window, SecureContext] interface ModelContext { undefined provideContext(optional ModelContextOptions options = {}); undefined clearContext(); undefined registerTool(ModelContextTool tool); undefined unregisterTool(DOMString name); };
使用例
navigator.modelContext.provideContext(options); // ブラウザにツール(コンテキスト)を登録する。 navigator.modelContext.clearContext(); // ブラウザから全てのツール(コンテキスト)を解除する。 navigator.modelContext.registerTool(tool); // 既存セットをクリアせずに単一ツールを追加する。 navigator.modelContext.unregisterTool(name); // 指定した名前のツールを登録済みセットから削除する。
メソッド詳細
-
provideContext(options) –
TODO: 詳細を記述してください。 -
clearContext() –
TODO: 詳細を記述してください。 -
registerTool(tool) –
TODO: 詳細を記述してください。 -
unregisterTool(name) –
TODO: 詳細を記述してください。
5.2.1 ModelContextOptions 辞書
dictionary ModelContextOptions { sequence<ModelContextTool> tools = []; };
options["tools"] は、ブラウザに登録するツールのリストです。リスト内の各ツール名は一意である必要があります。
5.2.2 ModelContextTool 辞書
エージェントが呼び出すことのできるツールを記述します。
dictionary ModelContextTool { required DOMString name; required DOMString description; object inputSchema; required ToolExecuteCallback execute; ToolAnnotations annotations; };
- name – ツールの一意識別子。
- description – ツール機能を自然言語で説明した文字列。
- inputSchema – ツールに期待される入力パラメータを記述する JSON Schema オブジェクト。
- execute – エージェントがツールを呼び出す際に実行されるコールバック。
とinput
を受け取り、非同期で Promise を返すことも可能です。ModelContextClient - annotations – ツールの振る舞いに関する任意のメタデータ。
ToolAnnotations 辞書
dictionary ToolAnnotations { boolean readOnlyHint; };
annotations["readOnlyHint"] が true の場合、ツールは状態を変更せず読み取りのみであることを示します。このヒントはエージェントが安全に呼び出すタイミングを判断する際に役立ちます。
5.2.3 ModelContextClient インターフェース
サイト側が提供するツールを実行しているエージェントを表します。
[Exposed=Window, SecureContext] interface ModelContextClient { Promise<any> requestUserInteraction(UserInteractionCallback callback); }; callback UserInteractionCallback = Promise<any>();
- requestUserInteraction(callback) – ツール実行中にユーザー入力を非同期で要求します。コールバックは対話(例:確認ダイアログ)を実装し、Promise が結果で解決されます。
メソッド詳細
client.requestUserInteraction(callback) –TODO: 詳細を記述してください。
6. 謝辞
以下の方々に感謝します:
- Brandon Walderman, Leo Lee, Andrew Nolan, David Bokan, Khushal Sagar, Hannah Van Opstal, Sushanth Rajasankar – 初期説明書、提案、および議論を通じて本仕様の基盤を確立した方々。
- Alex Nahas と Jason McGhee – 早期実装経験を共有してくださった方々。
- Web Machine Learning Community Group の参加者 – フィードバックと提案をいただいた皆様。