Skip to content

Releases: spring-projects-experimental/spring-ai-mcp

v0.5.0

13 Jan 11:34
Compare
Choose a tag to compare
v0.5.0 Pre-release
Pre-release

Release Notes

Breaking Changes

Transport Implementation Changes

  • Module Restructuring

    • SSE transport implementations moved to dedicated modules:
      • mcp-webflux-sse-transport: WebFlux-based SSE transport
      • mcp-webmvc-sse-transport: WebMVC-based SSE transport
    • Base MCP module no longer includes transport implementations
  • Class Renames

    • SseClientTransport renamed to WebFluxSseClientTransport
    • SseServerTransport renamed to WebFluxSseServerTransport

Project Structure Changes

Migration Guide

Users will need to:

  1. Update dependencies to include appropriate transport modules
  2. Update import statements for renamed transport classes
  3. Modify transport instantiation code
  4. 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

07 Jan 09:58
Compare
Choose a tag to compare
v0.4.2 Pre-release
Pre-release

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

04 Jan 17:17
Compare
Choose a tag to compare
v0.4.1 Pre-release
Pre-release

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

04 Jan 07:43
Compare
Choose a tag to compare
v0.4.0 Pre-release
Pre-release

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

30 Dec 12:30
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release

Release Notes

Minor milestone release improving the MCP Server stability.

Full Changelog: v0.3.0...v0.3.1

v0.3.0

29 Dec 17:36
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

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.stdioo.s.ai.mcp.client.transport
    • SseClientTransport: o.s.ai.mcp.client.sseo.s.ai.mcp.client.transport
    • ServerParameters: o.s.ai.mcp.client.stdioo.s.ai.mcp.client.transport

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-coremcp
    • spring-ai-mcp-springspring-ai-mcp
    • spring-ai-mcpmcp-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

21 Dec 18:04
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

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 to requestTimeout for better API consistency

Module Restructuring

  • Renamed artifacts for better clarity and simplification:
    • spring-ai-mcp-coremcp
    • spring-ai-mcp-springspring-ai-mcp
    • spring-ai-mcpmcp-parent
  • Updated directory structure and GitHub workflow paths
  • Reorganized documentation structure