公開日: 2026 年 6 月 9 日
Web Model Context Protocol(WebMCP)を使用すると、拡張機能を利用したエージェントなど、ブラウザ内で実行されている AI エージェントに構造化ツールを構築して公開できます。エージェントは、大規模言語モデル(LLM)、ルール、メモリ、ツールを使用して、ユーザーに代わってアクションを実行します。
LLM はすべてのテキスト、指示、ユーザーデータを単一のトークン シーケンスとして扱うため、攻撃者による悪意のある指示の挿入である間接的なプロンプト インジェクションの影響を受けやすくなります。このドキュメントは、ウェブサイトとユーザーを不正行為者から保護するために、Google のチームがツールのセキュリティについてまとめたものです。
一部のモデルにはプロンプト インジェクションに対処するレイヤがありますが、大規模言語モデル(LLM)内の安全性を保証することはできません。モデルは確率論的な性質を持っています。最先端の LLM を使用するエージェント システムに対する再現可能なプロンプト インジェクション攻撃が繰り返されており、ウェブに対する攻撃の頻度が増加していることを覚えておくことが重要です。
こうした懸念に対処するため、WebMCP でツールを構築するユーザー向けに、セキュリティに関する予備的なガイダンスを提供しています。
アノテーション ヒントを使用する
ツールを構築する際に、いくつかのヒントを追加する必要があります。
- 必要に応じて
untrustedContentHintを使用する。ツールがユーザー作成コンテンツ(UGC)または外部ソースのデータを返す場合は、ツールにuntrustedContentHintを追加することを検討してください。このフィールドは、ペイロードを明示的に信頼できないものとしてラベル付けし、サイトの完全性を保護するとともに、このデータには厳重な精査が必要であることをエージェントに伝えるシグナルを提供します。 - 状態を変更しないツールでは
readOnlyHintを使用します。これにより、エージェントはユーザーの確認を求めるタイミングについて、より適切な判断を下せるようになります。
ツールを慎重に公開する
WebMCP document.modelContext.registerTool API は、ツールの機能をエージェントにのみ公開します。デフォルトでは、他のウェブサイトやクロスオリジン iframe はツールを監視したり操作したりできません。
registerTool の exposedTo オプションを使用すると、特定の安全なオリジンの配列に対してツールへのアクセス権を付与できます。これにより、サイトに埋め込まれたとき、およびサイトがそのオリジンに埋め込まれたときに、ツールがそれらのオリジンに公開されます。
// https://partner.org
document.modelContext.registerTool({
name: 'my_shared_tool',
description: 'Shared across origins',
// ...
}, {
exposedTo: ['https://trusted.com', 'https://example.com']
});
信頼できるオリジンにのみツールを公開します。これは、ツールがユーザーデータを管理する場合や、ユーザーに影響を与える場合に特に重要です。
getFavoriteProductsなどの読み取り専用ツールは、ユーザーに関する情報を明らかにすることがあります。これらのツールは、このデータを直接共有するウェブサイトにのみ公開してください。- 読み取りと書き込みのアクセス権を持つツールは、ユーザーに代わってアクションを実行します。これらのツールは、ユーザーの代理として動作する際に信頼できると判断したオリジンにのみ公開する必要があります。たとえば、
postCommentをtrustedExample.comに公開することはできますが、evilExample.comに公開することはできません。
文字数制限を設定する
エージェントのガードレールに抵触しないように、ツールの説明と出力を簡潔に記述します。より良い結果を得るには、次の文字数制限をおすすめします。
- ツール説明ごとに 500 文字
- パラメータの説明ごとに 150 文字
- ツール名とパラメータ名はそれぞれ 30 文字まで
- 個々のツール出力あたり 1,500 文字の制限
エージェントによってばらつきがある可能性が高いため、ユーザーのフィードバックに基づいて文字数の上限を調整することをおすすめします。
次のステップ
Google は、エージェント ウェブの安全なインフラストラクチャの構築に向けて、引き続き調査と取り組みを進めています。たとえば、関係者間で同意管理に関する議論が進行中であり、仕様のドラフトには、ツールの実行時にユーザー入力を非同期でリクエストするための requestUserInteraction() が含まれています。
アプリケーションに WebMCP を実装する予定はありますか?他に懸念事項(セキュリティなど)はありますか?WebMCP のオリジン トライアルに登録された場合は、ぜひご感想をお聞かせください。
- API の形状に関するフィードバックは、GitHub の WebMCP 解説で既存の問題にコメントするか、新しい問題を開いて共有してください。
- Chrome の実装についてフィードバックがある場合は、Chromium のバグを報告してください。
- 早期プレビュー プログラムに参加して、新しい API をいち早く確認し、メーリング リストにアクセスしましょう。
- Chrome のステータスで Chrome の実装を確認してください。
エージェントを構築する場合は、WebMCP のエージェントのセキュリティに関する考慮事項を読むことをおすすめします。