Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz rozszerzyć możliwości swojego agenta usługi Azure AI Foundry, łącząc go z narzędziami hostowanymi na zdalnych serwerach protokołu Model Context Protocol (MCP) poprzez własny punkt końcowy serwera MCP.
Jak używać narzędzia Protokół kontekstu modelu
W tej sekcji wyjaśniono, jak utworzyć agenta sztucznej inteligencji przy użyciu usługi Azure Foundry (Azure AI) z hostowaną integracją serwera protokołu MCP (Model Context Protocol). Agent może korzystać z narzędzi MCP zarządzanych i wykonywanych przez usługę Azure Foundry, co umożliwia bezpieczny i kontrolowany dostęp do zasobów zewnętrznych.
Najważniejsze funkcje
- Hostowany serwer MCP: serwer MCP jest hostowany i zarządzany przez usługę Azure AI Foundry, eliminując konieczność zarządzania infrastrukturą serwera
- Agenci trwały: agenci są tworzone i przechowywane po stronie serwera, co umożliwia wykonywanie konwersacji stanowych
- Przepływ pracy zatwierdzania narzędzi: Konfigurowalne mechanizmy zatwierdzania dla wywołań narzędzi MCP
Jak to działa
1. Konfiguracja środowiska
Przykład wymaga dwóch zmiennych środowiskowych:
-
AZURE_FOUNDRY_PROJECT_ENDPOINT: Adres URL punktu końcowego projektu usługi Azure AI Foundry -
AZURE_FOUNDRY_PROJECT_MODEL_ID: Nazwa wdrożenia modelu (domyślnie to "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. Konfiguracja agenta
Agent jest skonfigurowany przy użyciu określonych instrukcji i metadanych:
const string AgentName = "MicrosoftLearnAgent";
const string AgentInstructions = "You answer questions by searching the Microsoft Learn content only.";
Spowoduje to utworzenie agenta wyspecjalizowanego do odpowiadania na pytania przy użyciu dokumentacji platformy Microsoft Learn.
3. Definicja narzędzia MCP
Przykład tworzy definicję narzędzia MCP wskazującą hostowany serwer MCP:
var mcpTool = new MCPToolDefinition(
serverLabel: "microsoft_learn",
serverUrl: "https://learn.microsoft.com/api/mcp");
mcpTool.AllowedTools.Add("microsoft_docs_search");
Kluczowe składniki:
- serverLabel: unikatowy identyfikator wystąpienia serwera MCP
- serverUrl: adres URL hostowanego serwera MCP
- AllowedTools: określa narzędzia z serwera MCP, których agent może używać
4. Trwałe tworzenie agenta
Agent jest tworzony po stronie serwera przy użyciu zestawu SDK agentów trwałych usługi Azure AI Foundry:
var persistentAgentsClient = new PersistentAgentsClient(endpoint, new DefaultAzureCredential());
var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
model: model,
name: AgentName,
instructions: AgentInstructions,
tools: [mcpTool]);
Ostrzeżenie
DefaultAzureCredential jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie określonego poświadczenia (np ManagedIdentityCredential. ) w celu uniknięcia problemów z opóźnieniami, niezamierzonego sondowania poświadczeń i potencjalnego ryzyka związanego z bezpieczeństwem z mechanizmów rezerwowych.
Spowoduje to utworzenie agenta trwałego, który:
- Mieszka w usłudze Azure AI Foundry
- Ma dostęp do określonych narzędzi MCP
- Może zachować stan konwersacji w wielu interakcjach
5. Pobieranie i wykonywanie agenta
Utworzony agent jest pobierany jako AIAgent wystąpienie:
AIAgent agent = await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id);
6. Konfiguracja zasobów narzędzi
Przykład konfiguruje zasoby narzędzi z ustawieniami zatwierdzania:
var runOptions = new ChatClientAgentRunOptions()
{
ChatOptions = new()
{
RawRepresentationFactory = (_) => new ThreadAndRunOptions()
{
ToolResources = new MCPToolResource(serverLabel: "microsoft_learn")
{
RequireApproval = new MCPApproval("never"),
}.ToToolResources()
}
}
};
Konfiguracja klucza:
- MCPToolResource: Łączy wystąpienie serwera MCP z wykonaniem agenta
-
RequireApproval: określa, kiedy jest wymagane zatwierdzenie przez użytkownika w przypadku wywołań narzędzi
-
"never": Narzędzia są wykonywane automatycznie bez zatwierdzenia -
"always": Wszystkie wywołania narzędzi wymagają zatwierdzenia przez użytkownika - Niestandardowe reguły zatwierdzania można również skonfigurować
-
7. Wykonywanie agenta
Agent jest wywoływany z pytaniem i wykonywany przy użyciu skonfigurowanych narzędzi MCP:
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. Oczyszczanie
W przykładzie pokazano prawidłowe czyszczenie zasobów:
await persistentAgentsClient.Administration.DeleteAgentAsync(agent.Id);
Tip
Zobacz przykłady dla platformy .NET , aby uzyskać pełne przykłady możliwych do uruchomienia.
Usługa Azure AI Foundry zapewnia bezproblemową integrację z serwerami protokołu MCP (Model Context Protocol) za pośrednictwem platformy Agent Framework języka Python. Usługa zarządza hostowaniem i wykonywaniem serwera MCP, eliminując zarządzanie infrastrukturą przy jednoczesnym zapewnieniu bezpiecznego, kontrolowanego dostępu do narzędzi zewnętrznych.
Konfiguracja środowiska
Skonfiguruj poświadczenia projektu usługi Azure AI Foundry za pomocą zmiennych środowiskowych:
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
Podstawowa integracja mcp
Utwórz agenta usługi Azure AI Foundry z hostowanymi narzędziami MCP:
import asyncio
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 client,
):
# 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
agent = client.as_agent(
name="MicrosoftLearnAgent",
instructions="You answer questions by searching Microsoft Learn content only.",
tools=learn_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())
Konfiguracja mcp z wieloma narzędziami
Użyj wielu hostowanych narzędzi MCP z jednym agentem:
async def multi_tool_mcp_example():
"""Example using multiple hosted MCP tools."""
async with (
AzureCliCredential() as credential,
AzureAIAgentClient(async_credential=credential) as client,
):
# 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.github.com/mcp",
approval_mode="always_require", # Require approval for GitHub operations
headers={"Authorization": "Bearer github-token"},
)
# Create agent with multiple MCP tools
agent = client.as_agent(
name="MultiToolAgent",
instructions="You can search documentation and access GitHub repositories.",
tools=[learn_mcp, github_mcp],
)
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())
Struktura agentów języka Python zapewnia bezproblemową integrację z hostowanymi funkcjami MCP usługi Azure AI Foundry, umożliwiając bezpieczny i skalowalny dostęp do narzędzi zewnętrznych przy zachowaniu elastyczności i kontroli wymaganej dla aplikacji produkcyjnych.
Kompletny przykład
# Copyright (c) Microsoft. All rights reserved.
import asyncio
import os
from agent_framework import Agent
from agent_framework.openai import OpenAIResponsesClient
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)
- OPENAI_API_KEY: Your OpenAI API key (required)
- OPENAI_RESPONSES_MODEL_ID: Your OpenAI model ID (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 = OpenAIResponsesClient()
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())