次の方法で共有


Foundry エージェントでの MCP ツールの使用

Azure AI Foundry エージェントの機能を拡張するには、リモート モデル コンテキスト プロトコル (MCP) サーバーでホストされているツールに接続します (独自の MCP サーバー エンドポイントを持ち込みます)。

モデル コンテキスト プロトコル ツールの使用方法

このセクションでは、ホスト型モデル コンテキスト プロトコル (MCP) サーバー統合で Azure Foundry (Azure AI) を使用して AI エージェントを作成する方法について説明します。 エージェントは、Azure Foundry サービスによって管理および実行される MCP ツールを使用して、外部リソースへの安全で制御されたアクセスを可能にします。

主な機能

  • ホストされる MCP サーバー: MCP サーバーは Azure AI Foundry によってホストおよび管理されるため、サーバー インフラストラクチャを管理する必要がなくなります
  • 永続的なエージェント: エージェントが作成され、サーバー側に格納され、ステートフルな会話が可能
  • ツール承認ワークフロー: MCP ツール呼び出しの構成可能な承認メカニズム

しくみ

1. 環境のセットアップ

このサンプルには、次の 2 つの環境変数が必要です。

  • AZURE_FOUNDRY_PROJECT_ENDPOINT: Azure AI Foundry プロジェクト エンドポイントの URL
  • AZURE_FOUNDRY_PROJECT_MODEL_ID: モデルのデプロイ名 (既定値は "gpt-4.1-mini")
var endpoint = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_ENDPOINT") 
    ?? throw new InvalidOperationException("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set.");
var model = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_MODEL_ID") ?? "gpt-4.1-mini";

2. エージェントの構成

エージェントは、特定の命令とメタデータを使用して構成されます。

const string AgentName = "MicrosoftLearnAgent";
const string AgentInstructions = "You answer questions by searching the Microsoft Learn content only.";

これにより、Microsoft Learn ドキュメントを使用して質問に回答するための特別なエージェントが作成されます。

3. MCP ツールの定義

このサンプルでは、ホストされている MCP サーバーを指す MCP ツール定義を作成します。

var mcpTool = new MCPToolDefinition(
    serverLabel: "microsoft_learn",
    serverUrl: "https://learn.microsoft.com/api/mcp");
mcpTool.AllowedTools.Add("microsoft_docs_search");

主要コンポーネント:

  • serverLabel: MCP サーバー インスタンスの一意識別子
  • serverUrl: ホストされている MCP サーバーの URL
  • AllowedTools: エージェントが使用できる MCP サーバーのツールを指定します

4. 永続的なエージェントの作成

エージェントは、Azure AI Foundry Persistent Agents SDK を使用してサーバー側で作成されます。

var persistentAgentsClient = new PersistentAgentsClient(endpoint, new AzureCliCredential());

var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
    model: model,
    name: AgentName,
    instructions: AgentInstructions,
    tools: [mcpTool]);

これにより、次の永続的なエージェントが作成されます。

  • Azure AI Foundry サービスを利用している
  • 指定された MCP ツールにアクセスできる
  • 複数の対話の間で会話状態を維持できる

5. エージェントの取得と実行

作成されたエージェントは、 AIAgent インスタンスとして取得されます。

AIAgent agent = await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id);

6. ツール リソースの構成

このサンプルでは、承認設定を使用してツール リソースを構成します。

var runOptions = new ChatClientAgentRunOptions()
{
    ChatOptions = new()
    {
        RawRepresentationFactory = (_) => new ThreadAndRunOptions()
        {
            ToolResources = new MCPToolResource(serverLabel: "microsoft_learn")
            {
                RequireApproval = new MCPApproval("never"),
            }.ToToolResources()
        }
    }
};

キーの構成:

  • MCPToolResource: MCP サーバー インスタンスをエージェントの実行にリンクします
  • RequireApproval: ツールの呼び出しにユーザーの承認が必要なタイミングを制御します
    • "never": ツールは承認なしで自動的に実行されます
    • "always": すべてのツール呼び出しにはユーザーの承認が必要です
    • カスタム承認規則を構成することもできます

7. エージェントの実行

エージェントは質問で呼び出され、構成済みの MCP ツールを使用して実行されます。

AgentThread thread = agent.GetNewThread();
var response = await agent.RunAsync(
    "Please summarize the Azure AI Agent documentation related to MCP Tool calling?", 
    thread, 
    runOptions);
Console.WriteLine(response);

8. クリーンアップ

このサンプルでは、適切なリソースのクリーンアップを示しています。

await persistentAgentsClient.Administration.DeleteAgentAsync(agent.Id);

Python Azure AI Foundry MCP 統合

Azure AI Foundry は、Python エージェント フレームワークを介してモデル コンテキスト プロトコル (MCP) サーバーとのシームレスな統合を提供します。 このサービスは、MCP サーバーのホスティングと実行を管理し、インフラストラクチャ管理を排除しながら、セキュリティで保護された制御された外部ツールへのアクセスを提供します。

環境のセットアップ

環境変数を使用して Azure AI Foundry プロジェクトの資格情報を構成します。

import os
from azure.identity.aio import AzureCliCredential
from agent_framework.azure import AzureAIAgentClient

# Required environment variables
os.environ["AZURE_AI_PROJECT_ENDPOINT"] = "https://<your-project>.services.ai.azure.com/api/projects/<project-id>"
os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"] = "gpt-4o-mini"  # Optional, defaults to this

基本的な MCP 統合

ホストされている MCP ツールを使用して Azure AI Foundry エージェントを作成します。

import asyncio
from agent_framework import HostedMCPTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential

async def basic_foundry_mcp_example():
    """Basic example of Azure AI Foundry agent with hosted MCP tools."""
    async with (
        AzureCliCredential() as credential,
        AzureAIAgentClient(async_credential=credential) as chat_client,
    ):
        # Enable Azure AI observability (optional but recommended)
        await chat_client.setup_azure_ai_observability()

        # Create agent with hosted MCP tool
        agent = chat_client.create_agent(
            name="MicrosoftLearnAgent", 
            instructions="You answer questions by searching Microsoft Learn content only.",
            tools=HostedMCPTool(
                name="Microsoft Learn MCP",
                url="https://learn.microsoft.com/api/mcp",
            ),
        )

        # Simple query without approval workflow
        result = await agent.run(
            "Please summarize the Azure AI Agent documentation related to MCP tool calling?"
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(basic_foundry_mcp_example())

マルチツール MCP 構成

1 つのエージェントで複数のホストされた MCP ツールを使用します。

async def multi_tool_mcp_example():
    """Example using multiple hosted MCP tools."""
    async with (
        AzureCliCredential() as credential,
        AzureAIAgentClient(async_credential=credential) as chat_client,
    ):
        await chat_client.setup_azure_ai_observability()

        # Create agent with multiple MCP tools
        agent = chat_client.create_agent(
            name="MultiToolAgent",
            instructions="You can search documentation and access GitHub repositories.",
            tools=[
                HostedMCPTool(
                    name="Microsoft Learn MCP",
                    url="https://learn.microsoft.com/api/mcp",
                    approval_mode="never_require",  # Auto-approve documentation searches
                ),
                HostedMCPTool(
                    name="GitHub MCP", 
                    url="https://api.github.com/mcp",
                    approval_mode="always_require",  # Require approval for GitHub operations
                    headers={"Authorization": "Bearer github-token"},
                ),
            ],
        )

        result = await agent.run(
            "Find Azure documentation and also check the latest commits in microsoft/semantic-kernel"
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(multi_tool_mcp_example())

Python Agent Framework は、Azure AI Foundry のホスト型 MCP 機能とシームレスに統合され、運用アプリケーションに必要な柔軟性と制御を維持しながら、外部ツールへの安全でスケーラブルなアクセスを可能にします。

次のステップ