Releases: modelcontextprotocol/java-sdk
v1.0.0
MCP Java SDK 1.0.0
We are pleased to announce the 1.0.0 GA release of the MCP Java SDK — the official Java SDK for Model Context Protocol servers and clients, maintained in collaboration with Spring AI.
Major Features
- MCP Protocol Implementation — Spec-compliant implementation of the Model Context Protocol, including tools, resources, prompts, sampling, elicitation, and progress tracking.
- Synchronous and Asynchronous APIs — First-class support for both blocking (
McpSyncClient/McpSyncServer) and reactive (McpAsyncClient/McpAsyncServer) programming models. - Official Transport Options — STDIO, Servlet-based (Streamable HTTP and HTTP/SSE) transports out of the box.
- Pluggable JSON Serialization — Supports both Jackson 2 and Jackson 3, with Jackson 3 as the default. Integration is decoupled so projects can supply their own binding.
- MCP Protocol Version Negotiation — Clients and servers automatically negotiate the highest mutually supported protocol version at connection time.
- Authorization & Security — DNS rebinding protection, Origin header validation, and conformance-tested OAuth/auth flows via relevant hooks.
- OSGi Support — All modules ship with correct OSGi bundle manifests for use in Eclipse/OSGi runtimes.
- BOM for Dependency Management —
mcp-bomkeeps all SDK module versions aligned with a single import. - MCP Test Module — Reusable test utilities and a conformance test suite for validating server and client implementations.
Spec Compliance
The SDK is compliant with the 2025-06-18 MCP specification and supports protocol version negotiation across 2024-11-05, 2025-03-26, and 2025-06-18.
Work towards 2025-11-25 spec compliance is actively in progress. Key features in that revision include tasks (durable request tracking), tool calling in sampling, URL elicitation, icon metadata, enhanced JSON Schema support, and updated OAuth/security flows. See the Roadmap for details.
Stability in the 1.x Line
With 1.0.0, the SDK transitions to a stable, semantically versioned release line. The project follows Semantic Versioning 2.0.0:
- Patch releases (
1.0.x) deliver backward-compatible bug fixes. - Minor releases (
1.x.0) deliver new, backward-compatible features — including new MCP spec support. - Major releases (
2.x) are reserved for breaking API changes or MCP spec revisions that require code changes on the caller side.
Breaking changes are always documented with migration instructions, APIs are deprecated before removal, and pull requests containing breaking changes are labeled accordingly. See VERSIONING.md for the full policy.
What's Changed in 1.0.0
Spring Transports Move to Spring AI 2.0
- Moved
mcp-spring-webfluxandmcp-spring-webmvcto Spring AI 2.0 (#805)
API Cleanup
- Removed all APIs deprecated during the RC cycle to establish a clean stable baseline (#807)
Security & Conformance
- Added authorization conformance testing using Spring Security (#806)
- Updated SECURITY.md to use GitHub Security Advisories (#801)
OSGi
- Fixed and simplified OSGi
manifest.mfgeneration (#792)
Governance & Community
New Contributors
- @scottslewis — OSGi manifest fixes (#792)
- @localden — Security advisory process (#801)
Full Changelog: v0.18.1...v1.0.0
v1.0.0-RC3
We are pleased to announce the v1.0.0-RC3 release 🚀 marking the beginning of a stable 1.x release line.
What's Changed
- Move mcp-spring-webflux and mcp-spring-webmvc to Spring AI 2.0 by @tzolov in #805
- Remove deprecations from 1.0.0 by @chemicL in #807
- Conformance testing: add auth conformance testing by @Kehrlann in #806
- Add governance documentation for SEP-1730 by @chemicL in #808
- Fix and simplification for osgi manifest.mf generation by @scottslewis in #792
- Update SECURITY.md to use GitHub Security Advisories by @localden in #801
- Change StackOverflow link and tag for support by @chemicL in #824
New Contributors
- @scottslewis made their first contribution in #792
- @localden made their first contribution in #801
Full Changelog: v0.18.1...v1.0.0-RC3
v0.18.1
v0.18.0
What's Changed
- fix: Fixed html encoding in javadoc by @ashakirin in #727
- fix: Enable javadoc generation for modules with OSGi metadata by @jonathanhefner in #705
- fix: Support form and url fields in Elicitation capability per 2025-11-25 spec by @rhtnr in #731
- add 2025-11-25 version to ProtocolVersions by @sdelamo in #733
- Expose resourcesUpdateConsumer() in sync client by @Randgalt in #735
- Upgrade to testcontainers 1.21.4 by @sdeleuze in #743
- Fix everything-server-based tests by @chemicL in #756
- Add Support for Jackson 3 and use it by default by @filiphr in #742
- Decouple mcp-test and mcp-spring modules from Jackson implementation by @chemicL in #760
- Conformance tests by @chemicL in #767
- Use junit.version for all junit dependencies by @filiphr in #752
- Update JUnit 5.10.2 -> 6.0.2 by @Kehrlann in #769
- Validate origin header by @Kehrlann in #771
- feat: broadcast 2025-11-25 as latest supported client version by @LucaButBoring in #758
- feat: added tools name format validation accordingly #SEP-986 by @ashakirin in #764
- Moves mcp-json API back into mcp-core for simplified dependencies and support of osgi runtimes by @Kehrlann in #779
- DNS rebinding protection: check host header by @Kehrlann in #775
- Refine
McpJsonDefaultsmethod names by @sdeleuze in #789 - Add embedded MkDocs documentation site by @tzolov in #795
New Contributors
- @ashakirin made their first contribution in #727
- @jonathanhefner made their first contribution in #705
- @rhtnr made their first contribution in #731
- @sdeleuze made their first contribution in #743
- @filiphr made their first contribution in #742
Full Changelog: v0.17.2...v0.18.0
v0.17.2
This release:
- Addresses mostly the testing infrastructure issues.
- Fixes a client-side issue with servers that process client-initiated notifications with a 202 Accepted HTTP Header.
Full Changelog: v0.17.1...v0.17.2
v0.17.1
Bug fix release:
Full Changelog: v0.17.0...v0.17.1
v0.17.0
What's Changed
- Fix experimental client capabilities tests by @Kehrlann in #670
- Fix typo in test name by @mingo1996 in #661
- Client transports: make #protocolVersions() configurable by @Kehrlann in #669
- chore: Spring 5 compatibility by @He-Pin in #649
- Fix the baseUrl is configured with a trailing slash #645 by @leehaut in #646
- WebMvcSseServerTransportProvider: do not include session ID in SSE event by @Kehrlann in #677
- refactor: use builder pattern for CallToolResult and simplify lambda expressions in tests by @codeboyzhou in #652
- Basic version negotiation capabilities by @Kehrlann in #684
- Revert "WebClientStreamableHttpTransport: use Spring-5 compatible met…hods (#649)" by @tzolov in #696
New Contributors
- @mingo1996 made their first contribution in #661
Full Changelog: v0.16.0...v0.17.0
v0.16.0
What's Changed
- feat: enhance error handling with custom error code preservation by @tzolov in #653
- Bump json-schema-validator from 1.5.7 to 2.0.0 by @uarlouski in #660
- fix: JSONRPCResponse JavaDoc by @vorburger in #657
- fix(docs): Remove broken @see link in McpServer.java Javadoc by @hbsjz-swl in #614
- feat(schema): support Object type for progressToken by @tzolov in #663
New Contributors
- @uarlouski made their first contribution in #660
- @vorburger made their first contribution in #657
- @hbsjz-swl made their first contribution in #614
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- define explicitely that values should always be included in code completions by @sdelamo in #601
- fix remove name when using @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) by @sdelamo in #600
- refactor: change int to Integer for optional numeric fields by @tzolov in #604
- fix: allow additional properties by default per JSON Schema spec by @tzolov in #617
- Close McpTransportSession on transport close by @Kehrlann in #632
- Fix: McpAsyncClient#listTools prevent infinite recursion by @leehaut in #631
- chore: standardize client/server implementation names and version by @tzolov in #642
- Update dependencies minor versions to fix build on JDK 25 by @bedrin in #640
- Support o.s.h.HttpHeaders from both 6.x and 7.x Spring branches by @bedrin in #639
New Contributors
Full Changelog: v0.14.1...v0.15.0
v0.14.1
Full Changelog: v0.14.0...v0.14.1