Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Microsoft Agent Framework unterstützt die Integration mit MCP-Servern (Model Context Protocol), sodass Ihre Agents auf externe Tools und Dienste zugreifen können. In diesem Handbuch wird gezeigt, wie Sie eine Verbindung mit einem MCP-Server herstellen und dessen Tools innerhalb Ihres Agents verwenden.
Die .Net-Version von Agent Framework kann zusammen mit dem offiziellen MCP C#-SDK verwendet werden, damit Ihr Agent MCP-Tools aufrufen kann.
Das folgende Beispiel zeigt, wie Sie:
- Einrichten und MCP-Server
- Abrufen der Liste der verfügbaren Tools vom MCP-Server
- Konvertieren der MCP-Tools in
AIFunction's, damit sie einem Agent hinzugefügt werden können - Aufrufen der Tools von einem Agent mithilfe von Funktionsaufrufen
Einrichten eines MCP-Clients
Erstellen Sie zunächst einen MCP-Client, der eine Verbindung mit Ihrem gewünschten MCP-Server herstellt:
// 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"],
}));
In diesem Beispiel:
- Name: Ein Anzeigename für Ihre MCP-Serververbindung
- Befehl: Die ausführbare Datei zum Ausführen des MCP-Servers (hier mithilfe von npx zum Ausführen eines Node.js-Pakets)
- Argumente: Befehlszeilenargumente, die an den MCP-Server übergeben werden
Abrufen verfügbarer Tools
Rufen Sie nach der Verbindung die Liste der tools ab, die vom MCP-Server verfügbar sind:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
Die ListToolsAsync() Methode gibt eine Sammlung von Tools zurück, die der MCP-Server verfügbar macht. Diese Tools werden automatisch in AITool-Objekte konvertiert, die von Ihrem Agent verwendet werden können.
Erstellen eines Agents mit MCP-Tools
Erstellen Sie Ihren Agent, und stellen Sie während der Initialisierung die MCP-Tools bereit:
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>()]);
Die wichtigsten Punkte:
- Anweisungen: Stellen Sie klare Anweisungen bereit, die den Funktionen Ihrer MCP-Tools entsprechen
-
Tools: Umwandeln der MCP-Tools in
AIToolObjekte und Verteilen in das Toolsarray - Der Agent hat automatisch Zugriff auf alle Tools, die vom MCP-Server bereitgestellt werden.
Verwenden des Agents
Nach der Konfiguration kann Ihr Agent die MCP-Tools automatisch verwenden, um Benutzeranforderungen zu erfüllen:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
Der Agent führt folgende Aktionen aus:
- Analysieren der Anforderung des Benutzers
- Ermitteln, welche MCP-Tools erforderlich sind
- Aufrufen der entsprechenden Tools über den MCP-Server
- Synthetisieren der Ergebnisse in eine kohärente Antwort
Umgebungskonfiguration
Stellen Sie sicher, dass Sie die erforderlichen Umgebungsvariablen einrichten:
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";
Ressourcenverwaltung
Immer ordnungsgemäß verwerfen MCP-Clientressourcen:
await using var mcpClient = await McpClientFactory.CreateAsync(...);
Die Verwendung await using stellt sicher, dass die MCP-Clientverbindung ordnungsgemäß geschlossen wird, wenn sie nicht mehr gültig ist.
Allgemeine MCP-Server
Beliebte MCP-Server umfassen:
-
@modelcontextprotocol/server-github: Zugreifen auf GitHub-Repositorys und -Daten -
@modelcontextprotocol/server-filesystem: Dateisystemvorgänge -
@modelcontextprotocol/server-sqlite: SQLite-Datenbankzugriff
Jeder Server bietet verschiedene Tools und Funktionen, die die Funktionalität Ihres Agents erweitern. Diese Integration ermöglicht Es Ihren Agents, nahtlos auf externe Daten und Dienste zuzugreifen und gleichzeitig die Sicherheits- und Standardisierungsvorteile des Modellkontextprotokolls aufrechtzuerhalten.
Der vollständige Quellcode und anweisungen zum Ausführen dieses Beispiels finden Sie hier.
Das Python Agent Framework bietet umfassende Unterstützung für die Integration mit MCP-Servern (Model Context Protocol) über mehrere Verbindungstypen. Auf diese Weise können Ihre Agents nahtlos auf externe Tools und Dienste zugreifen.
MCP-Tooltypen
Das Agent Framework unterstützt drei Arten von MCP-Verbindungen:
MCPStdioTool - Lokale MCP-Server
Wird MCPStdioTool verwendet, um eine Verbindung mit MCP-Servern herzustellen, die als lokale Prozesse mit Standardeingabe/Ausgabe ausgeführt werden:
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 - HTTP/SSE MCP-Server
Wird MCPStreamableHTTPTool verwendet, um eine Verbindung mit MCP-Servern über HTTP mit Server-Sent-Ereignissen herzustellen:
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 - WebSocket MCP-Server
Wird zum Herstellen einer Verbindung mit MCP-Servern über WebSocket-Verbindungen verwendet MCPWebsocketTool :
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())
Beliebte MCP-Server
Allgemeine MCP-Server, die Sie mit Python Agent Framework verwenden können:
-
Rechner:
uvx mcp-server-calculator- Mathematische Berechnungen -
Dateisystem:
uvx mcp-server-filesystem- Dateisystemvorgänge -
GitHub:
npx @modelcontextprotocol/server-github- GitHub-Repositoryzugriff -
SQLite:
uvx mcp-server-sqlite- Datenbankvorgänge
Jeder Server bietet verschiedene Tools und Funktionen, die die Funktionalität Ihres Agents erweitern und gleichzeitig die Sicherheits- und Standardisierungsvorteile des Modellkontextprotokolls beibehalten.