Freigeben über


Verwenden von MCP-Tools mit Foundry Agents

Sie können die Funktionen Ihres Azure AI Foundry-Agents erweitern, indem Sie sie mit Tools verbinden, die auf MCP-Servern (Remote Model Context Protocol) gehostet werden (bringen Sie Ihren eigenen MCP-Serverendpunkt).

So verwenden Sie das Modellkontextprotokoll-Tool

In diesem Abschnitt wird erläutert, wie Sie einen KI-Agent mit Azure Foundry (Azure AI) mit einer gehosteten MCP-Serverintegration (Model Context Protocol) erstellen. Der Agent kann MCP-Tools verwenden, die vom Azure Foundry-Dienst verwaltet und ausgeführt werden, sodass der sichere und kontrollierte Zugriff auf externe Ressourcen ermöglicht wird.

Wichtige Merkmale

  • Gehosteter MCP-Server: Der MCP-Server wird von Azure AI Foundry gehostet und verwaltet, sodass keine Serverinfrastruktur verwaltet werden muss
  • Persistent Agents: Agents werden auf serverseitiger Seite erstellt und gespeichert, sodass zustandsbehaftete Unterhaltungen möglich sind.
  • Toolgenehmigungsworkflow: Konfigurierbare Genehmigungsmechanismen für MCP-Toolaufrufe

Funktionsweise

1. Umgebungseinrichtung

Für das Beispiel sind zwei Umgebungsvariablen erforderlich:

  • AZURE_FOUNDRY_PROJECT_ENDPOINT: Ihre Azure AI Foundry-Projektendpunkt-URL
  • AZURE_FOUNDRY_PROJECT_MODEL_ID: Der Name der Modellbereitstellung (standardmäßig "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. Agent-Konfiguration

Der Agent ist mit bestimmten Anweisungen und Metadaten konfiguriert:

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

Dadurch wird ein Agent erstellt, der auf die Beantwortung von Fragen mit der Microsoft Learn-Dokumentation spezialisiert ist.

3. MCP-Tooldefinition

Im Beispiel wird eine MCP-Tooldefinition erstellt, die auf einen gehosteten MCP-Server verweist:

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

Schlüsselkomponenten:

  • serverLabel: Ein eindeutiger Bezeichner für die MCP-Serverinstanz
  • serverUrl: Die URL des gehosteten MCP-Servers
  • AllowedTools: Gibt an, welche Tools vom MCP-Server, den der Agent verwenden kann

4. Erstellung persistenter Agent

Der Agent wird serverseitig mit dem Azure AI Foundry Persistent Agents SDK erstellt:

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

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

Dadurch wird ein beständiger Agent erstellt, der:

  • Lebt im Azure AI Foundry-Dienst
  • Zugriff auf die angegebenen MCP-Tools
  • Kann den Unterhaltungszustand über mehrere Interaktionen hinweg verwalten

5. Agentabruf und -ausführung

Der erstellte Agent wird als AIAgent Instanz abgerufen:

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

6. Toolressourcenkonfiguration

Im Beispiel werden Toolressourcen mit Genehmigungseinstellungen konfiguriert:

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

Schlüsselkonfiguration:

  • MCPToolResource: Verknüpft die MCP-Serverinstanz mit der Agentausführung
  • RequireApproval: Steuerelemente, wenn die Benutzergenehmigung für Toolaufrufe erforderlich ist
    • "never": Tools werden automatisch ohne Genehmigung ausgeführt
    • "always": Alle Toolaufrufe erfordern eine Benutzergenehmigung.
    • Benutzerdefinierte Genehmigungsregeln können auch konfiguriert werden

7. Agentausführung

Der Agent wird mit einer Frage aufgerufen und mithilfe der konfigurierten MCP-Tools ausgeführt:

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

Im Beispiel wird die richtige Ressourcenbereinigung veranschaulicht:

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

Python Azure AI Foundry MCP Integration

Azure AI Foundry bietet eine nahtlose Integration mit MCP-Servern (Model Context Protocol) über das Python Agent Framework. Der Dienst verwaltet das MCP-Serverhosting und die Ausführung, wodurch die Infrastrukturverwaltung eliminiert und gleichzeitig sicheren, kontrollierten Zugriff auf externe Tools bereitgestellt wird.

Umgebungseinrichtung

Konfigurieren Sie Ihre Azure AI Foundry-Projektanmeldeinformationen über Umgebungsvariablen:

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

Grundlegende MCP-Integration

Erstellen Sie einen Azure AI Foundry-Agent mit gehosteten MCP-Tools:

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

Multitool-MCP-Konfiguration

Verwenden sie mehrere gehostete MCP-Tools mit einem einzigen Agent:

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

Das Python Agent Framework bietet eine nahtlose Integration mit den gehosteten MCP-Funktionen von Azure AI Foundry, wodurch der sichere und skalierbare Zugriff auf externe Tools ermöglicht wird und gleichzeitig die für Produktionsanwendungen erforderliche Flexibilität und Kontrolle gewährleistet ist.

Nächste Schritte