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

SpringBoot改造MCP服务器(StreamableHTTP)

项目地址: https://gitee.com/kylewka/smart-ai

1 项目说明
MCP(Model Context Protocol)协议是一个用于 AI 模型和工具之间通信的标准协议。随着 AI 应用变得越来越复杂并被广泛部署,原有的通信机制面临着一系列挑战。

近期 MCP 仓库的 PR #206【1】 引入了一个全新的 Streamable HTTP 传输层替代原有的 HTTP+SSE 传输层

Streamable HTTP 相比 HTTP + SSE 具有更好的稳定性,在高并发场景下表现更优。
Streamable HTTP 在性能方面相比 HTTP + SSE 具有明显优势,响应时间更短且更稳定。
Streamable HTTP 客户端实现相比 HTTP + SSE 更简单,代码量更少,维护成本更低。
本文介绍了SpringBoot如何实现MCP StreamableHTTP 服务器,并且使用 Cherry Studio 客户端测试MCP服务器

Streamable HTTP 支持无状态的服务和有状态的服务,目前的大部分场景无状态的 Streamable HTTP 的可以解决,通过对比两种传输方案的客户端实现代码,可以直观地看到无状态的 Streamable HTTP 的客户端实现简洁性。

由于官方的 mcp-java-sdk 还未支持 StreamableHTTP 模式,同时需要研究以原有项目提供MCP服务,故设计了该项目

项目已经封装为 springboot 的 starter 组件,仅需添加几个注解就能实现MCP服务器方法

项目地址: https://gitee.com/kylewka/smart-ai
2 使用说明
2.1 安装教程
确保您的开发环境已安装 JDK 8 或更高版本以及 Maven
克隆本仓库到本地:git clone https://gitee.com/kylewka/smart-ai.git​
进入项目根目录,执行 Maven 构建命令:mvn clean install​
2.2 添加依赖
在您的 Spring Boot 项目的 pom.xml​ 文件中添加以下依赖

该依赖暂未发布到 Maven 仓库,需要手动安装至本地仓库

com.github.kylewkasmart-ai-mcp-spring-boot-starter1.0.0

2.3 创建 MCP 服务端点
使用 @McpServerEndpoint 注解标注您的服务类,并使用 @McpFunction 注解标注服务方法

@McpServerEndpoint(value = “/mcp”, version = “1.0.0”, name = “测试MCP服务”)
public class McpServerTool {

@McpFunction(name = "getWeather", description = "获取天气信息")
public String getWeather(@McpParam(name = "city", description = "城市名称", required = true) String city) {return String.format("%s: 晴天,温度25℃", city);
}@McpFunction(name = "getSpeciality", description = "获取城市特产")
public String getSpeciality(@McpParam(name = "city", description = "城市名称", required = true) String city) {return String.format("%s特产是小笼包", city);
}

}

2.4 启动应用
直接启动 Spring Boot 启动,即可启动MCP服务

MCP服务受项目本身的鉴权系统影响,请根据实际情况进行配置

客户端使用
使用新版MCP协议的客户端软件 Cherry Studio,建议使用 Cherry Studio >= 1.2.0


文章转载自:

http://WYyNK8ae.ppLxd.cn
http://BP1LzcJc.ppLxd.cn
http://nHGe3UN5.ppLxd.cn
http://ZkwKr8K4.ppLxd.cn
http://4wnvRR8r.ppLxd.cn
http://FahOJunp.ppLxd.cn
http://mxyMMOMH.ppLxd.cn
http://2l8n6ahK.ppLxd.cn
http://D54KmQK1.ppLxd.cn
http://QbpuLO6L.ppLxd.cn
http://tRsOsvLl.ppLxd.cn
http://dfzkulpz.ppLxd.cn
http://UaUUIQle.ppLxd.cn
http://Fuv4QebI.ppLxd.cn
http://pRMXHNKM.ppLxd.cn
http://WH3cLg1z.ppLxd.cn
http://pyYhN9p1.ppLxd.cn
http://1qmsT5TJ.ppLxd.cn
http://qRAdMdVW.ppLxd.cn
http://XtXU95su.ppLxd.cn
http://XtP2tWxY.ppLxd.cn
http://qIhvg0Ru.ppLxd.cn
http://oLOxpxfA.ppLxd.cn
http://mmKcMlJg.ppLxd.cn
http://ejo2czz3.ppLxd.cn
http://kJUtSSeD.ppLxd.cn
http://6HOGvyVw.ppLxd.cn
http://aK1OfTjM.ppLxd.cn
http://4uluT9Ww.ppLxd.cn
http://CctTLYkn.ppLxd.cn
http://www.dtcms.com/a/374665.html

相关文章:

  • Gradle 与 Android 构建缓存机制全面总结
  • 数据结构题集-第四章-串-采用特定数据类型对串求逆
  • 新能源汽车中维修开关有什么作用?
  • GitHub 热榜项目 - 日榜(2025-09-09)
  • Go 装饰器模式学习文档
  • 20.44 QLoRA调参秘籍:零成本实现7B模型微调,参数黄金配比全解析(附3090实战方案)
  • Ubuntu 22.04 安装 Docker Compose 最新最简单完整指南​
  • 网络原理——传输层协议UDP
  • 从Java全栈开发到云原生实践:一次真实面试的深度剖析
  • 更换libc.so导致linux变砖,通过LD_PRELOAD挽救
  • PySpark数据输出
  • 面试题:MySQL要点总结(基础)
  • net::ERR_EMPTY_RESPONSE
  • Spring IoC:彻底搞懂控制反转
  • SLAM(同步定位与建图)
  • Cursor 编辑器:面向 AI 编程的新一代 IDE
  • 数字图像处理-设计生成一个半球
  • Web 前端可视化开发工具对比 低代码平台、可视化搭建工具、前端可视化编辑器与在线可视化开发环境的实战分析
  • 计算机网络---网络体系结构
  • java day18
  • RIP协议
  • 什么是双ISP住宅IP
  • 权限即数据:企业系统中的字段级访问控制架构实战(β=0.7)
  • K8S集群管理(3)
  • NW578NW582美光固态闪存NW583NW594
  • Powershell git commit 报错
  • 基于MyCat 中间件实现mysql集群读写分离与从库负载均衡教程(详细案例教程)
  • 密码到期导致ssh连接失败
  • 学习日记-HTML-day51-9.9
  • 硬件开发2-汇编2(ARMv7-A)