SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

 更新时间:2025年07月18日 11:53:54   作者:kylewka  
本文介绍了SpringBoot如何实现MCP StreamableHTTP 服务器,并且使用Cherry Studio 客户端测试MCP服务器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

SpringBoot改造MCP服务器(StreamableHTTP)

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 安装教程

  1. 确保您的开发环境已安装 JDK 8 或更高版本以及 Maven
  2. 克隆本仓库到本地:git clone https://gitee.com/kylewka/smart-ai.git
  3. 进入项目根目录,执行 Maven 构建命令:mvn clean install

2.2 添加依赖

在您的 Spring Boot 项目的 pom.xml​ 文件中添加以下依赖

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

<dependency>
    <groupId>com.github.kylewka</groupId>
    <artifactId>smart-ai-mcp-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>

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服务

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

客户端使用

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

客户端设置中添加MCP服务器

配置模型并选择MCP服务器

对话测试效果

到此这篇关于SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)的文章就介绍到这了,更多相关SpringBoot MCP服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis 传输List的实现代码

    Mybatis 传输List的实现代码

    本文通过实例代码给大家介绍了mybatis传输list的实现代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • springBoot集成Ollama大模型及流式传输的问题小结

    springBoot集成Ollama大模型及流式传输的问题小结

    Ollama是一个用于部署和运行各种开源大模型的工具,它支持多种平台和设备,包括Windows、Mac和Linux,甚至可以在树莓派等轻量级设备上运行,这篇文章主要介绍了springBoot集成Ollama大模型及流式传输的问题小结,需要的朋友可以参考下
    2025-04-04
  • java如何把逗号分隔的String字符串转int集合

    java如何把逗号分隔的String字符串转int集合

    这篇文章主要介绍了java实现把逗号分隔的String字符串转int集合,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 关于Java实体类Serializable序列化接口的作用和必要性解析

    关于Java实体类Serializable序列化接口的作用和必要性解析

    序列化是将对象状态转化为可保持或者传输的格式过程,与序列化相反的是反序列化,完成序列化和反序列化,可以存储或传输数据,一般情况下,在定义实体类时会使用Serializable,需要的朋友可以参考下
    2023-05-05
  • java实现多线程交替打印

    java实现多线程交替打印

    这篇文章主要为大家详细介绍了java实现多线程交替打印,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Spring Cloud 中使用 Sentinel 实现服务限流的两种方式

    Spring Cloud 中使用 Sentinel 实现服务限流的两种方式

    这篇文章主要介绍了Spring Cloud 中使用 Sentinel 实现服务限流的方式,通过示例代码主要介绍了Sentinel的两种实现限流的方式,需要的朋友可以参考下
    2024-03-03
  • 整理Java编程中字符串的常用操作方法

    整理Java编程中字符串的常用操作方法

    这篇文章主要介绍了Java编程中字符串的常用操作方法的整理,字符串处理是Java入门学习中的基础知识,需要的朋友可以参考下
    2016-02-02
  • Java基础详解之内存泄漏

    Java基础详解之内存泄漏

    这篇文章主要介绍了Java基础详解之内存泄漏,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • 详解SpringMVC中设置静态资源不被拦截的问题

    详解SpringMVC中设置静态资源不被拦截的问题

    这篇文章主要介绍了详解SpringMVC中设置静态资源不被拦截的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • java 创建线程的几种方式

    java 创建线程的几种方式

    本文主要介绍了java中创建线程的几种方式。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论