Condividi tramite


Creare un client MCP minimo con .NET

In questa guida introduttiva si crea un client MCP (Model Context Protocol) minimo usando C# SDK per MCP. Si apprenderà anche come configurare il client per connettersi a un server MCP, ad esempio quello creato nella guida introduttiva Creare un server MCP minimo .

Prerequisiti

Annotazioni

Il client MCP creato nelle sezioni precedenti si connette al server MCP di esempio della guida introduttiva Creare un server MCP minimo . È anche possibile usare il proprio server MCP se si specifica una configurazione di connessione personalizzata.

Creare l'applicazione host per il framework .NET

Completare i passaggi seguenti per creare un'app console .NET. L'app funge da host per un client MCP che si connette a un server MCP.

Creare il progetto

  1. In una finestra del terminale passare alla directory in cui si vuole creare l'app e creare una nuova app console con il dotnet new comando :

    dotnet new console -n MCPHostApp
    
  2. Passare alla cartella del progetto appena creata:

    cd MCPHostApp
    
  3. Eseguire i comandi seguenti per aggiungere i pacchetti NuGet necessari:

    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. Aprire la cartella del progetto nell'editor preferito, ad esempio Visual Studio Code:

    code .
    

Aggiungere il codice dell'app

Sostituire il contenuto di Program.cs con il codice seguente:

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

Il codice precedente esegue le attività seguenti:

  • Inizializza un'astrazione IChatClient utilizzando le Microsoft.Extensions.AI librerie.
  • Crea un client MCP e lo configura per la connessione al server MCP.
  • Recupera e visualizza un elenco di strumenti disponibili dal server MCP, che è una funzione MCP standard.
  • Implementa un ciclo di conversazione che elabora le richieste degli utenti e usa gli strumenti per le risposte.

Eseguire e testare l'app

Completare i passaggi seguenti per testare l'app host .NET:

  1. In una finestra del terminale aperta alla radice del progetto eseguire il comando seguente per avviare l'app:

    dotnet run
    
  2. Dopo l'esecuzione dell'app, immettere un prompt per eseguire lo strumento ReverseEcho :

    Reverse the following: "Hello, minimal MCP server!"
    
  3. Verificare che il server risponda con il messaggio ricevuto:

    !revres PCM laminim ,olleH
    

Introduzione all'intelligenza artificiale .NET e al protocollo del contesto del modello