Compartilhar via


Criar um cliente MCP mínimo usando o .NET

Neste guia de início rápido, você cria um cliente mínimo do Protocolo de Contexto de Modelo (MCP) usando o SDK do C# para MCP. Você também aprenderá a configurar o cliente para se conectar a um servidor MCP, como o criado no guia de introdução para um servidor MCP mínimo.

Pré-requisitos

Observação

O cliente MCP que você cria nas próximas seções se conecta ao servidor MCP de exemplo do exemplo mínimo do guia de início rápido 'Construir um servidor MCP mínimo'. Você também pode usar seu próprio servidor MCP se fornecer sua própria configuração de conexão.

Criar o aplicativo host .NET

Conclua as etapas a seguir para criar um aplicativo de console do .NET. O aplicativo atua como um host para um cliente MCP que se conecta a um servidor MCP.

Criar o projeto

  1. Em uma janela de terminal, navegue até o diretório onde você deseja criar seu aplicativo e crie um novo aplicativo de console com o dotnet new comando:

    dotnet new console -n MCPHostApp
    
  2. Navegue até a pasta de projeto recém-criada:

    cd MCPHostApp
    
  3. Execute os seguintes comandos para adicionar os pacotes NuGet necessários:

    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. Abra a pasta do projeto no editor de sua escolha, como o Visual Studio Code:

    code .
    

Adicionar o código do aplicativo

Substitua o conteúdo de Program.cs pelo seguinte código:

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

O código anterior realiza as seguintes tarefas:

  • Inicializa uma IChatClient abstração usando as Microsoft.Extensions.AI bibliotecas.
  • Cria um cliente MCP e o configura para se conectar ao servidor MCP.
  • Recupera e exibe uma lista de ferramentas disponíveis do servidor MCP, que é uma função MCP padrão.
  • Implementa um ciclo de conversação que processa os prompts dos usuários e utiliza as ferramentas para as respostas.

Executar e testar o aplicativo

Conclua as seguintes etapas para testar seu aplicativo host .NET:

  1. Em uma janela de terminal aberta para a raiz do projeto, execute o seguinte comando para iniciar o aplicativo:

    dotnet run
    
  2. Depois que o aplicativo estiver em execução, insira um prompt para executar a ferramenta ReverseEcho :

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Verifique se o servidor responde com a mensagem ecoada:

    !revres PCM laminim ,olleH
    

Introdução à IA do .NET e ao Protocolo de Contexto do Modelo