Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode estender os recursos do seu agente do Microsoft Foundry conectando-o a ferramentas hospedadas em servidores remotos do PROTOCOLO MCP ( traga seu próprio ponto de extremidade de servidor MCP).
Como usar a ferramenta Protocolo de Contexto de Modelo
Esta seção explica como criar um agente Python com suporte do Microsoft Foundry com uma integração de servidor do MCP (Protocolo de Contexto de Modelo) hospedada. O agente pode utilizar ferramentas MCP gerenciadas e executadas pelo serviço Foundry, permitindo acesso seguro e controlado a recursos externos.
Principais características
- Servidor MCP hospedado: o servidor MCP é hospedado e gerenciado pelo 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 da ferramenta: mecanismos de aprovação configuráveis para invocações da ferramenta MCP
Como funciona
1. Configuração do ambiente
O exemplo requer duas variáveis de ambiente:
-
AZURE_FOUNDRY_PROJECT_ENDPOINT: URL do endpoint do projeto Foundry -
AZURE_FOUNDRY_PROJECT_MODEL_ID: o nome da implantação do modelo (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 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 principais:
- 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
O agente é criado no lado do servidor usando o SDK de Projetos de IA do Azure:
var aiProjectClient = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential());
var agentVersion = await aiProjectClient.AgentAdministrationClient.CreateAgentVersionAsync(
AgentName,
new ProjectsAgentVersionCreationOptions(
new DeclarativeAgentDefinition(model)
{
Instructions = AgentInstructions,
Tools = { mcpTool }
}));
Aviso
DefaultAzureCredential é conveniente para o desenvolvimento, mas requer uma consideração cuidadosa na produção. Em produção, considere o uso de uma credencial específica (por exemplo, ManagedIdentityCredential) para evitar problemas de latência, investigação de credenciais não intencionais e possíveis riscos de segurança de mecanismos de fallback.
Isso cria um agente com versão que:
- Vive no serviço Foundry
- Tem acesso às ferramentas MCP especificadas
- Pode manter o estado da conversa em várias interações
5. Recuperação e execução do agente
O agente criado é recuperado como uma AIAgent instância:
AIAgent agent = aiProjectClient.AsAIAgent(agentVersion);
6. Configuração de Recursos da Ferramenta
O exemplo configura os 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: controles quando a aprovação do usuário é necessária para invocações de ferramentas
-
"never": ferramentas são executadas automaticamente sem aprovação -
"always": todas as invocações de ferramenta exigem 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:
AgentSession session = await agent.CreateSessionAsync();
var response = await agent.RunAsync(
"Please summarize the Azure AI Agent documentation related to MCP Tool calling?",
session,
runOptions);
Console.WriteLine(response);
8. Limpeza
O exemplo demonstra a limpeza de recursos adequada:
await aiProjectClient.AgentAdministrationClient.DeleteAgentAsync(agent.Id);
Dica
Consulte o exemplo de MCP hospedado do .NET Foundry Agent para obter um exemplo completo executável.
O Foundry fornece integração perfeita com servidores MCP (Model Context Protocol) por meio do Python Agent Framework. O serviço gerencia a hospedagem e a execução do servidor MCP, eliminando o gerenciamento de infraestrutura, ao mesmo tempo em que fornece acesso seguro e controlado a ferramentas externas.
Configuração do ambiente
Configure suas credenciais de projeto do Foundry por meio de variáveis de ambiente:
import os
from azure.identity.aio import AzureCliCredential
from agent_framework.foundry import FoundryChatClient
# Required environment variables
os.environ["FOUNDRY_PROJECT_ENDPOINT"] = "https://<your-project>.services.ai.azure.com/api/projects/<project-id>"
os.environ["FOUNDRY_MODEL"] = "gpt-4o-mini"
Integração básica do MCP
Crie um agente do Foundry com ferramentas MCP hospedadas:
import asyncio
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
async def basic_foundry_mcp_example():
"""Basic example of Foundry agent with hosted MCP tools."""
async with AzureCliCredential() as credential:
client = FoundryChatClient(credential=credential)
# Create a hosted MCP tool using the client method
learn_mcp = client.get_mcp_tool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
)
# Create agent with hosted MCP tool
async with Agent(
client=client,
name="MicrosoftLearnAgent",
instructions="You answer questions by searching Microsoft Learn content only.",
tools=[learn_mcp],
) as agent:
# Simple query without approval workflow
result = await agent.run(
"Please summarize the Azure AI Agent documentation related to MCP tool calling?"
)
print(result.text)
if __name__ == "__main__":
asyncio.run(basic_foundry_mcp_example())
Configuração do MCP de várias ferramentas
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:
client = FoundryChatClient(credential=credential)
# Create multiple MCP tools using the client method
learn_mcp = client.get_mcp_tool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
approval_mode="never_require", # Auto-approve documentation searches
)
github_mcp = client.get_mcp_tool(
name="GitHub MCP",
url="https://api.githubcopilot.com/mcp/",
approval_mode="always_require", # Require approval for GitHub operations
headers={"Authorization": "Bearer github-token"},
)
# Create agent with multiple MCP tools
async with Agent(
client=client,
name="MultiToolAgent",
instructions="You can search documentation and access GitHub repositories.",
tools=[learn_mcp, github_mcp],
) as agent:
result = await agent.run(
"Find Azure documentation and also check the latest commits in microsoft/semantic-kernel"
)
print(result.text)
if __name__ == "__main__":
asyncio.run(multi_tool_mcp_example())
O Python Agent Framework fornece integração perfeita com os recursos mcp hospedados do Foundry, permitindo acesso seguro e escalonável a ferramentas externas, mantendo a flexibilidade e o controle necessários para aplicativos de produção.
Exemplo completo
# Copyright (c) Microsoft. All rights reserved.
import asyncio
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
from dotenv import load_dotenv
"""
MCP GitHub Integration with Personal Access Token (PAT)
This example demonstrates how to connect to GitHub's remote MCP server using a Personal Access
Token (PAT) for authentication. The agent can use GitHub operations like searching repositories,
reading files, creating issues, and more depending on how you scope your token.
Prerequisites:
1. A GitHub Personal Access Token with appropriate scopes
- Create one at: https://github.com/settings/tokens
- For read-only operations, you can use more restrictive scopes
2. Environment variables:
- GITHUB_PAT: Your GitHub Personal Access Token (required)
- FOUNDRY_PROJECT_ENDPOINT: Your Foundry project endpoint (required)
- FOUNDRY_MODEL: Your Foundry model deployment name (required)
"""
async def github_mcp_example() -> None:
"""Example of using GitHub MCP server with PAT authentication."""
# 1. Load environment variables from .env file if present
load_dotenv()
# 2. Get configuration from environment
github_pat = os.getenv("GITHUB_PAT")
if not github_pat:
raise ValueError(
"GITHUB_PAT environment variable must be set. Create a token at https://github.com/settings/tokens"
)
# 3. Create authentication headers with GitHub PAT
auth_headers = {
"Authorization": f"Bearer {github_pat}",
}
# 4. Create agent with the GitHub MCP tool using instance method
# The MCP tool manages the connection to the MCP server and makes its tools available
# Set approval_mode="never_require" to allow the MCP tool to execute without approval
client = FoundryChatClient(credential=AzureCliCredential())
github_mcp_tool = client.get_mcp_tool(
name="GitHub",
url="https://api.githubcopilot.com/mcp/",
headers=auth_headers,
approval_mode="never_require",
)
# 5. Create agent with the GitHub MCP tool
async with Agent(
client=client,
name="GitHubAgent",
instructions=(
"You are a helpful assistant that can help users interact with GitHub. "
"You can search for repositories, read file contents, check issues, and more. "
"Always be clear about what operations you're performing."
),
tools=github_mcp_tool,
) as agent:
# Example 1: Get authenticated user information
query1 = "What is my GitHub username and tell me about my account?"
print(f"\nUser: {query1}")
result1 = await agent.run(query1)
print(f"Agent: {result1.text}")
# Example 2: List my repositories
query2 = "List all the repositories I own on GitHub"
print(f"\nUser: {query2}")
result2 = await agent.run(query2)
print(f"Agent: {result2.text}")
if __name__ == "__main__":
asyncio.run(github_mcp_example())