找回密码
 立即注册
首页 业界区 业界 C#实现SSE通信方式的MCP Server

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

客臂渐 2025-6-3 00:30:47
前面的课程,我们使用MCP Server,用的是网络上魔搭提供的。
下面我们一起来实现,用C#实现自己的MCP Server。
MCP Server通信方式支持SSEStdio。
下面我们先实现SSE通信方式的MCP Server。
一、创建项目

创建Web API项目。
1.png

项目名称
2.png

勾选配置如下:
3.png

项目创建完成后。
添加依赖库:ModelContextProtocol.AspNetCore,版本为:0.1.0-preview.14。添加的时候记得勾选:包括预发行版。
4.png

二、代码实现

2.1 Program.cs

Program.cs代码修改如下,注册 McpServer 相关服务、并自动扫描 tool 工具列表。
  1. var builder = WebApplication.CreateBuilder(args);
  2. builder.Services
  3.   .AddMcpServer() // 注册 McpServer 相关服务
  4.   .WithHttpTransport() // 使用HTTP传输的MCP请求和会话
  5.   .WithToolsFromAssembly() // 从程序集中扫描添加 tool工具列表
  6.     ;
  7. var app = builder.Build();
  8. app.UseHttpsRedirection();
  9. // 注册MCP协议终结点
  10. app.MapMcp();
  11. app.Run();
复制代码
2.2 SSe 实例代码

添加类:DemoTool
5.png

DemoTool的代码如下,这里有几个关键点,通过为类、方法、参数来添加标识,这样才能被识别 MCP tool:
1、[McpServerToolType] 标记此类为 MCP 服务器工具类型
2、[McpServerTool] 标记的方法会被框架识别并注册为可用工具。
3、[Description("获取服务器时间")]  描述方法的工具。
4、[Description("格式")]   描述参数。
  1. // 服务器上下文模型相关的协议定义
  2. using ModelContextProtocol.Server;
  3. // 用于支持组件属性描述等功能
  4. using System.ComponentModel;
  5. namespace MCPServer.SSE
  6. {
  7.     // 标记此类为 MCP 服务器工具类型
  8.     [McpServerToolType]
  9.     public static class DemoTool
  10.     {
  11.         /// <summary>
  12.         /// 服务器工具方法,用于获取当前服务器时间。
  13.         /// </summary>
  14.         /// <param name="format">时间格式字符串,默认值为 "yyyy-MM-dd HH:mm:ss"</param>
  15.         /// <returns>当前服务器时间按照指定格式转换后的字符串</returns>
  16.         ///标记的方法会被框架识别并注册为可用工具。
  17.         [McpServerTool, Description("获取服务器时间")]
  18.         public static string ServerTime([Description("格式")] string format = "yyyy-MM-dd HH:mm:ss")
  19.         {
  20.             return DateTime.Now.ToString(format);
  21.         }
  22.     }
  23. }
复制代码
以上代码功能,根据客户端要求的格式,返回服务器时间。
2.3 启动项目

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

三、结合MCP Client 测试效果

使用上一个课程:实现MCP Client 与 LLM 连接,实现抓取网页内容功能! 的Client示例。
把 Endpoint 的值改为我们自己的: https://localhost:7130/sse
7.png

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

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

好了,今天就分享到这边!
下一个课程:实现Stdio通信方式的MCP Server。
文中示例代码:https://pan.quark.cn/s/e188ecb7eae0
该专栏优先在飞书发布,欢迎收藏关注!
https://www.feishu.cn/community/article?id=7507084665509904403
- End -
推荐阅读
C#实现MCP Client 与 LLM 连接,抓取网页内容功能!
VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。
C#实现自己的MCP Client

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册