Spring AI 2.0已经支持MCP 2026-07-28吗?Java项目升级兼容性分析
2026/7/31 5:44:09 网站建设 项目流程

文章摘要

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-MethodMcp-Name请求头;
  • ttlMscacheScope
  • Tasks扩展;
  • MCP Apps扩展;
  • 新授权流程;
  • 正式弃用策略;
  • 目标客户端的互操作性。

二、Spring AI 2.0当前提供哪些MCP能力

Spring AI 2.0提供专门的MCP Boot Starter。

客户端:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client</artifactId></dependency>

WebFlux客户端:

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

服务端WebMVC:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId></dependency>

服务端WebFlux:

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

服务端协议可以配置为:

spring:ai:mcp:server:protocol:STREAMABLE

或:

spring:ai:mcp:server:protocol:STATELESS

此外,Spring AI还提供:

  • @McpTool
  • @McpResource
  • @McpPrompt
  • MCP Tool到Spring AIToolCallback的适配;
  • 同步与异步客户端;
  • 多个命名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\--configurationruntimeClasspath

重点确认:

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 AI2.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连接。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询