Udostępnij przez


Tworzenie minimalnego klienta MCP przy użyciu platformy .NET

W tym szybkim rozpoczęciu utworzysz minimalny klient protokołu MCP (Model Context Protocol) przy użyciu zestawu SDK języka C# dla MCP. Dowiesz się również, jak skonfigurować klienta w celu nawiązania połączenia z serwerem MCP, takim jak utworzony w przewodniku Szybki start Tworzenie minimalnego serwera MCP .

Wymagania wstępne

Uwaga / Notatka

Klient MCP, który zostanie opracowany w kolejnych sekcjach, łączy się z przykładowym serwerem MCP z szybkiego przewodnika Tworzenie minimalnego serwera MCP. Jeśli podasz własną konfigurację połączenia, możesz również użyć własnego serwera MCP.

Tworzenie aplikacji hosta platformy .NET

Wykonaj poniższe kroki, aby utworzyć aplikację konsolową platformy .NET. Aplikacja działa jako host klienta MCP, który łączy się z serwerem MCP.

Tworzenie projektu

  1. W oknie terminalu przejdź do katalogu, w którym chcesz utworzyć aplikację, i utwórz nową aplikację konsolową za dotnet new pomocą polecenia :

    dotnet new console -n MCPHostApp
    
  2. Przejdź do nowo utworzonego folderu projektu:

    cd MCPHostApp
    
  3. Uruchom następujące polecenia, aby dodać niezbędne pakiety NuGet:

    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. Otwórz folder projektu w wybranym edytorze, na przykład Visual Studio Code:

    code .
    

Dodawanie kodu aplikacji

Zastąp zawartość Program.cs następującym kodem:

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

Powyższy kod wykonuje następujące zadania:

  • Inicjuje IChatClient abstrakcję za pomocą Microsoft.Extensions.AI bibliotek.
  • Tworzy klienta MCP i konfiguruje go w celu nawiązania połączenia z serwerem MCP.
  • Pobiera i wyświetla listę dostępnych narzędzi z serwera MCP, który jest standardową funkcją MCP.
  • Implementuje pętlę konwersacyjną, która przetwarza zapytania użytkownika i używa narzędzi do generowania odpowiedzi.

Uruchamianie i testowanie aplikacji

Wykonaj następujące kroki, aby przetestować aplikację hosta .NET.

  1. W oknie terminalu otwartym w katalogu głównym projektu uruchom następujące polecenie, aby uruchomić aplikację:

    dotnet run
    
  2. Po uruchomieniu aplikacji wprowadź monit o uruchomienie narzędzia ReverseEcho :

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Sprawdź, czy serwer odpowiada z odpowiednim komunikatem zwrotnym.

    !revres PCM laminim ,olleH
    

Zacznij korzystać z .NET AI i protokołu kontekstu modelu