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

【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-M11.1.0-SNAPSHOT已经支持,于是尝试了一下。

目前 Spring AI 支持 Spring Boot 的版本为 3.4.x3.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.x3.5.x
2、本文梳理了基于 Spring AI 快照版本的MCP Server实现
3、最后介绍了Claude Code通义灵码Cherry Studio 里的使用

http://www.dtcms.com/a/389000.html

相关文章:

  • 云手机:概念、历史、内容与发展战略
  • linux服务器上安装oss对象存储(命令行工具使用oss)
  • 强化学习1.1 使用Gymnasium库
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(11):101-110语法 +(考え方15)
  • 运维分享:神卓 N600 如何实现 NAS 安全稳定访问
  • 系统集成项目管理工程师:第十四章 收尾过程组
  • 云手机通道具体是指什么?
  • C++ :实现多线程编程
  • 嵌入式科普(40)浅谈“功能安全“概念,深悟“功能安全“本质
  • 分布式系统理论-CAP和BASE
  • SaaS 安全的原则、挑战及其最佳实践指南
  • Flink on Native K8S源码解析
  • VMwarea安装
  • HarmonyOS之Swiper全解析
  • React18中性能优化方式
  • X133核心板--智能教育平板的芯动力​
  • 下载flink和flink cdc jar
  • 华为三层交换技术
  • 潮起之江:算力创新与赋能开启AI产业新征程
  • 华为链路聚合技术基础
  • 百度智能云车牌识别API官方配置指南
  • Git 拉Github的仓库却要求登录GitLab
  • 【Kafka】Kafka如何开启sasl认证?
  • 国产化Excel开发组件Spire.XLS教程:C# 轻松将 DataSet 导出到 Excel
  • NLP情绪因子解构鲍威尔“风险管理降息”信号,黄金价格在3707高位触发量化抛售潮
  • 【Python办公】Excel多Sheet拆分工具
  • Unity_程序集_.asmdef_引用命名域失败
  • FPGA采集AD7606转SRIO传输,基于Serial Rapidlo Gen2,提供6套工程源码和技术支持
  • Cloudcompare实现在模型上进行点云(下)采样
  • 【Linux】聊聊文件那些事:从空文件占空间到系统调用怎么玩