Spring AI 2.0已经支持MCP 2026-07-28吗?Java项目升级兼容性分析
文章摘要
MCP 2026-07-28规范已经正式发布,核心协议转向无状态,并增加请求路由头、列表缓存语义及扩展框架。与此同时,Spring AI 2.0文档已经提供STDIO、Streamable HTTP和STATELESS等MCP客户端与服务端配置。很多Java开发者因此认为,只要把spring.ai.mcp.server.protocol改成STATELESS,项目就已经完整支持新规范。实际上,传输能力、SDK版本、协议协商和扩展支持是四个不同层面。本文梳理Spring AI 2.0与MCP 2026-07-28之间的真实兼容关系,并给出生产升级清单。
一、先给出结论
不能简单回答“完全支持”或“完全不支持”。
更准确的结论是:
Spring AI 2.0已经具备MCP生产接入所需的大部分基础能力
包括STDIO、Streamable HTTP、STATELESS、工具适配与注解开发
但某个具体项目是否完整兼容2026-07-28规范
仍取决于实际MCP Java SDK版本、协议协商结果、客户端版本和扩展能力
尤其需要避免下面这个错误判断:
配置了STATELESS
= 完整支持2026-07-28全部规范
STATELESS首先描述服务端传输和会话模型,并不能证明以下能力已经全部落地:
- 新协议版本协商;
Mcp-Method与Mcp-Name请求头;ttlMs与cacheScope;- Tasks扩展;
- MCP Apps扩展;
- 新授权流程;
- 正式弃用策略;
- 目标客户端的互操作性。
二、Spring AI 2.0当前提供哪些MCP能力
Spring AI 2.0提供专门的MCP Boot Starter。
客户端:
org.springframework.ai
spring-ai-starter-mcp-client
WebFlux客户端:
org.springframework.ai
spring-ai-starter-mcp-client-webflux
服务端WebMVC:
org.springframework.ai
spring-ai-starter-mcp-server-webmvc
服务端WebFlux:
org.springframework.ai
spring-ai-starter-mcp-server-webflux
服务端协议可以配置为:
spring:
ai:
mcp:
server:
protocol: STREAMABLE
或:
spring:
ai:
mcp:
server:
protocol: STATELESS
此外,Spring AI还提供:
@McpTool;@McpResource;@McpPrompt;- MCP Tool到Spring AI
ToolCallback的适配; - 同步与异步客户端;
- 多个命名MCP连接;
- 工具过滤;
- 工具名前缀;
- OAuth 2.0与API Key安全扩展;
- Micrometer与OpenTelemetry观测能力。
这些能力足以搭建生产级MCP客户端和服务端,但“框架能搭建”与“完全匹配最新协议修订”仍需分开验证。
三、为什么Spring AI 2.0 GA说明仍提到旧规范
Spring AI 2.0.0 GA发布时,官方说明其MCP Java SDK基线与当时最新稳定规范对应。
MCP 2026-07-28是在Spring AI 2.0.0 GA之后发布的重大修订。
因此会出现三种信息同时存在:
Spring AI 2.0.0 GA发布说明
→ 对应当时稳定规范
Spring AI当前在线文档
→ 已展示STATELESS与更新后的传输能力
MCP 2026-07-28最终规范
→ 包含新的协议语义和扩展框架
生产项目不能只看文章标题或Starter名称,应该检查实际构建结果:
mvn dependency:tree \
-Dincludes=io.modelcontextprotocol.sdk
Gradle:
./gradlew dependencies \
--configuration runtimeClasspath
重点确认:
MCP Java SDK实际版本
Spring AI实际版本
是否存在依赖覆盖
是否引用Snapshot
是否被其他Starter降级
四、协议版本与SDK版本不是一回事
常见版本包括:
Spring AI 2.0.0
MCP Java SDK 2.x
MCP Protocol 2026-07-28
三者编号不能直接比较。
错误理解:
Java SDK 2.0
所以一定支持协议2026-07-28
正确做法是查看:
- SDK发行说明;
- 支持的协议版本;
- 客户端初始化或请求中的版本协商;
- 新字段和新请求头实现;
- 官方互操作性测试结果。
企业项目应维护兼容矩阵:
| 组件 | 当前版本 | 支持协议 | 验证状态 |
|---|---|---|---|
| Spring AI | 2.0.x | 待确认 | 测试中 |
| MCP Java SDK | 实际版本 | 待确认 | 测试中 |
| 桌面客户端 | 版本号 | 2025-11-25 | 已验证 |
| 企业Agent | 版本号 | 2026-07-28 | 待验证 |
| 自建MCP Server | 版本号 | 双版本 | 已验证 |
五、STATELESS到底解决什么问题
有状态Streamable HTTP通常需要:
初始化
→ 建立逻辑会话
→ 后续请求携带会话标识
→ 服务端维护会话状态
无状态服务端则更接近:
每次请求自包含
→ 任意实例处理
→ 不依赖协议级会话
Spring AI配置:
spring:
ai:
mcp:
server:
protocol: STATELESS
主要价值:
- 普通轮询负载均衡;
- 无需Sticky Session;
- 容器实例可随时替换;
- 更容易横向扩容;
- 更适合Serverless;
- 简化共享会话存储。
但无状态服务端通常不能提供依赖双向会话的能力,例如:
- 服务端主动Sampling;
- Elicitation;
- 部分通知;
- 连接级进度交互。
因此,不能为了扩容而一律切换STATELESS。
六、STREAMABLE与STATELESS如何选
选择STREAMABLE
适合:
- 服务端需要回调客户端;
- 需要Sampling;
- 需要Elicitation;
- 需要复杂双向通知;
- 一次交互中存在持续上下文;
- 客户端与服务端都支持会话。
选择STATELESS
适合:
- 工具主要是请求—响应;
- 服务端不主动调用客户端;
- 云原生水平扩容;
- API Gateway统一接入;
- 高并发查询工具;
- 工具状态已经外置。
选择STDIO
适合:
- 本地开发;
- 桌面客户端插件;
- 单机工具;
- 不暴露网络端口;
- 随客户端进程启动和退出。
七、2026-07-28带来的新增验证项
1. 无状态核心
验证项目是否仍依赖:
初始化握手副作用
Mcp-Session-Id
Sticky Session
进程内会话Map
2. 请求路由头
新规范引入用于网关识别的请求头。
网关需要确认:
- 是否保留未知请求头;
- 是否按方法统计;
- 是否被WAF删除;
- 是否在跨域配置中允许;
- 是否加入日志脱敏规则。
3. 列表缓存语义
工具、资源和Prompt列表可能带:
ttlMs
cacheScope
需要验证客户端是否:
- 识别TTL;
- 按身份隔离缓存;
- 正确响应listChanged;
- 不缓存高动态工具;
- 不跨租户共享private结果。
4. 扩展框架
Tasks和MCP Apps属于扩展能力,不能因为服务端支持核心协议,就默认客户端支持扩展。
八、最稳妥的兼容策略:双协议运行
生产服务不要立即只支持新协议。
推荐:
旧协议客户端
→ 旧兼容入口
新协议客户端
→ 2026-07-28入口
或者通过版本协商在同一入口处理。
灰度顺序:
内部测试客户端
→ 开发环境
→ 测试租户
→ 只读工具
→ 低风险写工具
→ 核心生产工具
九、不要只做“能连通”的测试
最小连接成功只证明:
网络可达
JSON-RPC可以解析
还需要测试:
工具发现
工具数量
名称
Schema
Description
缓存变化
权限过滤
工具调用
参数校验
错误映射
超时
取消
重试
幂等
审计
资源与Prompt
URI模板
内容类型
大文件
分页
权限
动态变化通知
兼容性
旧客户端连接新服务端
新客户端连接旧服务端
不支持扩展时降级
未知字段是否安全忽略
十、Spring AI项目的升级清单
□ 锁定Spring AI具体版本
□ 检查MCP Java SDK依赖树
□ 确认支持的协议版本
□ 不把STATELESS等同于完整新规范
□ 盘点Sampling和Elicitation需求
□ 决定STREAMABLE或STATELESS
□ 验证请求头经过网关
□ 设计工具列表缓存隔离
□ 检查OAuth Scope与租户权限
□ 建立双版本互操作测试
□ 先灰度只读工具
□ 预留回滚入口
十一、推荐的配置隔离
开发环境可以:
spring:
ai:
mcp:
server:
protocol: STREAMABLE
云端只读工具服务:
spring:
ai:
mcp:
server:
protocol: STATELESS
不要让所有环境共享同一个配置文件。
可以使用:
application-local.yml
application-test.yml
application-prod.yml
十二、我的判断
Spring AI 2.0已经给Java团队提供了成熟的MCP开发入口,并提前具备了无状态服务端、Streamable HTTP和企业安全等关键能力。
但MCP 2026-07-28是一轮协议级重大变更。
真正的兼容必须通过:
精确版本
+协议协商
+新语义实现
+客户端互操作
+生产网关验证
共同确认。
总结
判断Spring AI项目是否支持MCP 2026-07-28,不应只看:
有没有STATELESS配置
而应检查:
SDK版本
协议版本
请求路由头
列表缓存
扩展能力
安全机制
互操作测试
对于生产系统,最稳妥的做法是锁定依赖、建立兼容矩阵、双版本灰度,而不是在没有完整验证时直接替换全部MCP连接。
延伸阅读
如果你正在关注企业级 AI 应用、Spring AI、RAG、Agent 与 MCP 工程化落地,欢迎访问 智元界:
https://www.zyentor.com/
智元界将持续分享可运行的技术实战、架构设计、问题排查与企业应用案例。