Delen via


Een minimale MCP-client maken met .NET

In deze quickstart bouwt u een minimale MCP-client (Model Context Protocol) met behulp van de C#-SDK voor MCP. U leert ook hoe u de client configureert om verbinding te maken met een MCP-server, zoals de server die is gemaakt in de quickstart voor het bouwen van een minimale MCP-server .

Vereiste voorwaarden

Opmerking

De MCP-client die u in de secties bouwt, maakt verbinding met de voorbeeld-MCP-server vanuit de quickstart voor het bouwen van een minimale MCP-server . U kunt ook uw eigen MCP-server gebruiken als u uw eigen verbindingsconfiguratie opgeeft.

De .NET-host-app maken

Voer de volgende stappen uit om een .NET-console-app te maken. De app fungeert als host voor een MCP-client die verbinding maakt met een MCP-server.

Het project maken

  1. Navigeer in een terminalvenster naar de map waar u uw app wilt maken en maak een nieuwe console-app met de dotnet new opdracht:

    dotnet new console -n MCPHostApp
    
  2. Navigeer naar de zojuist gemaakte projectmap:

    cd MCPHostApp
    
  3. Voer de volgende opdrachten uit om de benodigde NuGet-pakketten toe te voegen:

    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. Open de projectmap in de gewenste editor, zoals Visual Studio Code:

    code .
    

De app-code toevoegen

Vervang de inhoud van Program.cs met de volgende 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);
}

Met de voorgaande code worden de volgende taken uitgevoerd:

  • Initialiseert een IChatClient abstractie met behulp van de Microsoft.Extensions.AI bibliotheken.
  • Hiermee maakt u een MCP-client en configureert u deze om verbinding te maken met uw MCP-server.
  • Hiermee wordt een lijst met beschikbare hulpprogramma's opgehaald en weergegeven van de MCP-server. Dit is een standaard MCP-functie.
  • Implementeert een gesprekslus waarmee gebruikersprompts worden verwerkt en de hulpprogramma's voor antwoorden worden gebruikt.

De app uitvoeren en testen

Voer de volgende stappen uit om uw .NET-host-app te testen:

  1. Open in een terminalvenster, op de hoofdmap van uw project, en voer vervolgens de volgende opdracht uit om de app te starten:

    dotnet run
    
  2. Zodra de app wordt uitgevoerd, voert u een prompt in om het hulpprogramma ReverseEcho uit te voeren:

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Controleer of de server reageert met het echobericht:

    !revres PCM laminim ,olleH
    

Aan de slag met .NET AI en het Model Context Protocol