使用MCP C# SDK开发MCP Server + Client
- 作者: 五速梦信息网
- 时间: 2026年04月20日 04:48
chatHistory = [
new(ChatRole.System, """
You are a helpful assistant delivering time in one sentence
in a short format, like 'It is 10:08 in Paris, France.'
"""),
]; // Core Part: Get AI Tools from MCP Server var mcpTools = await mcpClient.ListToolsAsync(); var chatOptions = new ChatOptions() {
Tools = [..mcpTools]
}; // Prompt the user for a question. Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($“Assistant> How can I assist you today?”); while (true) {
// Read the user question.
Console.ForegroundColor = ConsoleColor.White;
Console.Write("User> ");
var question = Console.ReadLine();
// Exit the application if the user didn't type anything.
if (!string.IsNullOrWhiteSpace(question) && question.ToUpper() == "EXIT")
break;
chatHistory.Add(new ChatMessage(ChatRole.User, question));
Console.ForegroundColor = ConsoleColor.Green;
var response = await chatClient.GetResponseAsync(chatHistory, chatOptions);
var content = response.ToString();
Console.WriteLine($"Assistant> {content}");
chatHistory.Add(new ChatMessage(ChatRole.Assistant, content));
Console.WriteLine(); }
最后的效果如下图所示:

# 创建一个基于ASP.NET的MCP Server
除了使用标准的IO协议,我们还可以实现一个基于ASP.NET Core的MCP SSE Server,顾名思义它就是使用SSE传输方式。
(1)创建一个.NET 8.0 ASP.NET WebAPI应用,假设命名为:EDT.McpServer.WebHost
(2)安装MCP SDK
```csharp
ModelContextProtocol 0.1.0-preview.4
ModelContextProtocol.AspNetCore 0.1.0-preview.4
(3)创建一个Tools目录,然后添加一个TimeTool.cs 这里和上面的一样,不再赘述。 (4)修改Program.cs完成MCP Server配置:
using EDT.McpServer.WebHost.Tools;
using ModelContextProtocol.AspNetCore;
try
{
Console.WriteLine("Starting MCP Server...");
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMcpServer().WithToolsFromAssembly();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapGet("/", () => "Hello MCP Server!");
app.MapMcp();
app.Run();
return 0;
}
catch (Exception ex)
{
Console.WriteLine($"Host terminated unexpectedly : {ex.Message}");
return 1;
}
可以看到,就是这么简单,通过MapMcp实现了/sse端点的映射。后续MCP Client要连接的就是这个/sse的端点。 (5)这时,你就可以把这个ASP.NET WebAPI应用启动起来,假设我们这里是 https://localhost:8443,你就可以通过下面的一点点修改,让之前的这个MCP Client连接上这个MCP Server:
await using var mcpClient = await McpClientFactory.CreateAsync(new()
{
Id = "time",
Name = "Time MCP Server",
TransportType = TransportTypes.Sse,
Location = "https://localhost:8443/sse"
});
可以看到,仅仅修改TransportType为SSE,然后指定Server的BaseUrl即可。
OK,让我们再来运行一下Client看看能否再次成功调用Tool:
看来这次使用SSE传输方式也能调用成功了!Perfect!
小结
本文介绍了MCP的基本概念和工作模式,然后演示了如何通过MCP C# SDK创建MCP Server和Client,以及基于ASP.NET WebAPI创建SSE Server,相信会对你有所帮助。 如果你也是.NET程序员希望参与AI应用的开发,那就快快了解和使用基于Microsoft.Extensioins.AI + MCP C# SDK 的生态组件库吧。
示例源码
GitHub:点此查看
参考内容
MCP C# SDK Samples 《MCP C# Sample Demos》
相关文章
-
使用libdivide加速整数除法运算
使用libdivide加速整数除法运算
- 互联网
- 2026年04月20日
-
使用C#构建一个同时问多个LLM并总结的小工具
使用C#构建一个同时问多个LLM并总结的小工具
- 互联网
- 2026年04月20日
-
史上最霸气运动会口号
史上最霸气运动会口号
- 互联网
- 2026年04月20日
-
使用PHPStorm自带的Git版本控制,出现Git.exe占用内存过高
使用PHPStorm自带的Git版本控制,出现Git.exe占用内存过高
- 互联网
- 2026年04月20日
-
使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)
使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)
- 互联网
- 2026年04月20日
-
使用Vite创建一个动态网页的前端项目
使用Vite创建一个动态网页的前端项目
- 互联网
- 2026年04月20日








