Problem
Spring AI 1.1.x BOM pins mcp-core 0.17.0. That version rejects the elicitation: { form: {} } capability payload sent by MCP clients implementing spec 2025-11-25:
Unrecognized field "form" (class io.modelcontextprotocol.spec.McpSchema$ElicitationCapability), not marked as ignorable
This makes STATELESS Streamable HTTP transport unusable in practice when serving any of: Cursor, Claude Code 2.1.74+, Antigravity (Anthropic Browser), VS Code Copilot, Claude Desktop on recent client builds.
Why this matters
The fix is already upstream — modelcontextprotocol/java-sdk PR 731 landed in mcp-core 0.18.0. Spring AI's BOM hasn't picked it up.
We cannot override the transitive pin from the user side because Spring AI 1.1.4/1.1.5 calls API on io.modelcontextprotocol.json.McpJsonMapper.createDefault() that doesn't exist in 0.18.x — so a manual <dependency> override breaks the build. Verified end-to-end with a clean Maven rebuild.
Spring AI 2.0.0-Mx pulls mcp-core 2.0.0-M2 with the fix, but requires Spring Boot 4.x. Our service runs on Spring Boot 3.5 and the 2.x mcp line dropped mcp-spring-webmvc entirely, so 2.0.0-Mx isn't a workable upgrade path either.
This leaves Spring Boot 3.x users stuck on STREAMABLE, which has its own session-loss problem on horizontally scaled deployments (filed separately as #5983 ).
Steps to reproduce
- New Spring Boot 3.5 project with
spring-ai-starter-mcp-server-webmvc, BOM 1.1.x.
- Set
spring.ai.mcp.server.protocol=STATELESS (where supported) or use the WebFlux equivalent.
- Connect with any of: Cursor, Claude Code 2.1.74+, Antigravity, VS Code Copilot.
- Observe
Unrecognized field "form" on the initial handshake.
Proposed fix
Bump mcp-core in spring-ai-bom to 0.18.0 (or whichever 0.18.x is current) on the next 1.1.x patch release. Update the calls to McpJsonMapper.createDefault() to use whatever the 0.18.x equivalent is.
Acceptance criteria
Environment
- Spring Boot 3.5.11
- Spring AI 1.1.2 / 1.1.5 (both reproduce)
mcp-core 0.17.0 (BOM transitive)
- Java 17
- Affected clients: Cursor, Claude Code ≥ 2.1.74, Antigravity, VS Code Copilot
Related
Problem
Spring AI 1.1.x BOM pins
mcp-core 0.17.0. That version rejects theelicitation: { form: {} }capability payload sent by MCP clients implementing spec 2025-11-25:This makes STATELESS Streamable HTTP transport unusable in practice when serving any of: Cursor, Claude Code 2.1.74+, Antigravity (Anthropic Browser), VS Code Copilot, Claude Desktop on recent client builds.
Why this matters
The fix is already upstream —
modelcontextprotocol/java-sdkPR 731 landed inmcp-core 0.18.0. Spring AI's BOM hasn't picked it up.We cannot override the transitive pin from the user side because Spring AI 1.1.4/1.1.5 calls API on
io.modelcontextprotocol.json.McpJsonMapper.createDefault()that doesn't exist in 0.18.x — so a manual<dependency>override breaks the build. Verified end-to-end with a clean Maven rebuild.Spring AI 2.0.0-Mx pulls
mcp-core 2.0.0-M2with the fix, but requires Spring Boot 4.x. Our service runs on Spring Boot 3.5 and the 2.x mcp line droppedmcp-spring-webmvcentirely, so 2.0.0-Mx isn't a workable upgrade path either.This leaves Spring Boot 3.x users stuck on STREAMABLE, which has its own session-loss problem on horizontally scaled deployments (filed separately as #5983 ).
Steps to reproduce
spring-ai-starter-mcp-server-webmvc, BOM1.1.x.spring.ai.mcp.server.protocol=STATELESS(where supported) or use the WebFlux equivalent.Unrecognized field "form"on the initial handshake.Proposed fix
Bump
mcp-coreinspring-ai-bomto0.18.0(or whichever 0.18.x is current) on the next 1.1.x patch release. Update the calls toMcpJsonMapper.createDefault()to use whatever the 0.18.x equivalent is.Acceptance criteria
spring-ai-bom 1.1.<next>pullsmcp-core>= 0.18.0.elicitation: { form: {} }payload from spec 2025-11-25 clients.Environment
mcp-core0.17.0 (BOM transitive)Related