在本快速入门中,你将使用适用于 MCP 的 C# SDK 生成最小模型上下文协议(MCP)客户端。 你还将了解如何将客户端配置为连接到 MCP 服务器,例如在 “生成最小 MCP 服务器 ”快速入门中创建的客户端。
先决条件
注释
在后续部分中即将构建的 MCP 客户端通过 构建一个最小 MCP 服务器快速入门 连接到示例 MCP 服务器。 如果提供自己的连接配置,也可以使用自己的 MCP 服务器。
创建 .NET 主机应用
完成以下步骤以创建 .NET 控制台应用。 该应用充当连接到 MCP 服务器的 MCP 客户端的主机。
创建项目
在终端窗口中,导航到要在其中创建应用的目录,并使用
dotnet new
以下命令创建新的控制台应用:dotnet new console -n MCPHostApp
导航到新建的项目文件夹:
cd MCPHostApp
运行以下命令以添加必要的 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
在所选编辑器中打开项目文件夹,例如 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 主机应用:
在打开到项目的根目录中的终端窗口中,运行以下命令以启动应用:
dotnet run
应用运行后,输入运行 ReverseEcho 工具的提示:
Reverse the following: "Hello, minimal MCP server!"
验证服务器是否响应回显的消息:
!revres PCM laminim ,olleH