Releases: spring-projects-experimental/spring-ai-mcp
Releases · spring-projects-experimental/spring-ai-mcp
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
SseClientTransport
renamed toWebFluxSseClientTransport
SseServerTransport
renamed toWebFluxSseServerTransport
Project Structure Changes
- Test utilities relocated to new
mcp-test
module - 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
→mcp
spring-ai-mcp-spring
→spring-ai-mcp
spring-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
withRequestTimeout
torequestTimeout
for better API consistency
Module Restructuring
- Renamed artifacts for better clarity and simplification:
spring-ai-mcp-core
→mcp
spring-ai-mcp-spring
→spring-ai-mcp
spring-ai-mcp
→mcp-parent
- Updated directory structure and GitHub workflow paths
- Reorganized documentation structure