C#实现SSE通信方式的MCP Server

360影视 国产动漫 2025-05-26 10:31 3

摘要:我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,领取.Net学习资料!

前面的课程,我们使用MCP Server,用的是网络上魔搭提供的。

下面我们一起来实现,用C#实现自己的MCP Server。

MCP Server通信方式支持SSEStdio。

下面我们先实现SSE通信方式的MCP Server。

创建Web API项目。

项目名称

勾选配置如下:

项目创建完成后。

添加依赖库:ModelContextProtocol.AspNetCore,版本为:0.1.0-preview.14。添加的时候记得勾选:包括预发行版。

Program.cs代码修改如下,注册 McpServer 相关服务、并自动扫描 tool 工具列表。

var builder = WebApplication.CreateBuilder(args);builder.Services .AddMcpServer // 注册 McpServer 相关服务 .WithHttpTransport // 使用HTTP传输的MCP请求和会话 .WithToolsFromAssembly // 从程序集中扫描添加 tool工具列表 ;var app = builder.Build;app.UseHttpsRedirection;// 注册MCP协议终结点app.MapMcp;app.Run;

添加类:DemoTool

DemoTool的代码如下,这里有几个关键点,通过为类、方法、参数来添加标识,这样才能被识别 MCP tool:

1、[McpServerToolType] 标记此类为 MCP 服务器工具类型

2、[McpServerTool] 标记的方法会被框架识别并注册为可用工具。

3、[Description("获取服务器时间")] 描述方法的工具。

4、[Description("格式")] 描述参数。

// 服务器上下文模型相关的协议定义using ModelContextProtocol.Server;// 用于支持组件属性描述等功能using System.ComponentModel;namespace MCPServer.SSE{ // 标记此类为 MCP 服务器工具类型 [McpServerToolType] public static class DemoTool { /// /// 服务器工具方法,用于获取当前服务器时间。 /// ///

时间格式字符串,默认值为 "yyyy-MM-dd HH:mm:ss"

/// 当前服务器时间按照指定格式转换后的字符串 ///标记的方法会被框架识别并注册为可用工具。 [McpServerTool, Description("获取服务器时间")] public static string ServerTime([Description("格式")] string format = "yyyy-MM-dd HH:mm:ss") { return DateTime.Now.ToString(format); } }}

以上代码功能,根据客户端要求的格式,返回服务器时间。

运行项目如下,url 后面加 /sse,这个是默认地址。

使用上一个课程:实现MCP Client 与 LLM 连接,实现抓取网页内容功能! 的Client示例。

把 Endpoint 的值改为我们自己的:

运行MCP Client,成功连接MCP Server,并打印出工具列表。

测试效果如下,根据用户要求的格式,返回对应格式的时间。

好了,今天就分享到这边!

下一个课程:实现Stdio通信方式的MCP Server。

文中示例代码:https://pan.quark.cn/s/e188ecb7eae0

该专栏优先在飞书发布,欢迎收藏关注!

来源:编程乐趣一点号

相关推荐