盼星星盼月亮,Spring AI 新版 1.1.0-M1(1.1.0 里程式版本)终于支持 Steamable HTTP 了,也就意味着 Spring AI 的 MCP 服务终于支持自动断线重连了。

1.SteamableHTTP

定义:Streamable HTTP 是基于标准 HTTP 协议的流式数据传输模式,允许客户端或服务器在数据完全生成前,分块(Chunk)传输数据,实现“边生成、边传输、边使用”的实时通信效果。它不是新协议,而是对 HTTP 的优化用法,结合了分块传输、连接复用、断线重连等特性。

2.SteamableHTTP和SSE

SSE 是 Spring AI 此次新版发布之前主要使用的通讯协议,是一种基于 HTTP 协议的 服务器向客户端单向推送数据 的技术,允许服务器在建立连接后 随时向客户端发送实时更新,无需客户端反复发起请求。它是 HTML5 标准的一部分,设计简单,适合需要实时通知但无需双向通信的场景。

SSE 和 Steamable HTTP 的主要区别如下:

维度SSEStreamable HTTP
灵活性❌ 仅单向通信,格式受限✅ 支持双向、多格式、断点续传
性能❌ 高并发时资源占用高✅ 高并发下更高效

3.使用SteamableHTTP

Steamable HTTP 在新版中的使用如下。

先添加新版依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
    <version>1.1.0-M1</version>
</dependency>

配置使用 Steamable 协议:

spring:
  ai:
    mcp:
      server:
        protocol: STREAMABLE # 配置使用 Steamable 协议

客户端也添加对应的新版本依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
    <version>1.1.0-M1</version>
</dependency>

之后配置 MCP 服务器地址就可以直接调用了:

spring:
    mcp:
      client:
        streamable-http:
          connections:
            weather-server:
              url: http://localhost:10086/api   # 指向刚才启动的 MCP Server

其他实现代码不变。

4.视频实现演示

https://www.bilibili.com/video/BV1xYHez5EEM/open in new window

小结

Spring AI 之前版本最被人诟病的就是不支持 Streamable HTTP,所以在实现自定义 MCP 服务器端时很麻烦,需要自己手动实现断线自动重连功能。但现在新版本支持之后我们就可以非常方便的实现 MCP 服务了,大家可以动手试一下。

特殊说明

以上内容来自我的《AI大模型应用开发》 系列课,这些课程为视频+图文版,深入浅出学习了大模型应用开发的各种技术,例如系统学习了 Spring AI、LangChain4j、Spring AI Alibaba、Dify、Agent、AI 常见面试题等技术,其中包含:MCP、Function Call、RAG(简单、原生、高级应用)、向量数据库(Milvus、RedisStack)、Prompt工程、多模态、向量数据库、嵌入模型、N种主流LLM对接、N种DeepSeek对接、同时调用多种大模型、连续对话保存到数据库、上万种 MCP 通用服务对接、大模型直接操作数据库等,还有很多 AI 案例,如:数据库 AI 助手、快递 AI 助手等都是手把手带你实现。手把手教你快速、系统掌握大模型应用开发的核心技术。

如果对此课程感兴趣,请加我微信:vipStone【备注:LLM】