当前位置: 首页 > news >正文

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

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

https://www.feishu.cn/community/article?id=7507084665509904403

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

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

MCP Server通信方式支持SSEStdio。

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

一、创建项目

创建Web API项目。

图片

项目名称

图片

勾选配置如下:

图片

项目创建完成后。

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

图片

二、代码实现

2.1 Program.cs

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();

2.2 SSe 实例代码

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

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

2.3 启动项目

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

图片

三、结合MCP Client 测试效果

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

把 Endpoint 的值改为我们自己的: https://localhost:7130/sse

图片

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

图片

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

图片

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

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

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

- End -

推荐阅读

C#实现MCP Client 与 LLM 连接,抓取网页内容功能!

VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。

C#实现自己的MCP Client

http://www.xdnf.cn/news/656425.html

相关文章:

  • 十三: 神经网络的学习
  • 集星云推短视频矩阵系统的定制化与私有化部署方案
  • 将YOLO格式的数据集转换为mmdetection格式
  • 【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题
  • 数据保护在Web3应用中的重要性及其实现
  • vue+ThreeJs 创建过渡圆圈效果
  • 行为型:状态模式
  • SmartSoftHelp 图片资源技术保护可执行添加水印方案---深度优化版:SmartSoftHelp DeepCore XSuite
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(4)
  • 第二十章:数据治理之数据指标(二):数据指标和数据指标体系
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(29):ので
  • “轩辕杯“云盾砺剑CTF挑战赛 Web wp
  • 限流系列:sentinel
  • 哈希表基础知识
  • 选择SEO公司时需要注意哪些关键指标?
  • 多模态大语言模型arxiv论文略读(九十二)
  • 2025.05.26【Wordcloud】词云图绘制技巧
  • pkg-config的功能与作用说明
  • jeecg-boot vue点击左侧菜单跳转无菜单栏的全屏页面
  • PostgreSQL日志管理完整方案(AI)
  • 学习心得(14--16)
  • 使用 Vuex 实现用户注册与登录功能
  • HTML流星雨
  • 充电枪IEC62196/EN 62196测试内容
  • 【PC网上邻居--1】基于Samba协议的局域网文件共享系统设计与实现
  • 行为型:责任链模式
  • 【DCCN】多模态情感分析解耦交叉属性关联网络
  • java虚拟机
  • 第11章 标准化和软件知识产权基础知识,多媒体、图像相关
  • 认识微服务