C#实现SSE通信方式的MCP Server
前面的课程,我们使用MCP Server,用的是网络上魔搭提供的。
下面我们一起来实现,用C#实现自己的MCP Server。
MCP Server通信方式支持SSE、Stdio。
下面我们先实现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#实现SSE通信方式的MCP Server的更多相关文章
- Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议
Nacos是阿里巴巴开源的服务发现与配置管理项目,本次发布的1.1.4版本,主要带来的是与Istio的对接功能,使用的是Istio最新的MCP协议.本文将介绍包括这个功能在内的新版本发布的功能. 升级 ...
- 基于Server-Sent Event的简单在线聊天室
Web即时通信 所谓Web即时通信,就是说我们可以通过一种机制在网页上立即通知用户一件事情的发生,是不需要用户刷新网页的.Web即时通信的用途有很多,比如实时聊天,即时推送等.如当我们在登陆浏览知乎时 ...
- web服务器tomcat入门实战
一.tomcat介绍1.1 引入tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Su ...
- 05点睛Spring MVC 4.1-服务器端推送
转发:https://www.iteye.com/blog/wiselyman-2214626 5.1 服务器端推送 SSE(server send event)是一种服务器端向浏览器推送消息的技术, ...
- SpringCloud入门系列0-Nacos的安装与配置
背景 工作有一些年头了,自从19年初彻底转了java(这又是另一篇心酸的故事),突然感觉自己荒废了好几年(不是说.net不好,而是回顾自己这几年做的很多东西都浮于表面,有时候弄成很忙的样子,回头看看自 ...
- CentOS 7 Nacos 集群搭建
环境 CentOS 7.4 MySQL 5.7 nacos-server-1.1.2 本次安装的软件全部在 /home/javateam 目录下. MySQL 安装 首先下载 rpm 安装包,地址:h ...
- 我在组内的Nacos分享
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. Nacos简介 Nacos : Naming and Configuration Servic ...
- Comet之SSE(Server - Sent - Envent,服务器发送事件)
1.SSE API 先要创建一个新的EventSource对象,并传进一个入口点: var source = new EventSource("myenvent.php"); △: ...
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...
- Ajax、Comet、Websocket、SSE
从 http 协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式 ...
随机推荐
- ARC165F题解
前言 \(2024.10.19\) 日校测 \(T4\),思维太庙,被薄纱了,遂哭弱,写题解以记之. 简要题意 给你一个长度为 \(2n\) 的序列满足 \(\forall a_i\in[1,n]\) ...
- python基础-函数(lambda表达式、函数作参数、内置函数、推导式)和pip
函数进阶 今日概要: 函数名就是一个变量(扩展) 匿名函数(lambda表达式) 重点内置函数--python内置函数 推导式(一行代码生成数据) 1. 函数名就是变量 def func(): pas ...
- 基于注意力机制与改进TF-IDF的推荐算法
前言 本篇文章是2020年8月发表于<计算机工程>的一篇期刊论文,文章名称<基于注意力机制与改进TF-IDF的推荐算法>. 文章针对传统推荐系统主要依赖用户对物品的评分数据而无 ...
- MyCat分库分表-主从
一.MySQL数据同步 1.主节点配置,log-bin,指定文件名称 2.主节点配置server-id,默认为1 vim /etc/my.cof 在[mysqld]下添加如下配置 log-bin=im ...
- C# Attribute 特性
https://blog.csdn.net/FantasiaX/article/details/1636913
- windows在Apple Developer创建打包证书的简单教程
在uniapp上做ios开发,其开发证书必须在Apple Developer(苹果开发者中心)上使用自己个人或自己公司的开发者账号,创建打包的证书,然后上架的时候使用同一个账号上架Apple Deve ...
- QWidget的isHidden和isVisible
文章目录 QWidget的isHidden和isVisible 问题的出现 QWidget的show()函数 QWidget的isVisible和isHidden 源码追溯 QWidget的isHid ...
- Golang 入门 : 语言环境安装
下载介绍 在go的官方网址上下载go最新版本https://golang.google.cn/dl/,或者在 Go 的中文网上下载https://studygolang.com/dl,两个网站打开的内 ...
- RocketMq安装踩坑:docker0网桥冲突
前言 最近项目用到了RocketMq,需要在Cento7系统上搭建一套集群环境用于测试.整个的环境搭建过程中,我遇到了一个比较初级的问题:启动RocketMq的broker失败. 问题经过 首先我 ...
- 万字长文详解SIFT特征提取
本文对 SIFT 算法进行了详细梳理.SIFT即尺度不变特征变换(Scale-Invariant Feature Transform),是一种用于检测和描述图像局部特征的算法.该算法对图像的尺度和旋转 ...