Skapa en minimal MCP-klient med hjälp av .NET

I den här snabbstarten skapar du en MCP-klient (Model Context Protocol) med C# SDK för MCP. Du får också lära dig hur du konfigurerar klienten för att ansluta till en MCP-server, till exempel den som skapades i snabbstarten Skapa en minimal MCP-server .

Förutsättningar

Anmärkning

MCP-klienten som du skapar i avsnitten framåt ansluter till MCP-exempelservern från snabbstarten Skapa en minimal MCP-server . Du kan också använda din egen MCP-server om du anger din egen anslutningskonfiguration.

Skapa .NET-värdappen

Slutför följande steg för att skapa en .NET-konsolapp. Appen fungerar som värd för en MCP-klient som ansluter till en MCP-server.

Skapa projektet

  1. I ett terminalfönster navigerar du till katalogen där du vill skapa din app och skapar en ny konsolapp med dotnet new kommandot :

    dotnet new console -n MCPHostApp
    
  2. Navigera till den nyligen skapade projektmappen:

    cd MCPHostApp
    
  3. Kör följande kommandon för att lägga till nödvändiga NuGet-paket:

    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. Öppna projektmappen i valfri redigerare, till exempel Visual Studio Code:

    code .
    

Lägg till appkoden

Ersätt innehållet i Program.cs med följande kod:

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);
}

Föregående kod utför följande uppgifter:

  • Initierar en IChatClient abstraktion med hjälp av biblioteken Microsoft.Extensions.AI .
  • Skapar en MCP-klient och konfigurerar den för att ansluta till MCP-servern.
  • Hämtar och visar en lista över tillgängliga verktyg från MCP-servern, som är en mcp-standardfunktion.
  • Implementerar en konversationsloop som bearbetar användarens frågor och använder verktygen för svar.

Köra och testa appen

Utför följande steg för att testa .NET-värdprogrammet:

  1. Kör följande kommando i ett terminalfönster som är öppet för projektets rot för att starta appen:

    dotnet run
    
  2. När appen har körts anger du en uppmaning om att köra verktyget ReverseEcho :

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Kontrollera att servern svarar med det ekade meddelandet:

    !revres PCM laminim ,olleH
    

Kom igång med .NET AI och Model Context Protocol