Бөлісу құралы:


Создание минимального клиента MCP с помощью .NET

В этом кратком руководстве описано, как создать клиент с минимальным протоколом контекста модели (MCP) с помощью пакета SDK C# для MCP. Вы также узнаете, как настроить клиент для подключения к серверу MCP, например созданному в кратком руководстве по сборке минимального сервера MCP .

Предпосылки

Замечание

Клиент MCP, который вы создаете в разделах ниже, подключается к примерному серверу MCP из краткого руководства по сборке минимального сервера MCP. Вы также можете использовать собственный сервер MCP, если вы предоставляете собственную конфигурацию подключения.

Создание ведущего приложения .NET

Выполните следующие действия, чтобы создать консольное приложение .NET. Приложение выступает в качестве узла для клиента MCP, который подключается к серверу MCP.

Создание проекта

  1. В окне терминала перейдите в каталог, в котором вы хотите создать приложение, и создайте консольное приложение с dotnet new помощью команды:

    dotnet new console -n MCPHostApp
    
  2. Перейдите в только что созданную папку проекта:

    cd MCPHostApp
    
  3. Выполните следующие команды, чтобы добавить необходимые пакеты 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. Откройте папку проекта в выбранном редакторе, например Visual Studio Code:

    code .
    

Добавление кода приложения

Замените все содержимое Program.cs следующим кодом:

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

// 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.
var transport = new StdioClientTransport(new()
{
    Command = "dotnet run",
    Arguments = ["--project", "<path-to-your-mcp-server-project>"],
    Name = "Minimal MCP Server",
});
McpClient mcpClient = await McpClient.CreateAsync(transport);

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

Приведенный выше код выполняет следующие задачи:

  • Инициализирует абстракцию IChatClient с использованием библиотек Microsoft.Extensions.AI.
  • Создает клиент MCP и настраивает его для подключения к серверу MCP.
  • Извлекает и отображает список доступных средств с сервера MCP, который является стандартной функцией MCP.
  • Реализует цикл беседы, который обрабатывает запросы пользователей и использует средства для ответов.

Запуск и тестирование приложения

Выполните следующие действия, чтобы протестировать хост-приложение .NET:

  1. В окне терминала откройте корень проекта, выполните следующую команду, чтобы запустить приложение:

    dotnet run
    
  2. После запуска приложения введите запрос на запуск средства ReverseEcho :

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Убедитесь, что сервер отвечает отражённым сообщением.

    !revres PCM laminim ,olleH
    

Начните работу с .NET AI и Протоколом контекста модели