Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Microsoft Agent Framework oferece suporte à integração com servidores MCP (Model Context Protocol), permitindo que seus agentes acessem ferramentas e serviços externos. Este guia mostra como se conectar a um servidor MCP e usar suas ferramentas dentro do seu agente.
A versão .Net do Agent Framework pode ser usada em conjunto com o MCP C# SDK oficial para permitir que seu agente chame ferramentas MCP.
O exemplo a seguir mostra como:
- Configurar e servidor MCP
- Recuperar a lista de ferramentas disponíveis do Servidor MCP
- Converter as ferramentas MCP em
AIFunction's para que possam ser adicionadas a um agente - Invoque as ferramentas de um agente usando a chamada de função
Configurando um cliente MCP
Primeiro, crie um cliente MCP que se conecte ao servidor MCP desejado:
// Create an MCPClient for the GitHub server
await using var mcpClient = await McpClientFactory.CreateAsync(new StdioClientTransport(new()
{
Name = "MCPServer",
Command = "npx",
Arguments = ["-y", "--verbose", "@modelcontextprotocol/server-github"],
}));
Neste exemplo:
- Nome: Um nome amigável para sua conexão de servidor MCP
- Comando: O executável para executar o servidor MCP (aqui usando npx para executar um pacote Node.js)
- Argumentos: argumentos de linha de comando passados para o servidor MCP
Recuperando ferramentas disponíveis
Uma vez conectado, recupere a lista de ferramentas disponíveis no servidor MCP:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
O ListToolsAsync() método retorna uma coleção de ferramentas que o servidor MCP expõe. Essas ferramentas são convertidas automaticamente em objetos AITool que podem ser usados pelo seu agente.
Criando um agente com ferramentas MCP
Crie seu agente e forneça as ferramentas MCP durante a inicialização:
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new AzureCliCredential())
.GetChatClient(deploymentName)
.CreateAIAgent(
instructions: "You answer questions related to GitHub repositories only.",
tools: [.. mcpTools.Cast<AITool>()]);
Pontos principais:
- Instruções: Forneça instruções claras que se alinham com os recursos de suas ferramentas MCP
-
Ferramentas: Converta as ferramentas MCP em
AIToolobjetos e espalhe-as na matriz de ferramentas - O agente terá automaticamente acesso a todas as ferramentas fornecidas pelo servidor MCP
Usando o agente
Uma vez configurado, seu agente pode usar automaticamente as ferramentas MCP para atender às solicitações do usuário:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
O agente irá:
- Analise a solicitação do usuário
- Determinar quais ferramentas MCP são necessárias
- Chame as ferramentas apropriadas através do servidor MCP
- Sintetizar os resultados numa resposta coerente
Configuração do ambiente
Certifique-se de configurar as variáveis de ambiente necessárias:
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ??
throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
Gestão de Recursos
Descarte sempre corretamente os recursos do cliente MCP:
await using var mcpClient = await McpClientFactory.CreateAsync(...);
O uso await using garante que a conexão do cliente MCP seja fechada corretamente quando sair do escopo.
Servidores MCP comuns
Os servidores MCP populares incluem:
-
@modelcontextprotocol/server-github: Acesse repositórios e dados do GitHub -
@modelcontextprotocol/server-filesystem: Operações do sistema de arquivos -
@modelcontextprotocol/server-sqlite: Acesso ao banco de dados SQLite
Cada servidor fornece diferentes ferramentas e recursos que estendem a funcionalidade do seu agente. Essa integração permite que seus agentes acessem perfeitamente dados e serviços externos, mantendo os benefícios de segurança e padronização do Model Context Protocol.
O código-fonte completo e as instruções para executar este exemplo estão disponíveis aqui.
O Python Agent Framework fornece suporte abrangente para integração com servidores MCP (Model Context Protocol) por meio de vários tipos de conexão. Isso permite que seus agentes acessem ferramentas e serviços externos sem problemas.
Tipos de ferramentas MCP
O Agent Framework suporta três tipos de conexões MCP:
MCPStdioTool - Servidores MCP Locais
Use MCPStdioTool para se conectar a servidores MCP que são executados como processos locais usando entrada/saída padrão:
import asyncio
from agent_framework import ChatAgent, MCPStdioTool
from agent_framework.openai import OpenAIChatClient
async def local_mcp_example():
"""Example using a local MCP server via stdio."""
async with (
MCPStdioTool(
name="calculator",
command="uvx",
args=["mcp-server-calculator"]
) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(),
name="MathAgent",
instructions="You are a helpful math assistant that can solve calculations.",
) as agent,
):
result = await agent.run(
"What is 15 * 23 + 45?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(local_mcp_example())
MCPStreamableHTTPTool - Servidores HTTP/SSE MCP
Use MCPStreamableHTTPTool para se conectar a servidores MCP via HTTP com Server-Sent Eventos:
import asyncio
from agent_framework import ChatAgent, MCPStreamableHTTPTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential
async def http_mcp_example():
"""Example using an HTTP-based MCP server."""
async with (
AzureCliCredential() as credential,
MCPStreamableHTTPTool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
headers={"Authorization": "Bearer your-token"},
) as mcp_server,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
name="DocsAgent",
instructions="You help with Microsoft documentation questions.",
) as agent,
):
result = await agent.run(
"How to create an Azure storage account using az cli?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(http_mcp_example())
MCPWebsocketTool - Servidores WebSocket MCP
Use MCPWebsocketTool para se conectar a servidores MCP através de conexões WebSocket:
import asyncio
from agent_framework import ChatAgent, MCPWebsocketTool
from agent_framework.openai import OpenAIChatClient
async def websocket_mcp_example():
"""Example using a WebSocket-based MCP server."""
async with (
MCPWebsocketTool(
name="realtime-data",
url="wss://api.example.com/mcp",
) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(),
name="DataAgent",
instructions="You provide real-time data insights.",
) as agent,
):
result = await agent.run(
"What is the current market status?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(websocket_mcp_example())
Servidores MCP populares
Servidores MCP comuns que você pode usar com o Python Agent Framework:
-
Calculadora:
uvx mcp-server-calculator- Cálculos matemáticos -
Sistema de arquivos:
uvx mcp-server-filesystem- Operações do sistema de arquivos -
GitHub:
npx @modelcontextprotocol/server-github- Acesso ao repositório GitHub -
SQLite:
uvx mcp-server-sqlite- Operações de banco de dados
Cada servidor fornece diferentes ferramentas e recursos que estendem a funcionalidade do seu agente, mantendo os benefícios de segurança e padronização do Protocolo de Contexto do Modelo.