Sdílet prostřednictvím


Použití nástrojů MCP s agenty Foundry

Možnosti agenta Azure AI Foundry můžete rozšířit připojením k nástrojům hostovaným na vzdálených serverech MCP (Model Context Protocol) (přineste si vlastní koncový bod serveru MCP).

Jak používat nástroj Model Context Protocol

Tato část vysvětluje, jak vytvořit agenta AI pomocí Azure Foundry (Azure AI) s integrací serveru MCP (Hostovaný model Context Protocol). Agent může využívat nástroje MCP spravované a spouštěné službou Azure Foundry, což umožňuje zabezpečený a řízený přístup k externím prostředkům.

Klíčové funkce

  • Hostovaný server MCP: Server MCP je hostovaný a spravovaný službou Azure AI Foundry a eliminuje potřebu správy serverové infrastruktury.
  • Trvalí agenti: Agenti se vytvářejí a ukládají na straně serveru, což umožňuje stavové konverzace.
  • Pracovní postup schválení nástrojů: Konfigurovatelné schvalovací mechanismy pro vyvolání nástrojů MCP

Jak to funguje

1. Nastavení prostředí

Ukázka vyžaduje dvě proměnné prostředí:

  • AZURE_FOUNDRY_PROJECT_ENDPOINT: Adresa URL koncového bodu projektu Azure AI Foundry
  • AZURE_FOUNDRY_PROJECT_MODEL_ID: Název nasazení modelu (výchozí hodnota je 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. Konfigurace agenta

Agent je nakonfigurovaný s konkrétními pokyny a metadaty:

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

Tím se vytvoří agent specializující se na odpovědi na otázky pomocí dokumentace k Microsoft Learn.

3. Definice nástroje MCP

Ukázka vytvoří definici nástroje MCP, která odkazuje na hostovaný server MCP:

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

Klíčové komponenty:

  • serverLabel: Jedinečný identifikátor instance serveru MCP
  • serverUrl: Adresa URL hostovaného serveru MCP
  • AllowedTools: Určuje nástroje ze serveru MCP, které může agent používat.

4. Vytvoření trvalého agenta

Agent se vytvoří na straně serveru pomocí sady 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]);

Tím se vytvoří trvalý agent, který:

  • Žije ve službě Azure AI Foundry
  • Má přístup k zadaným nástrojům MCP.
  • Může udržovat stav konverzace napříč několika interakcemi.

5. Načítání a spouštění agenta

Vytvořený agent se načte jako AIAgent instance:

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

6. Konfigurace prostředků nástroje

Ukázka konfiguruje prostředky nástrojů s nastavením schválení:

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

Konfigurace klíče:

  • MCPToolResource: Propojí instanci serveru MCP se spuštěním agenta.
  • RequireApproval: Určuje, kdy je potřeba schválení uživatele pro vyvolání nástrojů.
    • "never": Nástroje se spouštějí automaticky bez schválení.
    • "always": Všechna vyvolání nástrojů vyžadují schválení uživatelem.
    • Můžete také nakonfigurovat vlastní pravidla schválení.

7. Provádění agenta

Agent se vyvolá s otázkou a spustí se pomocí nakonfigurovaných nástrojů 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. Vyčištění

Ukázka ukazuje správné vyčištění prostředků:

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

Integrace Azure AI Foundry MCP v Pythonu

Azure AI Foundry poskytuje bezproblémovou integraci se servery MCP (Model Context Protocol) prostřednictvím architektury agenta Pythonu. Služba spravuje hostování a spouštění serveru MCP a eliminuje správu infrastruktury a zajišťuje zabezpečený a řízený přístup k externím nástrojům.

Nastavení prostředí

Nakonfigurujte přihlašovací údaje projektu Azure AI Foundry prostřednictvím proměnných prostředí:

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

Základní integrace MCP

Vytvořte agenta Azure AI Foundry s hostovanými nástroji MCP:

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())

Konfigurace MCP s více nástroji

Použití několika hostovaných nástrojů MCP s jedním agentem:

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 poskytuje bezproblémovou integraci s hostovanými možnostmi MCP v Azure AI, která umožňuje zabezpečený a škálovatelný přístup k externím nástrojům a současně zachovává flexibilitu a kontrolu potřebnou pro produkční aplikace.

Další kroky