java-sdk/docs/ref-index.md
Christian Tzolov abd0facf4e feat: Add MCP server with Server stdio/sse transport improve MCP client
- Implement MCP server with async/sync support and builder pattern configuration
 - Add Server stdio/SSE transport layers with robust error handling
 - Convert McpClient and McpServer to interfaces for better extensibility
 - Add sampling capabilities for LLM interactions (text/image)
 - Implement dynamic root management and runtime tool management
 - Add comprehensive prompt and resource capabilities
 - Add support for dynamic root management (add/remove roots at runtime)

 Architecture Changes

 - Introduce registration records for tools, resources, and prompts
 - Improve thread safety with concurrent collections
 - Enhance resource template handling
 - Implement builder patterns for Server/Client capabilities
 - Add support for server capabilities and implementation info

Transport Layer:
 - Implement SseServerTransport with SSE endpoints
 - Add StdioServerTransport for process-based communication
 - Reorganize transport packages for better organization
 - Improve transport error handling and shutdown processes

Documentation:

 - Add detailed MCP reference documentation
 - Include architecture diagrams and API documentation
 - Add comprehensive test coverage for all components
 - Include sample projects demonstrating stdio/SSE transports

BREAKING CHANGES:

 Transport Package Reorganization

 - Move StdioClientTransport to o.s.ai.mcp.client.transport
 - Move SseClientTransport to o.s.ai.mcp.client.transport
 - Move ServerParameters to o.s.ai.mcp.client.transport
 - StdioClientTransport.errorHandler changed to private with
   setter method Migration: Use setErrorHandler() method
   instead of direct field access

 API Changes

 - Replace static factory methods with builder pattern
 - Update ServerCapabilities to use builder pattern
 - Make StdioClientTransport.errorHandler private with setter
 - Replace rootsListProvider with direct root management
 - Remove deprecated static factory methods

Resolves #27,#25,#24,#11
Related to #12
2024-12-28 21:03:29 +01:00

2.7 KiB

Spring AI MCP Reference Documentation

This documentation covers the Spring AI implementation of the Model Context Protocol (MCP) specification. The implementation follows the official MCP specification.

Component Hierarchy

1. Transport Layer

Transport

  • McpTransport Interface
  • Transport Implementations (SSE, STDIO)
  • Message Serialization/Deserialization

2. Session Layer

Session Management

  • McpSession Interface
  • DefaultMcpSession Implementation
  • Uses McpTransport for communication

3. High-Level Components

Both components operate at the same level, using McpSession internally:

Client

  • McpClient Factory
  • Synchronous and Asynchronous Implementations
  • Client Configuration and Builder Pattern

Server

  • McpServer Factory
  • Synchronous and Asynchronous Implementations
  • Server Configuration and Builder Pattern

4. Supporting Components

Error Handling

  • McpError
  • Error Codes and Handling
  • Exception Hierarchy

Component Relationships

┌─────────────┐    ┌─────────────┐
│  McpClient  │    │  McpServer  │
└─────────────┘    └─────────────┘
       │                  │
       └─────────┬────────┘
                 │
         ┌───────────────┐
         │   McpSession  │
         └───────────────┘
                 │
         ┌───────────────┐
         │  McpTransport │
         └───────────────┘

Package Organization

The implementation is organized under the org.springframework.ai.mcp package with the following structure:

  • org.springframework.ai.mcp.spec - Core interfaces and classes
    • McpTransport
    • McpSession
    • McpSchema
    • McpError
  • org.springframework.ai.mcp.client - Client implementations
    • McpClient
    • McpAsyncClient
    • McpSyncClient
    • Client-specific transports
  • org.springframework.ai.mcp.server - Server implementations
    • McpServer
    • McpAsyncServer
    • McpSyncServer
    • Server-specific transports
  • org.springframework.ai.mcp.util - Utility classes
    • Assert
    • Utils

Key Features

  • Synchronous and Asynchronous implementations
  • Multiple transport options (SSE, STDIO)
  • Comprehensive error handling
  • Builder pattern for configuration
  • Reactive programming support with Project Reactor
  • Type-safe message handling
  • Resource and prompt management
  • Tool discovery and execution
  • Change notification system