重要
Microsoft Agent 365 の早期アクセスを利用するには、フロンティア プレビュープログラムに参加する必要があります。 フロンティアは、Microsoft の最新の AI イノベーションと直接接続します。 Frontier のプレビューは、お客様の契約書に記載されている既存のプレビュー利用規約に従います。 これらの機能は現在開発中であるため、提供状況や機能は今後変更される可能性があります。
ツールモジュールは、開発者がモデルコンテキストプロトコル(MCP)サーバーをAIエージェントのワークフローに発見、設定、統合するのに役立ちます。 MCP サーバーは、AI エージェントが呼び出すことができるツールとして外部機能を公開します。 使用可能なツーリング サーバーの概要については、Agent 365 ツーリング サーバー を参照してください。
概要
Agent 365 Tooling の統合は、次のワークフローに従います。
- MCP サーバーの構成 - Agent 365 CLI を使用して MCP サーバーを検出して追加する
-
マニフェストの生成 - CLI は、サーバー構成を使用してプロジェクト フォルダーに
ToolingManifest.jsonを作成します。 -
ブループリントにアクセス許可を適用する - グローバル管理者は、
a365 setup all(初回セットアップ) またはa365 setup permissions mcp(ブループリントが既に存在する場合) を実行して、OAuth2 アクセス許可をエージェント ブループリントに付与します。 どちらの方法でも、コマンドはToolingManifest.jsonを読み取り、管理者の同意が必要です。 この手順は、常にマニフェストにサーバーを追加する手順とは別です。 - コードに統合 する - マニフェストを読み込み、ツールをオーケストレーターに登録します。
- ツールの呼び出し - エージェントは実行中にツールを呼び出して操作を実行します。
前提条件
MCP サーバーを構成する前に、以下を確認してください:
- Agent 365 CLI がインストールされ構成済み
- .NET 8.0 SDK 以降 - Download
- Microsoft 365 テナントのグローバル管理者特権
エージェント ID の設定
エージェンティック認証を使用している場合は、MCP サーバーを構成する前に、エージェント登録プロセス を完了して、エージェント ID を作成します。 このプロセスにより、エージェントが認証しMCPツールにアクセスできるエージェント向けアプリIDとエージェントユーザーが作成されます。
OBO認証の設定
エージェント認証の代わりにOn-Behalf-Of(OBO)認証を使う場合、エージェントはエージェントユーザーIDなしで委任されたユーザー権限を使ってMCPツールにアクセスできます。 OBOフローでは、エージェントがユーザーの委任トークンを交換し、ユーザーの代わりにアクションを実行します。
OBOフローの仕組みについての詳細は「 認証フロー」をご覧ください。 完全な実装例については、Microsoft 365 Agents SDKの OBO 承認サンプルを参照してください。
サービス プリンシパルを設定する
このワンタイムセットアップスクリプトを実行して、テナント内のAgent 365 Toolsのサービスプリンシパルを作成します。
重要
このテナントごとの一度限りの操作にはグローバル管理者権限が必要です。
New-Agent365ToolsServicePrincipalProdPublic.ps1 脚本をダウンロードしてください。
PowerShellを管理者として開いて、スクリプトディレクトリに行きます。
スクリプトを実行します。
.\New-Agent365ToolsServicePrincipalProdPublic.ps1メッセージが表示されたら、Azure資格情報を使用してサインインします。
完了すると、テナントはエージェント開発と MCP サーバー構成の準備が整います。
MCP サーバーの構成
Agent 365 CLI を使用して、エージェントの MCP サーバーを検出、追加、および管理します。 使用可能な MCP サーバーとその機能の完全な一覧については、MCP サーバー カタログ を参照してください。
使用可能なサーバーの検出
設定可能なすべてのMCPサーバーをリストアップします:
a365 develop list-available
MCP サーバーの追加
エージェント構成に 1 つ以上の MCP サーバーを追加します:
a365 develop add-mcp-servers mcp_MailTools
重要
このコマンドは、プロジェクト フォルダー内の ToolingManifest.json のみを更新します。ブループリントへのアクセス許可は付与 されません 。 アクセス許可の適用方法は、セットアップ プロセスの場所によって異なります。
-
初期セットアップの前に:最初に
a365 develop add-mcp-servers実行してから、a365 setup allに進みます。setup allコマンドには、ブループリント作成の一環として MCP アクセス許可ステップが含まれています。 -
ブループリントが既に存在した後:グローバル管理者は、
a365 setup permissions mcp個別に実行する必要があります。 管理者のa365.config.jsonには、更新されたdeploymentProjectPathを含むプロジェクト フォルダーを指すToolingManifest.jsonが必要です。 この手順が完了するまで、新しい MCP サーバーのアクセス許可はブループリントに表示されません。
構成済みサーバーの一覧表示
現在構成されている MCP サーバーを表示します:
a365 develop list-configured
MCP サーバーの削除
構成から MCP サーバーを削除します:
a365 develop remove-mcp-servers mcp_MailTools
完全なCLIリファレンスについては、 a365 developコマンドを参照してください。
テストにはモックツールサーバーを使います
テストや開発では、実際のMCPサーバーに接続する代わりにAgent 365のCLIモックツールサーバーを使用してください。 モックサーバーはMCPサーバーとの相互作用をシミュレートするため、認証などの外部依存関係なしにローカルでエージェントをテストできます。
モックサーバーはローカル開発およびテストに以下の利点を提供します:
- オフライン開発:インターネット接続や外部依存なしでエージェントをテストしましょう。
- 一貫したテスト:エッジケースのテストに対して予測可能な回答を得ること。
- デバッグ:すべてのリクエストとレスポンスをリアルタイムで閲覧
- 迅速な反復:外部API呼び出しを待つ必要や複雑なテスト環境の設定をする必要はありません。
a365 develop start-mock-tooling-serverコマンドを使ってモックツールサーバーを起動します。
注意
以下のセクションでは、マニフェストの設定やツールのエージェント統合が、モックツールサーバーでも実際のMCPサーバーでも同じ仕組みです。
MCP_PLATFORM_ENDPOINT環境変数を本番エンドポイントではなくモックサーバー(例:http://localhost:5309)を指すように設定してください。
ツールマニフェストを理解する
a365 develop add-mcp-servers を実行すると、CLI はすべての MCP サーバーの構成を含む ToolingManifest.json ファイルを生成します。 エージェント ランタイムは、このマニフェストを使用して、使用可能なサーバーとその認証方法を把握します。
マニフェスト構造
ToolingManifest.json例:
{
"mcpServers": [
{
"mcpServerName": "mcp_MailTools",
"mcpServerUniqueName": "mcp_MailTools",
"scope": "McpServers.Mail.All",
"audience": "api://05879165-0320-489e-b644-f72b33f3edf0"
}
]
}
マニフェスト パラメーター
各 MCP サーバー エントリには、次のものが含まれます:
| パラメーター | 説明 |
|---|---|
| mcpServerName | MCP サーバーの表示名。 |
| mcpServerUniqueName | MCPサーバーインスタンスのユニーク識別子。 |
| スコープ | MCP サーバーの機能にアクセスするために必要な OAuth スコープ (メール操作の McpServers.Mail.All など)。
add-mcp-serversコマンドはMCPサーバーカタログからこの値を取得します。 |
| 対象者 | ターゲット API リソースを識別するMicrosoft Entra ID URI。
add-mcp-serversコマンドはMCPサーバーカタログからこの値を取得します。 |
注意
Agent 365のCLIはMCPサーバーを追加すると自動的に scope と audience の値を入力します。 これらの値は、MCP サーバー カタログ から取得され、各 MCP サーバーへのアクセスに必要なアクセス許可を定義します。
エージェントへのツールの統合
ツーリング マニフェストを生成したら、構成済み MCP サーバーをエージェント コードに統合します。 このセクションでは、オプションの検査手順と必要な統合手順について説明します。
リストツールサーバー(オプション)
ヒント
このステップはオプションです。 ツール サーバー構成サービスを使用して、使用可能なツール サーバーをオーケストレーターに追加する前に、ツーリング マニフェストから検査します。
ツール サーバー構成サービスを使用して、ツーリング マニフェストからエージェントが利用可能なツール サーバーを検出します。 この方法により、以下のことが可能になります:
- すべての設定済みMCPサーバーをその
ToolingManifest.jsonファイルから照会します。 - サーバーのメタデータと機能を取得します。
- 登録前にサーバーの空き状況を確認してください。
ツール サーバーを一覧表示する方法は、コア ツーリング パッケージで使用できます:
# Use McpToolServerConfigurationService.list_tool_servers
from microsoft.agents.a365.tooling import McpToolServerConfigurationService
config_service = McpToolServerConfigurationService()
tool_servers = await config_service.list_tool_servers(agentic_app_id, auth_token)
パラメーター:
| パラメーター | タイプ | 説明 | 期待値 | 必須/任意 |
|---|---|---|---|---|
agentic_app_id |
str | エージェントアプリケーションインスタンスのユニーク識別子 | 有効なエージェント アプリケーション ID 文字列 | 必須 |
auth_token |
str | MCP サーバー ゲートウェイを使用して認証するためのベアラー トークン | 有効な OAuth ベアラー トークン | 必須 |
オーケストレーターへのツールの登録
フレームワーク固有の拡張機能メソッドを使用して、すべての MCP サーバーをオーケストレーション フレームワークに登録します:
-
AddToolServersToAgentAsync(.NET) -
add_tool_servers_to_agent(Python) -
addToolServersToAgent(Node.js)
これらのメソッド:
- 構成済みの MCP サーバーからのすべてのツールをオーケストレーターに登録する
- 認証と接続の詳細を自動的に設定する
- エージェントが呼び出すツールをすぐに使用できるようにする
オーケストレーター拡張機能の選択
Agent 365 ツーリング モジュールには、さまざまなオーケストレーション フレームワーク用の専用拡張機能パッケージが用意されています:
- microsoft_agents_a365.tooling: 主要なツール機能
- microsoft_agents_a365.tooling.extensions.agentframework: Agent Framework の統合
- microsoft_agents_a365.tooling.extensions.azureaifoundry: Azure AI Foundry統合
- microsoft_agents_a365.tooling.extensions.openai: OpenAI 統合
- microsoft_agents_a365.tooling.extensions.semantickernel: Semantic Kernel統合
注意
a365 develop add-mcp-serversを実行すると、CLI によって MCP サーバー カタログから OAuth スコープと対象ユーザーの値が自動的に取得され、ToolingManifest.jsonに書き込まれます。 拡張メソッドでは、これらの値を使用して実行時に認証を設定します。エージェント コードで手動で構成する必要はありません。 ただし、グローバル管理者は、エージェントが運用環境で使用する前に、 a365 setup all (初回セットアップ) または a365 setup permissions mcp (ブループリントが既に存在する場合) を使用して、これらのアクセス許可をエージェント ブループリントに付与する必要があります。
詳細な実装例については、Agent 365 サンプル を参照してください。
実装の例
以下の例は、Agent 365ツールをさまざまなオーケストレーションフレームワークと統合する方法を示しています。
OpenAI を使用したPython
この例では、Python アプリケーションで MCP ツールと OpenAI を統合する方法を示します。
1. インポート ステートメントの追加
ツーリング モジュールと OpenAI 拡張機能にアクセスするために必要なインポートを追加します:
from microsoft.agents.a365.tooling import McpToolServerConfigurationService
from microsoft.agents.a365.tooling.extensions.openai import mcp_tool_registration_service
2. ツーリング サービスの初期化
構成およびツール登録サービスのインスタンスを作成します:
# Create configuration service and tool service with dependency injection
self.config_service = McpToolServerConfigurationService()
self.tool_service = mcp_tool_registration_service.McpToolRegistrationService()
3. MCP ツールの OpenAI エージェントへの登録
add_tool_servers_to_agent メソッドを使用して、すべての構成済み MCP ツールを OpenAI エージェントに登録します。 この方法では、エージェンティック認証と非エージェンティック認証の両方のシナリオを処理します:
async def setup_mcp_servers(self, auth: Authorization, context: TurnContext):
"""Set up MCP server connections"""
try:
use_agentic_auth = os.getenv("USE_AGENTIC_AUTH", "false").lower() == "true"
if use_agentic_auth:
self.agent = await self.tool_service.add_tool_servers_to_agent(
agent=self.agent,
agentic_app_id=agentic_app_id,
auth=auth,
context=context,
)
else:
self.agent = await self.tool_service.add_tool_servers_to_agent(
agent=self.agent,
agentic_app_id=agentic_app_id,
auth=auth,
context=context,
auth_token=self.auth_options.bearer_token,
)
except Exception as e:
logger.error(f"Error setting up MCP servers: {e}")
メソッド パラメータ
次の表では、add_tool_servers_to_agent で使用するパラメーターについて説明します。
| パラメーター | 説明 |
|---|---|
agent |
ツールを登録する OpenAI エージェント インスタンス。 |
agentic_app_id |
エージェントの一意識別子(エージェント関連アプリ ID)。 |
auth |
ユーザーの認可コンテキスト。 |
context |
エージェント SDK の現在の会話ターンのコンテキスト。 セキュリティで保護されたツール登録用のユーザー ID、会話メタデータ、および認証コンテキストを提供します。 |
auth_token |
(オプション) 非エージェンティック認証シナリオのベアラー トークン。 |
4. 初期化中の呼び出し
エージェントを実行する前に、初期化中に必ず設定メソッドを呼び出してください:
# Setup MCP servers during initialization
await self.setup_mcp_servers(auth, context)
そのadd_tool_servers_to_agent メソッドは自動的に:
- ToolingManifest.json ファイルからすべてのMCPサーバーを読み込みます。
- ツールをOpenAIエージェントに登録します。
- マニフェスト設定に基づいて認証を設定します。
- 代理人が活用できるツールを提供します。
完全な作業例については、Agent 365 サンプル リポジトリ を参照してください。
エージェント365 MCPサーバーにアクセスするその他の方法
Agent 365 SDKに加え、他の開発体験を通じてAgent 365 MCPサーバーにもアクセス可能です:
- Visual Studio Code - カスタム開発ワークフローのために MCP サーバーに直接接続します。
- Microsoft Copilot Studio - 低コード エクスペリエンスを使用して MCP サーバーを会話フローに統合します。
- Azure AI Foundry - 完全な SDK サポートと高度なオーケストレーション機能を備えた MCP サーバーを使用します。
これらのプラットフォーム間で利用可能なMCPサーバーおよび統合オプションの完全な概要については、 Agent 365ツールサーバーの概要をご覧ください。
エージェントをテストする
MCPツールをエージェントに統合した後、ツールの呼び出しをテストして正しく動作し、異なるシナリオを扱えるか確認してください。 テストガイドに従って環境を整えましょう。 その後、主に テストツールの呼び出し セクションに注力し、MCPツールが期待通りに動作しているかを検証してください。 また、認証を扱わずにMCPサーバー接続やツール呼び出しをテストできるモ ックツールサーバー もチェックしてみてください。
可観測性を追加
エージェントに可観測性を追加し、エージェントのMCPツール呼び出しを監視・追跡します。 観測可能性機能を追加することで、パフォーマンスの追跡、問題のデバッグ、ツール使用パターンの理解が可能になります。 追跡とモニタリングの実施について詳しく学びましょう。
トラブルシューティング
このセクションでは、MCPサーバーやツールの設定や使用時によくある問題をリストアップしています。
ヒント
Agent 365トラブルシューティングガイドには、Agent 365 の開発ライフサイクルの各段階に対応した高レベルのトラブルシューティング推奨事項、ベストプラクティス、トラブルシューティングコンテンツへのリンクが含まれています。
MCPサーバーとツールの問題
症状:
- ツール呼び出し失敗。
- 「MCPサーバーが見つかりません」エラー。
- ツールを呼び出す際の許可拒否エラー。
根本原因:
- MCPサーバーは設定されていません。
- 権限が不足している
- サービスプリンシパルはまだ設定されていません。
- モックサーバーと本番サーバーの混乱。
解決策: 問題解決のために以下の解決策を試してみてください。
MCPサーバーの設定を確認してください
設定済みサーバーをリストアップし、欠けているサーバーを追加します。
# List configured servers a365 develop list-configured # If empty, add required servers (example: Mail MCP server) a365 develop add-mcp-servers mcp_MailToolsチェックサービスプリンシパルが存在する
ツール用に必要なサービスプリンシパルが作成されていることを確認してください。
# Run the one-time setup script # https://github.com/microsoft/Agent365-devTools/blob/main/scripts/cli/Auth/New-Agent365ToolsServicePrincipalProdPublic.ps1初期の開発やテストでは、モックサーバーを使いましょう
本番のツールコンポーネントなしでエージェントの他の部分をテストしたい場合は、初期のローカル開発とテストにはモックツールサーバーを使いましょう。
# Start mock tooling server a365 develop start-mock-tooling-server # Update your .env MCP_PLATFORM_ENDPOINT=http://localhost:5309モックツールサーバーについて学びましょう。
管理センターで権限を確認する
エージェントが必要なMCP権限を持っているか確認してください。
- Azure ポータルのエージェント ブループリント API のアクセス許可に、すべての MCP サーバーのアクセス許可が表示されていることを確認します。
検証:
# Test a tool call in Agents Playground # Should execute without permission errors