動的ツール検出を使用すると、 MCP サーバー ベースのプラグイン を使用する宣言型エージェントが、公開時にエージェントのプラグイン マニフェストにキャプチャされたツール リストに制限されるのではなく、実行時に使用可能なツールを MCP サーバーから直接解決できます。 この機能により、ユーザーはエージェントの再パッケージ化、再検証、再公開を待たずに、ほぼリアルタイムで MCP サーバーの最新機能にアクセスできます。
注:
動的ツール検出には、対話型 UI ウィジェット (MCP アプリ) を返すツールが含まれています。 エージェントは、追加の構成なしでこれらのウィジェットをレンダリングします。
注:
この記事では、MCP サーバーが宣言型エージェントのプラグイン マニフェストを通じて登録されるプラグインの動的ツール検出について説明します。 MCP サーバーを エージェント コネクタ として登録すると、別のマニフェスト (Microsoft 365 アプリ マニフェストの agentConnectors ノード) が使用されます。 エージェント コネクタの場合、動的ツール検出には、アプリ マニフェスト バージョン 1.29 以降 と、 それを許可するホストが必要です。 詳細については、「 MCP サーバーをエージェント コネクタとして登録する」を参照してください。
動的ツール検出とピン留めされたツールの違い
固定されたツールを使用すると、エージェント開発者は MCP サーバーが公開するツールを選択し、プラグイン マニフェストで宣言し、エージェント パッケージの一部として出荷します。 新しいツールの追加、非推奨のツールの削除、パラメーターの名前の変更、記述の調整など、ツール サーフェスに変更を加えた場合は、ユーザーが変更を確認する前に、エージェント開発者がマニフェストを更新し、エージェントを再送信し、再検証して再発行する必要があります。
動的ツール検出により、エージェントは固定ツールリストを保持しなくなります。 プラットフォームは、実行時に MCP サーバーから現在のツール定義を取得し、最後の既知のセットと比較し、変更を検証して適用して、エージェントがサーバーの機能の最新のビューで動作するようにします。
相違点を次の表にまとめます。
| 特徴 | ピン留めされたツール | 動的ツール検出 |
|---|---|---|
| ツール定義のソース | エージェントと共にパッケージ化されたプラグイン マニフェスト | 実行時にフェッチされる MCP サーバー |
| ツール定義が解決されたとき | エージェントの公開時 | 実行時、セッションごと |
| ツールの追加または削除 | マニフェストの更新、エージェントの再送信、および再公開が必要です | MCP サーバーが変更を公開し、ランタイム検証に合格すると自動的に反映されます |
| ツールのスキーマまたは説明の更新 | エージェントを再発行する必要があります | 実行時にピックアップ |
| ユーザー固有のツール サーフェス (SKU、ロール、資格など) | サポートされていません。 すべてのユーザーには、同じマニフェスト定義ツール リストが表示されます。 | サポートされています。 MCP サーバーは、サインイン ユーザーに合わせて調整されたツール リストを返すことができます。 |
| 新しいツール機能をロールアウトする時間 | エージェントの再公開サイクルで制限された日数から数週間 | ほぼリアルタイム。MCP サーバーのデプロイとランタイム検証でのみゲートされます |
| 非推奨のツールを廃止する時刻 | 日から週 | ほぼリアルタイム |
| ツール定義に対する信頼性と安全性のチェック | ストア検証中の公開時に実行 | 公開時のエージェント レベルの検証 に加えて、 新しく検出または変更されたツールをアクティブ化する前に、ランタイム責任 AI (RAI) およびクロスプロンプト インジェクション攻撃 (XPIA) の検証を行います |
プラグインのマニフェストの違い
プラグイン マニフェストは、 RemoteMCPServer ランタイムの構成を通じて検出モードを表します。
固定されたツールを使用して、functions 配列内のツールとランタイムの run_for_functions プロパティを一覧表示します。 ランタイムの mcp_tool_description プロパティに定義を格納します。
{
"functions": [
{ "name": "search_repositories" },
{ "name": "search_users" }
],
"runtimes": [
{
"type": "RemoteMCPServer",
"spec": {
"url": "https://api.contoso.com/mcp",
"mcp_tool_description": {
"file": "mcp-tools.json"
}
},
"run_for_functions": [
"search_repositories",
"search_users"
]
}
]
}
動的ツール検出では、functions 配列は空で、ランタイムの run_for_functions プロパティは ["*"] に設定されているため、エージェントは実行時にサーバーのすべてのツールを解決します。
{
"functions": [],
"runtimes": [
{
"type": "RemoteMCPServer",
"spec": {
"url": "https://api.contoso.com/mcp"
},
"run_for_functions": [
"*"
]
}
]
}
詳細については、「 MCP サーバー仕様オブジェクト」を参照してください。
Agents Toolkit を使用してピン留めされたツールを構成する
既定では、 Microsoft 365 Agents Toolkit は、動的ツール検出用の新しい MCP プラグインを構成します。 代わりに、固定されたキュレーションされたツールセットをピン留めするには (たとえば、サーバーのツールのサブセットのみを公開する場合や、リリース間でツールサーフェスを一定に保つ場合など)、Agents Toolkit でツールを選択します。 その後、マニフェストを更新してエージェントを再発行するまで、ツール サーフェスは変更されません。
特定のツール セットをピン留めするには:
.vscode/mcp.json ファイルを開きます。 ファイル エディターで [ スタート ] ボタンを選択します。
認証を求められたら、[認証 を許可 ] を選択します。
ファイル エディターで [ATK: MCP から取得アクション ] ボタンを選択し、 ai-plugin.json を選択します。
エージェントが使用するツールを選択します。
ツールを選択すると、「プラグインのマニフェストの違い」に示すように、Agents Toolkit はピン留めされたツールでai-plugin.jsonを更新します。 Agents Toolkit は、ツール定義をランタイムの mcp_tool_description プロパティに格納します。これは、 tools 配列にインラインで格納することも、ツール定義を含む file への参照としても格納します。 定義は、MCP サーバーの tools/list メソッドによって返される形式と一致します。
管理者の透明性、ガバナンス、監査
動的ツール検出は、 ツールが検出されると 、公開時から実行時までシフトします。 MCP サーバー開発者は、引き続きツール定義を作成して所有します。 管理者が依存している透明性、ガバナンス、コンプライアンスの保証を維持するために、プラットフォームは Microsoft 365 管理センター (MAC) と Microsoft Purview を通じて制御と監査シグナルを提供します。
動的検出を使用したエージェントとピン留めされたツールの区別
管理者は、テナント内のどのエージェントが動的ツール検出を使用しているかを、Microsoft 365 管理センターのエージェント詳細ビューから特定できます。 エージェント詳細ビューの [ データ & ツール ] タブの [ ツール] セクションの [ツール] セクションの情報バナーは、エージェントが実行時にツールを変更できる MCP サーバーを使用していることを示しています。
エージェントとコネクタのカタログリストビュー自体は変更されません。 検出メカニズムは、カタログ レベルの一覧ではなく、エージェントごとの詳細ページに表示されます。
動的ツール検出を使用するエージェントの無効化
動的ツール検出機能自体に個別のテナント レベルまたはエージェント レベルのスイッチはありません。 代わりに、管理者は Microsoft 365 管理センターの既存のエージェント レベルのコントロールを使用します。
- 管理者は、動的ツール検出を使用する特定のエージェントをテナントで使用させたくない場合は、現在宣言型エージェントに対して使用しているのと同じエージェント管理コントロールを使用して、そのエージェントを無効化またはブロックできます。
- 特定のユーザーまたはグループにエージェントを割り当てるなど、同じコントロールを使用して、より広範なロールアウトの前に動的ツール検出を使用するエージェントの可用性をステージングします。
このアプローチは、動的ツール検出では、管理者が学習するための新しいポリシー サーフェスが導入されないことを意味します。 エージェントの有効化、スコープ設定、無効化は、エージェントがピン留めされたツールを使用するか、動的ツール検出を使用するかに関係なく、同じように機能します。 エージェントの詳細ビューは、エージェントが使用する検出メカニズムを管理者に伝えるので、管理者はそれを許可するかどうかについて情報に基づいた決定を下すことができます。
Microsoft Purview の監査ログ
動的ツール検出を使用するエージェントとの対話は、他の宣言型エージェントとの対話と共に、 Copilot ワークロードの下の Microsoft Purview 監査ログに記録されます。 管理者は、Purview 監査検索でWorkload = Copilotでフィルター処理することでこれらのレコードを検索し、CopilotEventData の TargetAgentName フィールドを使用して特定のエージェントを特定できます。
既存の信頼と安全性の保証を維持する方法
動的ツール検出は、現在の MCP プラグインに適用される信頼性と安全性のモデルをバイパスしません。 ランタイム検証レイヤーを使用してモデルを拡張します。
- ISV (3P) アプリ は、既存の拡張性ガバナンス スタック (発行元の構成証明と M365 認定、テナントと ISV のサービス契約と使用条件、公開時に実行されるストア検証) に引き続き依存します。
- 基幹業務 (LOB) アプリ は、ファースト パーティおよび内部アプリについて、テナントの既存の内部オンボードとコンプライアンス手順に引き続き依存します。
- ランタイム検証: 新しく検出または変更されたツールはすべて、ツールがエンド ユーザーに対してアクティブ化される前に、RAI および XPIA 分類子によってスクリーニングされます。 プロセスは、検証に失敗したツールの変更をブロックします。
これらのプロセスが一緒になっていることにより、実行時にツールが進化しても、公開時にお客様が信頼している保証が引き続き保持されることが保証されます。