Skip to content

Releases: modelcontextprotocol/java-sdk

v2.0.1

Choose a tag to compare

@Kehrlann Kehrlann released this 19 Aug 13:47

What's Changed

  • Upgrade conformance suite to 0.1.16, Spring AI conformance to 2.0.0 GA by @Kehrlann in #1032
  • Return empty completion when no handler matches a valid ref by @jstar0 in #996
  • Close response after sending error in McpStreamableServerSession#responseStream by @Kehrlann in #1041
  • Fix error behavior on unregistered handlers in stateless server handler by @maff in #800
  • Remove invalid WARN message for missing notification handler in stateless servers by @bperhaps in #835
  • Fix SSE event classification to follow spec for missing event field by @iaJingda in #913
  • fix: stop pagination on empty cursors by @nanookclaw in #954
  • fix McpTransportContext.create() mutability issue and add tests by @iuliiasobolevska in #1076
  • Bound HTTP server and client reads by @Kehrlann in #1102
  • Bound STDIO server and client reads by @Kehrlann in #1103

Depedency updates

  • Bump json-schema-validator to 2.0.4 / 3.0.6, jackson to 2.21.1 / 3.1.4 by @joaodinissf in #1058

New Contributors

Full Changelog: v2.0.0...v2.0.1

v1.1.4

Choose a tag to compare

@Kehrlann Kehrlann released this 19 Aug 13:45

What's changed

  • Bound HTTP client and server reads (backported from #1102 by @Kehrlann)

Full Changelog: v1.1.3...v1.1.4

v0.18.4

Choose a tag to compare

@Kehrlann Kehrlann released this 19 Aug 13:44

What's changed

  • Bound HTTP client and server reads (backported from #1102 by @Kehrlann)

Full Changelog: v0.18.3...v0.18.4

v2.0.0

Choose a tag to compare

@chemicL chemicL released this 11 Jun 15:43

MCP Java SDK 2.0.0 🎉

We're thrilled to announce the General Availability of the MCP Java SDK 2.0.0 — the first major release since 1.x and the culmination of three milestones (M1, M2, M3) and a release candidate (RC1). It tracks the latest 2025-11-25 MCP specification and lays the groundwork for everything that comes next. Huge thanks to everyone who contributed, tested the milestones, and filed feedback along the way! ❤️

Upgrading from 1.x? See the v2 migration guide and the updated documentation (#1024) for a step-by-step walkthrough of the breaking changes below.

Highlights

  • A new JSON compatibility foundation for consistent forward/backward wire compatibility as the protocol evolves.
  • Spec-accurate schema with enforced required fields and lenient wire deserialization.
  • End-to-end validation of tool inputs and embedded JSON Schema documents (2020-12).
  • Richer elicitation: client-side schema defaults, URL elicitation, and form-based elicitation schemas.
  • Icons & metadata support (SEP-973) across the API.
  • Streamable HTTP first: SSE transports are now deprecated in favor of Streamable HTTP.
  • Cleaner, quieter logging with unified configuration and saner default levels.

⚠️ Breaking Changes

  • feat!: consistent JSON forward/backward compatibility — the 2.0 foundation by @chemicL in #927
  • feat!: enforce required MCP spec fields in McpSchema; lenient wire deserialization by @chemicL in #928
  • feat!: add tool input arguments validation (#697) by @ashakirin in #873
  • fix: Remove JsonSchema and use a Map for inputSchema to support JSON Schema dialects by @bilaloumehdi in #749

✨ New Features

  • feat: validate embedded JSON Schema documents against the 2020-12 meta-schema (SEP-1613) by @chemicL in #949
  • feat: Add SEP-973 icons and metadata support by @sainathreddyb in #912
  • feat: client-side application of elicitation schema defaults (SEP-1034) by @chemicL in #976
  • Add URL elicitation support (SEP-1036) by @Kehrlann in #993
  • Add schemas for form-based elicitation by @Kehrlann in #1020
  • feat: add support for meta parameter in client paginated list queries by @smohite04 in #906
  • Add 2025-11-25 spec version to all transports by @chemicL in #1025

🔌 Transports & Networking

  • Deprecate SSE transports (in favor of Streamable HTTP) by @Kehrlann in #950
  • Client transports: remove deprecated methods from builder by @Kehrlann in #899
  • Server transports: remove deprecated methods from builder by @Kehrlann
  • HttpClientStreamableHttpTransport: handle HTTP 405 by @Kehrlann
  • Validate message endpoint in SSE client transport by @Kehrlann in #943
  • DefaultSseMessageEndpointValidator allows same-origin message endpoints by @Kehrlann in #946
  • Deprecate Builder.customizeRequest() in favor of httpRequestCustomizer() by @gyeo009 in #791
  • Expose request URI in McpHttpClientAuthorizationErrorHandler by @Kehrlann in #980
  • Fix UTF-8 encoding for non-ASCII tool names in HTTP client transports by @rameshreddy-adutla in #850

🪵 Logging

🐛 Fixes & Polish

  • fix: avoid dropped errors when transport is closed or uninitialized by @chemicL in #995
  • fix: Return empty prompt completion result when prompt has no arguments by @chemicL in #934
  • Revert removed builders for Resource and ResourceTemplate by @chemicL in #947
  • Clarify tool validation error messages by @tzolov in #1023
  • Return void from McpStatelessSyncServer#closeGracefully instead of Mono by @tzolov in #1019
  • fix: add missing Export-Package to mcp-json-jackson2 and mcp-json-jackson3 by @joaodinissf in #911

📚 Docs & Conformance

  • Update documentation and migration notes for v2 by @chemicL in #1024
  • conformance-tests: upgrade to MCP-security 0.1.11, implement CIMD by @Kehrlann in #975
  • conformance: update to mcp-security 0.1.5, pass scope-step-up by @Kehrlann in #895
  • docs: document best practice for handling argument errors in MCP tools by @radeshgovind-2005 in #891
  • fix: proper URL links from README.md to 'Java Dependencies', 'Java MCP Client', 'Java MCP Server' pages by @sleepytomcat in #874

New Contributors

Full Changelog: v1.1.0...v2.0.0

v0.18.3

Choose a tag to compare

@Kehrlann Kehrlann released this 09 Jun 13:39

What's changed

Fix for GHSA-hv2w-8mjj-jw22

Full Changelog: v0.18.2...v0.18.3

v2.0.0-RC1

v2.0.0-RC1 Pre-release
Pre-release

Choose a tag to compare

@Kehrlann Kehrlann released this 04 Jun 14:38

What's Changed

  • feat: client-side application of elicitation schema defaults (SEP-1034) by @chemicL in #976
  • Expose request URI in McpHttpClientAuthorizationErrorHandler by @Kehrlann in #980
  • Unify logging config by @chemicL in #984
  • Reduce logging levels by @chemicL in #985
  • fix: add missing Export-Package to mcp-json-jackson2 and mcp-json-jackson3 by @joaodinissf in #911
  • Add URL elicitation support (SEP-1036) by @Kehrlann in #993
  • fix: avoid dropped errors when transport is closed or uninitialized by @chemicL in #995

New Contributors

Full Changelog: v2.0.0-M3...v2.0.0-RC1

v2.0.0-M3

v2.0.0-M3 Pre-release
Pre-release

Choose a tag to compare

@Kehrlann Kehrlann released this 21 May 23:09

What's Changed

  • feat!: enforce required MCP spec fields in McpSchema; lenient wire deserialization by @chemicL #928
  • Validate message endpoint in SSE client transport by @Kehrlann in #943
  • DefaultSseMessageEndpointValidator allows same-origin message endpoints by @Kehrlann in #946
  • feat: validate embedded JSON Schema documents against 2020-12 meta-schema (SEP-1613) by @chemicL in #949
  • Deprecate SSE transports by @Kehrlann in #950
  • feat: Add SEP-973 icons and metadata support by @sainathreddyb in #912

Breaking changes

  • PromptReference.equals/hashCode now key on name only (previously derived from identifier()+type()). Two refs with the same name but different titles now compare equal — code using PromptReference as a map/set key should be audited.
  • PromptReference's compact constructor pins type to "ref/prompt" and logs a WARN if the caller supplies a different non-null value. The legacy two-arg PromptReference(String type, String name) constructor remains deprecated.
  • ResourceReference's record components are reduced from (type, uri) to (uri) — positional construction breaks. The legacy ResourceReference(String type, String uri) constructor stays deprecated and ignores type.
  • CompleteReference.identifier() is deprecated and now returns null via a default method on the interface.

New Contributors

Full Changelog: v2.0.0-M2...v2.0.0-M3

v1.1.3

Choose a tag to compare

@Kehrlann Kehrlann released this 21 May 23:09

What's changed

  • Validate message endpoint in SSE client transport by @Kehrlann in #943 (backport)
  • DefaultSseMessageEndpointValidator allows same-origin message endpoints by @Kehrlann in #946 (backport)

Full Changelog: v1.1.2...v1.1.3

v1.0.2

Choose a tag to compare

@Kehrlann Kehrlann released this 21 May 23:08

What's changed

  • Validate message endpoint in SSE client transport by @Kehrlann in #943 (backport)
  • DefaultSseMessageEndpointValidator allows same-origin message endpoints by @Kehrlann in #946 (backport)

Full Changelog: v1.0.1...v1.0.2

v0.18.2

Choose a tag to compare

@tzolov tzolov released this 06 May 16:50

What's Changed

  • Validate message endpoint in SSE client transport by @Kehrlann in #945

Full Changelog: v0.18.1...v0.18.2