AIエージェントの活用が急速に進む中で、外部リソースとAIモデルを接続するための標準規格であるModel Context Protocol (MCP)が注目を集めています。

MCPはツールとAIアプリケーションの連携を容易にしますが、一方で「どのツールを誰が実行できるのか」「ツールの出力に機密情報が含まれていないか」といった統制上の課題を浮き彫りにしました。

こうした背景を受け、Microsoftは2026年5月21日、.NET開発者向けにAIエージェントの安全性を担保するための新たな拡張機能を発表しました。

新しく公開されたMicrosoft.AgentGovernance.Extensions.ModelContextProtocolは、既存のMCP C# SDKにガバナンス機能を統合するプレビュー版のパッケージです。

本記事では、この新しい拡張機能がAIエージェントの運用においてどのような役割を果たし、どのように実装できるのかを詳しく紹介します。

AIエージェントにおけるガバナンスの重要性

MCPによってツールの統合は簡単になりましたが、その柔軟性は新たなセキュリティリスクを生み出す可能性を秘めています。

例えば、すべての登録済みツールを、すべてのエージェントが無制限に呼び出せる状態は決して安全とは言えません。

また、ツールの説明文の中にプロンプトインジェクションのような攻撃的な指示が含まれている場合、AIモデルが意図しない挙動を示すリスクがあります。

さらに、ツールの実行結果として得られた機密情報や有害なコンテンツが、そのままAIモデルにフィードバックされることも防がなければなりません。

これまでは、こうした懸念を解消するために、開発者が独自にフィルターやバリデーションロジックを実装する必要がありました。

Agent Governance ToolkitのMCP拡張機能は、これらの複雑な制御を一元的に管理し、開発者が「安全なパス」を容易に選択できるように設計されています。

MCPサーバーが直面する具体的なリスク

AIエージェントがツールを利用する際、以下のような具体的な疑問や懸念が生じることが一般的です。

  • 特定のユーザーや権限を持つエージェントのみにツール実行を制限できるか。
  • ツールの定義が動的に変更された際、リスクを検知して実行をブロックできるか。
  • ツールから返された出力に含まれる認証情報や個人情報をどのように保護するか。

これらの課題に対して、アドホックな対応を繰り返すと、コードの保守性が低下し、セキュリティホールが生まれる原因となります。

ガバナンスをパイプラインとして組み込むことで、一貫性のあるセキュリティポリシーをアプリケーション全体に適用することが可能になります。

Agent Governance Toolkit MCP拡張機能の導入

この新しいパッケージは、.NET 8以降の環境で動作し、既存のMCP C# SDKを拡張する形で利用します。

導入は非常にシンプルで、NuGetパッケージマネージャーを通じてプロジェクトに追加するだけで準備が整います。

パッケージのインストール

まずは、以下のコマンドを実行して必要なパッケージをプロジェクトにインストールしてください。

Shell
# MCP拡張ガバナンスパッケージの追加
dotnet add package Microsoft.AgentGovernance.Extensions.ModelContextProtocol

ガバナンス設定の基本構成

パッケージをインストールしたら、MCPサーバーの構成パイプラインにWithGovernanceメソッドを追加します。

このメソッドを呼び出すだけで、スタートアップ時のスキャンやランタイムのポリシー適用が有効になります。

C#
using AgentGovernance.Extensions.ModelContextProtocol;

// サービスの構築
var builder = WebApplication.CreateBuilder(args);

// MCPサーバーの設定にガバナンスを統合
builder.Services
    .AddMcpServer()
    .WithGovernance(options =>
    {
        // ポリシーファイルのパスを指定
        options.PolicyPaths.Add("policies/mcp.yaml");
        // デフォルトのエージェントIDを設定
        options.DefaultAgentId = "did:mcp:server";
        // サーバー名を識別用に設定
        options.ServerName = "contoso-support";
    });

この記述により、スタートアップ時のスキャン、実行時のポリシーチェック、レスポンスのサニタイズが一度に登録されます。

主な機能と制御メカニズム

WithGovernance()メソッドによって追加される機能は多岐にわたり、AIエージェントのライフサイクル全体をカバーします。

本セクションでは、特に重要な3つの機能について詳細に解説します。

1. スタートアップ時のツール定義スキャン

MCPサーバーが起動し、ツールが公開される前に、登録されたすべてのツールのメタデータがスキャンされます。

これは、危険なツール定義が外部に公開されるのを未然に防ぐためのゲートキーパーとして機能します。

スキャナーは、以下のような脅威カテゴリーを自動的に検出します。

  • ツールポイズニングやタイポスクワッティング
  • 隠された命令(Hidden Instructions)の混入
  • 説明文へのインジェクション攻撃
  • パスワードやトークンを要求する不適切なスキーマ設計

デフォルトでは、安全でないと判定されたツールが存在する場合、サーバーの起動そのものが失敗する設定になっています。

2. ランタイムにおけるポリシー執行

ツールが実際に呼び出される際、YAML形式で記述されたポリシーに基づいて実行の可否が判断されます。

これにより、アプリケーションコードを書き換えることなく、ツールの利用ルールを動的に変更できます。

以下は、特定のツールのみを許可するポリシーファイルの記述例です。

YAML
apiVersion: governance.toolkit/v1
version: "1.0"
name: mcp-governance-policy
default_action: deny # デフォルトではすべて拒否
rules:
  - name: allow-echo
    condition: "tool_name == 'echo'" # echoツールのみを許可
    action: allow
    priority: 10

もしポリシーに違反する呼び出しが行われた場合、ライブラリはツールの実行を中断し、ガバナンスエラーを返します。

3. レスポンスのサニタイズ機能

ツールの実行結果がAIモデルに渡される直前に、内容を精査して危険な要素を削除(レッドアクション)します。

これにより、ツールからの予期せぬ出力がAIの動作を狂わせるリスクを最小限に抑えます。

具体的には、<system>タグのようなプロンプト制御文字や、「以前の指示を無視せよ」といった命令形フレーズ、さらには認証情報の漏えいパターンなどが検知対象となります。

このサニタイズ処理は、有用な情報を可能な限り残しつつ、攻撃的なフラグメントのみを除去するように調整されています。

デフォルトで「セキュア」な設計思想

このパッケージの大きな特徴の一つは、Fail Closed (失敗時には閉じる)という原則に基づいた設計です。

多くの機能が、明示的に無効化しない限り、最初から有効な状態で提供されています。

オプション名デフォルト値機能の概要
ScanToolsOnStartuptrue起動時にツール定義をスキャンする
FailOnUnsafeToolstrue安全でないツールがある場合に起動を停止する
SanitizeResponsestrueツール出力を自動的にサニタイズする
EnableAudittrueガバナンス決定の監査ログを記録する

このように、開発者が細かい設定に頭を悩ませることなく、最初から高いセキュリティ基準を維持できるようになっています。

実践的なガバナンスフローの動作

実際にツールが呼び出された際、内部でどのような処理が行われるかを確認しましょう。

まず、呼び出し元のアイデンティティ(Agent Identity)が解決されます。

認証されたユーザーがいる場合はそのIDが、いない場合は設定されたデフォルトID(例: did:mcp:anonymous)が使用されます。

次に、そのアイデンティティと呼び出そうとしているツール情報を基に、ポリシー評価エンジンが判断を下します。

許可が得られた場合のみツールが実行され、その戻り値はサニタイザーを通過した後にAIモデルへと返却されます。

最後に、これら一連のアクションはメトリクスや監査ログとして記録され、運用の可視化に貢献します。

実行結果
# 実行時の監査ログイメージ
[INFO] Governance Decision: Allow
[INFO] Agent: did:mcp:user-123
[INFO] Tool: get_weather
[INFO] Action: Execution started.
[INFO] Sanitization: Redacted 1 potentially unsafe pattern from response.

この統合されたフローにより、開発者は個別のバリデーションロジックをメンテナンスする負担から解放されます。

まとめ

今回発表されたMicrosoft.AgentGovernance.Extensions.ModelContextProtocolは、.NETエコシステムにおけるAIエージェント開発をより堅牢なものにする強力なツールです。

MCPによる柔軟な連携というメリットを活かしつつ、企業が求める厳格なセキュリティとガバナンスを同時に実現できる点が、この拡張機能の最大の価値です。

スタートアップ時の自動スキャンやYAMLベースのポリシー管理、そしてレスポンスの自動サニタイズといった機能は、本番環境での運用において欠かせない要素となるでしょう。

現在はパブリックプレビュー版としての提供ですが、AIエージェントや社内用Copilotを開発している.NET開発者にとって、今すぐ試すべき価値のあるアップデートと言えます。

まずはNuGetからパッケージを導入し、ご自身のMCPサーバーにガバナンスの層を追加してみてはいかがでしょうか。