次の方法で共有


.NET を使用して最小限の MCP クライアントを作成する

このクイック スタートでは、MCP 用 C# SDK を使用して、最小限のモデル コンテキスト プロトコル (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;

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

上記のコードでは、次のタスクを実行します。

  • 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 とモデル コンテキスト プロトコルの概要