惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
腾讯CDC
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
WordPress大学
WordPress大学
雷峰网
雷峰网
小众软件
小众软件
D
DataBreaches.Net
V
Visual Studio Blog
博客园 - Franky
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
博客园 - 聂微东
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
云风的 BLOG
云风的 BLOG

博客园 - chingho

OpenClaw 不会安装的,一键安装包来了,代码开源! Windows下安装 Ollama + OpenClaw + 飞书,实现真正本地部署! 微软新利器!winapp CLI:一键打包、调试、集成 Windows 原生能力 告别代码!我用Trae氛围编程的方式,开发了一款公众号文章同步插件! C#实现Stdio通信方式的MCP Server C#实现MCP Client 与 LLM 连接,抓取网页内容功能! VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。 C#实现自己的MCP Client 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略来了! Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能 Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5 OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库 websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库 Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能 BotSharp:又一个.Net重磅AI开源项目,.Net在AI领域开始崛起! DateTimeExtensions:一个轻量C#的开源DateTime扩展方法库 Bogus:.NET的假数据生成利器 Coravel:一个可轻松实现任务调度、队列、邮件发送的开源项目 .Net程序员机会来了,微软官方新推出一个面向Windows开发者本地运行AI模型的开源工具
C#实现SSE通信方式的MCP Server
chingho · 2025-05-27 · via 博客园 - chingho

前面的课程,我们使用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

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

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

- End -

推荐阅读

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

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

C#实现自己的MCP Client