Freigeben über


Erstellen eines minimalen MCP-Clients mit .NET

In dieser Schnellstartanleitung erstellen Sie einen minimalen MCP-Client (Model Context Protocol) mit dem C#-SDK für MCP. Außerdem erfahren Sie, wie Sie den Client so konfigurieren, dass eine Verbindung mit einem MCP-Server hergestellt wird, z. B. der im Schnellstart zum Erstellen eines minimalen MCP-Servers erstellten.

Voraussetzungen

Hinweis

Der MCP-Client, den Sie in den folgenden Abschnitten erstellen, stellt eine Verbindung mit dem MCP-Beispielserver aus dem Schnellstart zum Erstellen eines minimalen MCP-Servers her. Sie können auch Ihren eigenen MCP-Server verwenden, wenn Sie Ihre eigene Verbindungskonfiguration bereitstellen.

Erstellen der .NET-Host-App

Führen Sie die folgenden Schritte aus, um eine .NET-Konsolen-App zu erstellen. Die App fungiert als Host für einen MCP-Client, der eine Verbindung mit einem MCP-Server herstellt.

Erstelle das Projekt

  1. Navigieren Sie in einem Terminalfenster zu dem Verzeichnis, in dem Sie Ihre App erstellen möchten, und erstellen Sie eine neue Konsolen-App mit dem dotnet new Befehl:

    dotnet new console -n MCPHostApp
    
  2. Navigieren Sie zum neu erstellten Projektordner:

    cd MCPHostApp
    
  3. Führen Sie die folgenden Befehle aus, um die erforderlichen NuGet-Pakete hinzuzufügen:

    dotnet add package Azure.AI.OpenAI --prerelease
    dotnet add package Azure.Identity
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package ModelContextProtocol --prerelease
    
  4. Öffnen Sie den Projektordner in Ihrem Editor, z. B. Visual Studio Code:

    code .
    

Fügen Sie den App-Code hinzu

Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code.

using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;

// Create an IChatClient using Azure OpenAI.
IChatClient client =
    new ChatClientBuilder(
        new AzureOpenAIClient(new Uri("<your-azure-openai-endpoint>"),
        new DefaultAzureCredential())
        .GetChatClient("gpt-4o").AsIChatClient())
    .UseFunctionInvocation()
    .Build();

// Create the MCP client
// Configure it to start and connect to your MCP server.
IMcpClient mcpClient = await McpClientFactory.CreateAsync(
    new StdioClientTransport(new()
    {
        Command = "dotnet run",
        Arguments = ["--project", "<path-to-your-mcp-server-project>"],
        Name = "Minimal MCP Server",
    }));

// List all available tools from the MCP server.
Console.WriteLine("Available tools:");
IList<McpClientTool> tools = await mcpClient.ListToolsAsync();
foreach (McpClientTool tool in tools)
{
    Console.WriteLine($"{tool}");
}
Console.WriteLine();

// Conversational loop that can utilize the tools via prompts.
List<ChatMessage> messages = [];
while (true)
{
    Console.Write("Prompt: ");
    messages.Add(new(ChatRole.User, Console.ReadLine()));

    List<ChatResponseUpdate> updates = [];
    await foreach (ChatResponseUpdate update in client
        .GetStreamingResponseAsync(messages, new() { Tools = [.. tools] }))
    {
        Console.Write(update);
        updates.Add(update);
    }
    Console.WriteLine();

    messages.AddMessages(updates);
}

Der vorangehende Code führt die folgenden Aufgaben aus:

  • Initialisiert eine IChatClient Abstraktion mithilfe der Microsoft.Extensions.AI Bibliotheken.
  • Erstellt einen MCP-Client und konfiguriert ihn, um eine Verbindung mit Ihrem MCP-Server herzustellen.
  • Ruft eine Liste der verfügbaren Tools vom MCP-Server ab und zeigt sie an, bei dem es sich um eine standardmäßige MCP-Funktion handelt.
  • Implementiert eine Unterhaltungsschleife, die Benutzeraufforderungen verarbeitet und die Tools für Antworten verwendet.

Ausführen und Testen der App

Führen Sie die folgenden Schritte aus, um Ihre .NET-Host-App zu testen:

  1. Führen Sie in einem Terminalfenster, das im Stammverzeichnis Ihres Projekts geöffnet ist, den folgenden Befehl aus, um die App zu starten:

    dotnet run
    
  2. Sobald die App ausgeführt wird, geben Sie eine Eingabeaufforderung ein, um das ReverseEcho-Tool auszuführen:

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Stellen Sie sicher, dass der Server mit der echoierten Nachricht antwortet:

    !revres PCM laminim ,olleH
    

Erste Schritte mit .NET AI und dem Modellkontextprotokoll