Partilhar via


Usando ferramentas MCP com agentes de fundição

Você pode estender os recursos do seu agente do Azure AI Foundry conectando-o a ferramentas hospedadas em servidores MCP (Model Context Protocol) remotos (traga seu próprio ponto de extremidade do servidor MCP).

Como usar a ferramenta Model Context Protocol

Esta seção explica como criar um agente de IA usando o Azure Foundry (Azure AI) com uma integração de servidor MCP (Model Context Protocol) hospedada. O agente pode utilizar ferramentas MCP que são gerenciadas e executadas pelo serviço Azure Foundry, permitindo acesso seguro e controlado a recursos externos.

Principais características

  • Servidor MCP hospedado: o servidor MCP é hospedado e gerenciado pelo Azure AI Foundry, eliminando a necessidade de gerenciar a infraestrutura do servidor
  • Agentes persistentes: os agentes são criados e armazenados no lado do servidor, permitindo conversas com estado
  • Fluxo de trabalho de aprovação de ferramentas: mecanismos de aprovação configuráveis para invocações de ferramentas MCP

Como funciona

1. Configuração do ambiente

O exemplo requer duas variáveis de ambiente:

  • AZURE_FOUNDRY_PROJECT_ENDPOINT: URL do ponto de extremidade do projeto do Azure AI Foundry
  • AZURE_FOUNDRY_PROJECT_MODEL_ID: O nome da implantação do modelo (o padrão é "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. Configuração do agente

O agente é configurado com instruções e metadados específicos:

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

Isso cria um agente especializado para responder a perguntas usando a documentação do Microsoft Learn.

3. Definição da ferramenta MCP

O exemplo cria uma definição de ferramenta MCP que aponta para um servidor MCP hospedado:

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

Componentes-chave:

  • serverLabel: Um identificador exclusivo para a instância do servidor MCP
  • serverUrl: A URL do servidor MCP hospedado
  • AllowedTools: Especifica quais ferramentas do servidor MCP o agente pode usar

4. Criação de Agente Persistente

O agente é criado no lado do servidor usando o SDK de Agentes Persistentes do Azure AI Foundry:

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

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

Isso cria um agente persistente que:

  • Vive no serviço Azure AI Foundry
  • Tem acesso às ferramentas MCP especificadas
  • Pode manter o estado da conversação em várias interações

5. Recuperação e Execução do Agente

O agente criado é recuperado como uma AIAgent instância:

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

6. Configuração de recursos da ferramenta

O exemplo configura recursos da ferramenta com configurações de aprovação:

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

Configuração da chave:

  • MCPToolResource: Vincula a instância do servidor MCP à execução do agente
  • RequireApproval: Controla quando a aprovação do usuário é necessária para invocações de ferramentas
    • "never": As ferramentas são executadas automaticamente sem aprovação
    • "always": Todas as invocações de ferramentas requerem aprovação do usuário
    • Regras de aprovação personalizadas também podem ser configuradas

7. Execução do agente

O agente é invocado com uma pergunta e é executado usando as ferramentas MCP configuradas:

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. Limpeza

O exemplo demonstra a limpeza adequada de recursos:

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

Python Azure AI Foundry MCP Integração

O Azure AI Foundry fornece integração perfeita com servidores MCP (Model Context Protocol) por meio do Python Agent Framework. O serviço gerencia a hospedagem e execução do servidor MCP, eliminando o gerenciamento de infraestrutura e fornecendo acesso seguro e controlado a ferramentas externas.

Configuração do ambiente

Configure suas credenciais de projeto do Azure AI Foundry por meio de variáveis de ambiente:

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

Integração MCP básica

Crie um agente do Azure AI Foundry com ferramentas MCP hospedadas:

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

Configuração MCP Multi-Tool

Use várias ferramentas MCP hospedadas com um único agente:

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

O Python Agent Framework fornece integração perfeita com os recursos MCP hospedados do Azure AI Foundry, permitindo acesso seguro e escalável a ferramentas externas, mantendo a flexibilidade e o controle necessários para aplicativos de produção.

Próximos passos