【Spring AI】实现一个基于 Streamable HTTP 的 MCP Server
文章目录
- 前言
- 一、maven依赖
- 1)使用 `1.1.0-M1 `
- 2)使用快照版本 `1.1.0-SNAPSHOT`
- 二、application.yml
- 三、Java代码示例
- 1)启动类
- 2)Service实现
- 四、如何使用
- 1)Claude Code
- 2)通义灵码
- 3)CherryStudio
- 参考文档
- 总结
前言
Spring AI 1.0
版本不支持Streamable HTTP
,今天去官网看了下发现1.1.0-M1
和1.1.0-SNAPSHOT
已经支持,于是尝试了一下。
目前 Spring AI 支持 Spring Boot 的版本为 3.4.x
及 3.5.x
一、maven依赖
两个版本2选1,稳妥起见选1.1.0-M1
,1.1.0-SNAPSHOT
太新不一定有什么问题呢…
如果你项目是Webflux
,可自行更换为spring-ai-starter-mcp-server-webflux
1)使用 1.1.0-M1
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId><version>1.1.0-M1</version></dependency>
2)使用快照版本 1.1.0-SNAPSHOT
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId><version>1.1.0-SNAPSHOT</version></dependency>
使用快照版本需要额外指定远程maven仓库
<repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><name>Central Portal Snapshots</name><id>central-portal-snapshots</id><url>https://central.sonatype.com/repository/maven-snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
二、application.yml
配置文件需增加以下配置
spring:ai:mcp:server:protocol: STREAMABLE # 启用 Streamable HTTP,不写默认为SSEstreamable-http:mcp-endpoint: /testMcp # 指定一个mcp的入口url,自行修改
三、Java代码示例
1)启动类
@SpringBootApplication
public class McpServerApplication {public static void main(String[] args) {SpringApplication.run(McpServerApplication.class, args);}// 注册Service 到 Mcp Tool@Beanpublic ToolCallbackProvider testTools(TestMcpService testMcpService) {return MethodToolCallbackProvider.builder().toolObjects(testMcpService).build();}public record TextInput(String input) {}@Beanpublic ToolCallback toUpperCase() {return FunctionToolCallback.builder("toUpperCase", (TextInput input) -> input.input().toUpperCase()).inputType(TextInput.class).description("Put the text to upper case").build();}}
2)Service实现
@Service
public class TestMcpService {@Tool(description = "Get weather alerts for a US state")public String testMcp(@ToolParam(description = "Two-letter US state code (e.g. CA, NY)") String state) {return "There are currently no weather alerts for " + state;}
}
四、如何使用
假如mcp server的地址为http://127.0.0.1:8080/testMcp
,各第三方的使用方法如下
1)Claude Code
# 增加 MCP Server,名字为 testMcp
claude mcp add --transport http testMcp http://127.0.0.1:8080/testMcp
进入claude控制台查看,键入 /mcp
,方向键选择 testMcp
,回车
这里可以看到testMcp
这个MCP Server的相关配置项,方向键选择View tools
,回车后可以看到这个Server包含的工具列表
可以看到注册的两个工具
2)通义灵码
在Idea插件 通义灵码
中使用,配置如下
工具中可以看到在McpServerApplication
注册的两个工具以及介绍
3)CherryStudio
在工具中可以看到我们服务端注册好的工具
参考文档
1、Model Context Protocol
2、Spring AI
总结
1、Spring AI 1.1.0-M1
支持流式HTTP,文档显示需要SpringBoot版本 3.4.x
或 3.5.x
2、本文梳理了基于 Spring AI
快照版本的MCP Server实现
3、最后介绍了Claude Code
、通义灵码
、Cherry Studio
里的使用