Compartir a través de


Creación de un cliente MCP mínimo mediante .NET

En este inicio rápido, creará un cliente mínimo de Protocolo de contexto de modelo (MCP) mediante el SDK de C# para MCP. También aprenderá a configurar el cliente para conectarse a un servidor MCP, como el creado en el inicio rápido Compilación de un servidor MCP mínimo .

Prerrequisitos

Nota:

El cliente MCP que construirás en las siguientes secciones se conectará al servidor MCP de ejemplo del inicio rápido Compilar un servidor MCP mínimo. También puede usar su propio servidor MCP si proporciona su propia configuración de conexión.

Creación de la aplicación host de .NET

Complete los pasos siguientes para crear una aplicación de consola de .NET. La aplicación actúa como host para un cliente MCP que se conecta a un servidor MCP.

Creación del proyecto

  1. En una ventana de terminal, vaya al directorio donde desea crear la aplicación y cree una aplicación de consola con el dotnet new comando :

    dotnet new console -n MCPHostApp
    
  2. Vaya a la carpeta del proyecto recién creada:

    cd MCPHostApp
    
  3. Ejecute los siguientes comandos para agregar los paquetes NuGet necesarios:

    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 la carpeta del proyecto en el editor que prefiera, como Visual Studio Code:

    code .
    

Adición del código de la aplicación

Reemplace el contenido de Program.cs por el código siguiente:

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

El código anterior realiza las siguientes tareas:

  • Inicializa una IChatClient abstracción mediante las Microsoft.Extensions.AI librerías.
  • Crea un cliente MCP y lo configura para conectarse al servidor MCP.
  • Recupera y muestra una lista de herramientas disponibles del servidor MCP, que es una función de MCP estándar.
  • Implementa un bucle conversacional que procesa las solicitudes del usuario y utiliza las herramientas para las respuestas.

Ejecución y prueba de la aplicación

Complete los pasos siguientes para probar la aplicación host de .NET:

  1. En una ventana de terminal abierta a la raíz del proyecto, ejecute el siguiente comando para iniciar la aplicación:

    dotnet run
    
  2. Cuando la aplicación esté ejecutándose, ingrese un mensaje para ejecutar la herramienta ReverseEcho:

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Compruebe que el servidor responde con el mensaje de eco:

    !revres PCM laminim ,olleH
    

Introducción a .NET AI y al protocolo de contexto de modelo