Releases: spring-projects-experimental/spring-ai-mcp
v0.6.0
Release Notes
Breaking Changes ⚠️ 
McpClient.using()- UseMcpClient.sync()orMcpClient.async()insteadMcpServer.using()- UseMcpServer.sync()orMcpServer.async()insteadMcpServer.ToolRegistration- UseMcpServerFeatures.SyncToolRegistrationorMcpServerFeatures.AsyncToolRegistrationinsteadMcpServer.ResourceRegistration- UseMcpServerFeatures.SyncResourceRegistrationorMcpServerFeatures.AsyncResourceRegistrationinsteadMcpServer.PromptRegistration- UseMcpServerFeatures.SyncPromptRegistrationorMcpServerFeatures.AsyncPromptRegistrationinsteadToolHelper.toToolRegistration()- UseToolHelper.toSyncToolRegistration()instead
Follow the 0.6.0 Migration Guide for the new API changes.
New Features 🚀
Protocol Version Negotiation (#74)
- Implemented protocol version negotiation between MCP client and server
 - Added support for multiple protocol versions in both client and server
 - Implemented fallback mechanism to latest version when unsupported version requested
 - Added comprehensive test coverage for version negotiation
 
Configurable SSE Endpoints (#65)
- Made SSE endpoint path configurable in server transports
 - Added customization support for WebFluxSseServerTransport, WebMvcSseServerTransport, and HttpServletSseServerTransport
 - Maintained backward compatibility with default "/sse" endpoint
 - Aligned Java SDK behavior with Python SDK's SseServerTransport
 
Bug Fixes 🐛
Transport Layer Improvements (#73)
- Added cleanup logic for inbound processing in transport layer
 - Enhanced transport reliability and resource management
 
Improvements & Refactoring 🔧
API Refactoring (#66, #69)
- Separated asynchronous and synchronous client interactions
 - Introduced new client creation patterns:
// Synchronous client API McpClient.sync(transport).build(); // Asynchronous client API McpClient.async(transport).build();
 - Made RequestHandler type-aware of responses
 - Deprecated legacy client builder patterns
 
Code Quality & Structure (#70, #64)
- Aligned abstract tests in mcp-test with mcp-core
 - Improved method scope definitions
 - Enhanced code organization and maintainability
 
Full Changelog: v0.5.1...v0.6.0
v0.5.0
Release Notes
Breaking Changes
Transport Implementation Changes
- 
Module Restructuring
- SSE transport implementations moved to dedicated modules:
mcp-webflux-sse-transport: WebFlux-based SSE transportmcp-webmvc-sse-transport: WebMVC-based SSE transport
 - Base MCP module no longer includes transport implementations
 
 - SSE transport implementations moved to dedicated modules:
 - 
Class Renames
SseClientTransportrenamed toWebFluxSseClientTransportSseServerTransportrenamed toWebFluxSseServerTransport
 
Project Structure Changes
- Test utilities relocated to new 
mcp-testmodule - All samples moved to https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol
 - Spring AI dependency updated to 1.0.0-M5
 
Migration Guide
Users will need to:
- Update dependencies to include appropriate transport modules
 - Update import statements for renamed transport classes
 - Modify transport instantiation code
 - Add mcp-test dependency if using test utilities
 
Major Features & Improvements
Transport Layer Enhancements
- 
New Servlet-based SSE Transport
- Added HttpServletSseServerTransport with Servlet 6.0 support
 - Enables integration with any Java HTTP server supporting Servlets
 - Compatible with Jakarta Servlet API 6.1.0
 - Includes comprehensive integration tests with Tomcat
 
 - 
Enhanced WebMVC Transport
- Improved event delivery control and connection management
 - Added dedicated session management with SSEEvent record
 - Enhanced error handling and timeout management
 - Includes comprehensive integration tests
 
 
Architecture & Modularity
- Transport Implementation Modularization
- Split transport implementations into dedicated modules
 - Created separate modules for WebFlux and WebMVC SSE transports
 - Added framework-independent SSE client implementations using java.net.http
 - Introduced shared test module for common test utilities
 - Maintained STDIO transport in core for basic functionality
 
 
Build & Dependency Management
- New Bill of Materials (BOM)
- Introduced mcp-bom module for centralized version management
 - Simplified dependency version management across Spring AI MCP projects
 - Streamlined version compatibility across components
 - Updated documentation to reference the new BOM
 
 
Security Updates
- Updated Tomcat dependencies to address security vulnerabilities:
- tomcat-embed-core upgraded from 10.1.18 to 10.1.34
 
 
Compatibility Notes
- Requires Jakarta Servlet API 6.1.0 for Servlet-based transport
 - Compatible with Tomcat 11.0.2 and newer
 - Users should migrate to the new BOM for dependency management
 
Documentation Updates
- Added dependency management documentation
 - Updated existing documentation to use BOM references
 - Added integration examples for new transport implementations
 
v0.4.2
Release Notes
Minor bug-fix and usability improvements milestone
- Add JsonSchema record for structured schema representation
 - Change Tool.inputSchema type from Map<String, Object> to JsonSchema.
 - Use the String JSON Schema constructor when creating the Tool programmatically.
 - Add ToolHelper utility class for:
- Converting Spring AI FunctionCallbacks to MCP tools
 - Generating JSON schemas for tool input validation
 - Facilitating integration between Spring AI functions and MCP tools
 
 
Full Changelog: v0.4.1...v0.4.2
v0.4.1
Release Notes
Minor bug-fix milestone release
- McpAsyncServer: Add non-blocking execution for tools and resources.
Execute tool calls, resource reads and prompt handling in a non-blocking manner using Schedulers.boundedElastic().
This prevents blocking operations from impacting server responsiveness.
This is a temp patch until #48 is resolved properly. - Remove Logback from production JAR - Move Logback dependency to test scope to make it possible for applications using this library to choose their implementation of the SLF4J API.
 
Full Changelog: v0.4.0...v0.4.1
v0.4.0
Release Notes
This is a milestone release. It is not available on Maven Central. Add this repository to your POM:
<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone-local</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>Major Features
Enhanced Roots Management
- Implemented proper ListRootsResult wrapping in async client
 - Added listRoots methods in server components
 - Implemented roots change notification handling in async server
 - Added roots integration tests including async notifications
 - Added support for roots change notification with single and multiple consumers
 - Improved robustness of root addition/removal scenarios
 
Improved Architecture & Documentation
- Introduced ClientMcpTransport and ServerMcpTransport marker interfaces
 - Updated client/server implementations with appropriate transport interfaces
 - Reorganized documentation structure for better clarity
 - Relocated documentation images to mcp-docs/antora directory
 - Updated README files with links to online documentation
 
Server-Side Capabilities
- Added createMessage method to McpAsyncServer and McpSyncServer for LLM sampling
 - Implemented client-side sampling features in the Model Context Protocol (MCP) server
 - Enhanced server info implementation with default builder options
 
Bug Fixes & Improvements
- Fixed potential NullPointerException in toolsListRequestHandler when handling null params
 - Improved error handling for uninitialized clients and missing capabilities
 - Enhanced test coverage across multiple components
 
Technical Improvements
- Added structured logging support with configurable severity levels (DEBUG to EMERGENCY)
 - Implemented logging message notifications
 - Added logging consumers for client-side log handling
 - Extended test coverage for logging functionality
 
Notes
- Documentation has been updated to reflect new features and improvements
 - Several architectural improvements have been made to enhance maintainability
 
v0.3.1
Release Notes
Minor milestone release improving the MCP Server stability.
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Release Notes
This is a milestone release. It is not available on Maven Central. Add this repository to your POM:
<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone-local</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>Major Features
MCP Server Enhancements
- Introduced new McpServer factory with builder pattern for flexible configuration
 - Added McpAsyncServer with non-blocking operations and reactive support
 - Implemented McpSyncServer as synchronous wrapper around async implementation
 - Added runtime tool management capabilities
 - Introduced server capabilities and implementation information support
 
Transport Layer Improvements
- Implemented SseServerTransport with SSE endpoints and message routing
 - Added StdioServerTransport for process-based communication
 - Enhanced transport error handling and graceful shutdown mechanisms
 - Reorganized client transports into dedicated transport package
 
Documentation
- Added comprehensive MCP reference documentation
 - Included detailed client/server architecture documentation
 - Provided transport implementation and protocol guides
 - Added session management and message handling documentation
 - Included error handling and recovery strategy guides
 - Added architectural diagrams for component relationships
 - Provided API documentation with usage examples
 
Testing Improvements
- Added extensive test coverage for server components
 - Implemented transport-specific test suites
 - Added integration tests for client-server interactions
 
Breaking Changes
Package Reorganization
- Relocated transport-related classes to dedicated package:
- StdioClientTransport: 
o.s.ai.mcp.client.stdio→o.s.ai.mcp.client.transport - SseClientTransport: 
o.s.ai.mcp.client.sse→o.s.ai.mcp.client.transport - ServerParameters: 
o.s.ai.mcp.client.stdio→o.s.ai.mcp.client.transport 
 - StdioClientTransport: 
 
API Changes
- Modified StdioClientTransport.errorHandler to private with setter method
 - Updated ServerCapabilities to use builder pattern:
// Old new ServerCapabilities(experimental, logging, prompts, resources, tools) // New ServerCapabilities.builder() .experimental(experimental) .logging(logging) .prompts(listChanged) .resources(subscribe, listChanged) .tools(listChanged) .build()
 
Module Restructuring
- Renamed artifacts for clarity:
spring-ai-mcp-core→mcpspring-ai-mcp-spring→spring-ai-mcpspring-ai-mcp→mcp-parent
 
Other Improvements
- Optimized scheduler usage by removing unnecessary 
Schedulers.boundedElastic() 
PRs
- Improve examples in README.md by @chemicL in #2
 - feat(client): add convenience methods for listing operations without cursor by @tzolov in #3
 - feat: add SSE transport and improve project infrastructure by @tzolov in #5
 - feat(core): add roots list support and improve documentation by @tzolov in #26
 - feat(mcp-client): Add non-blocking tools change notification support by @tzolov in #28
 - feat: Add resources and prompts change notification support by @tzolov in #29
 - refactor: rename artifacts and restructure modules by @tzolov in #32
 - feat: implement MCP server with Server stdio/sse transport by @tzolov in #34
 
Contributors
Full Changelog: v0.1.0...v0.3.0
v0.2.0
Release Notes
Major Features
NOTE: breaking changes: Check the Module Restructuring section below. Additionally rename class StdioServerTransport  into StdioClientTransport .
This is a milestone release. It is not available on Maven Central. Add this repository to your POM:
<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone-local</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>Change Notification System
- Implemented comprehensive change notification support with non-blocking execution
 - Added notification handlers for tools, resources, and prompts
 - Introduced builder methods for configuring change consumers
 - Implemented consistent error handling and logging across all notification types
 - Utilized boundedElastic scheduler for non-blocking consumer execution
 
Transport and Session Improvements
- Added Server-Sent Events (SSE) transport implementation
 - Implemented roots list capability for filesystem boundary understanding
 - Enhanced client capabilities with roots and sampling features
 - Improved session components with comprehensive documentation
 - Optimized transport layer for non-blocking execution
 
API Enhancements
- Added convenience methods for listing operations without cursor parameter
- Simplified API for tools, resources, templates, and prompts listing
 - Improved usability for cases where pagination isn't required
 
 - Renamed 
withRequestTimeouttorequestTimeoutfor better API consistency 
Module Restructuring
- Renamed artifacts for better clarity and simplification:
spring-ai-mcp-core→mcpspring-ai-mcp-spring→spring-ai-mcpspring-ai-mcp→mcp-parent
 - Updated directory structure and GitHub workflow paths
 - Reorganized documentation structure