.NET平台MCP
MCP协议成为2025年AI领域重要突破,实现了通过自然语言让AI自动识别和使用工具的标准。本文介绍了MCP的交互原理,包括客户端与服务器的通信流程,并以.NET 8平台为例展示了最小实现方案。作者认为当前AI应用都致力于模仿人类思维,但未来必将出现更适合硅基生命的基础设施和技术。文章最后强调保持开放学习态度的重要性,预示着AI技术发展将突破现有框架。
缘起
2025年3月,mcp这个协议突然爆火刷屏,很多大咖纷纷宣传讲解。这个伟大的协议统一了通过自然语言的描述让ai可以自动认识并正确的使用工具的标准,让agent可以更快走进现实。在当前这个协议的应用已经很广泛了,甚至很多agent框架内部可以把一些开发的函数以mcp的形式进行封装,从而更好地实现对工具的智能调用。
交互原理
包含客户端与服务器的概念,用户、Host、客户端、服务器已经工具之间大概的调用关系如下图:
最小实现
作为开发者,其实最常做的应该就是mcp server的开发,用来丰富ai可以实现的能力。
怎么写msp server已经有很多大佬做过分享了,但都是基于大佬们现有的项目。下面我们以.NET 8平台的api做一个最小实现。
使用的依赖
官方依赖包ModelContextProtocol.AspNetCore,需要留意是preview版本,截止到本文时间,最新版为0.7.0 preview。
- 创建McpTool.cs
[McpServerToolType]
public class McpTool
{
[McpServerTool(Name = "getNow"), Description("Gets the current server time in ISO-8601.")]
public static string Now() => DateTimeOffset.UtcNow.ToString("O");
[McpServerTool(Name = "cityWeather"), Description("Weather using a configurable set of descriptors.")]
public static string GetCityWeather(
[Description("City name")] string city)
{
var choices = Environment.GetEnvironmentVariable("WEATHER_CHOICES") ?? "sunny,rainy,stormy";
var pick = choices.Split(',')[Random.Shared.Next(0, choices.Split(',').Length)];
return $"The weather in {city} is {pick}.";
}
}
- 更改Program.cs
builder.Services.AddMcpServer(
options =>
{
options.InitializationTimeout = TimeSpan.FromSeconds(30);
})
.WithHttpTransport().WithToolsFromAssembly(typeof(McpTool).Assembly).WithPromptsFromAssembly();
//其他代码
var app = builder.Build();
//其他代码
app.MapMcp();
可以了。是不是很简单,如果要注入依赖,在参数的地方注入就好了。目前官方包不仅支持工具,还支持prompt。具体可以看官方链接。
一点废话
其实目前的主流ai应用热点,无论是rag、mcp还是skill,全部都是让硅基模仿碳基。或者说因为使用者是碳基,所以越近似碳基越容易找到应用方向,越容易被重视从而获得资金支持。
但是就像中文歌曲很难在保留原有风味的同时体现日系的细腻,很难体现西语的奔放一样,就算同是碳基,基于人脑的不同语言也有迥异的风格与表达效率;换个比喻,就算使用同样的语言,同样的环境,花一天敲代码达到的社会学效应,恐怕与别人花一小时pmp达到的也是迥异的,这取决于不同人的生存策略导致的不同的表达风格。
综上,我认为目前的道路在ai应用场景探索上是对的,但是我相信在ai未来的发展中,必然会有类似向量数据库这样的更适合硅基生命的infra或者技术的涌现。
保持空杯心态,持续学习吧,朋友们。
更多推荐



所有评论(0)