Overview¶
Architecture¶
The SDK follows a layered architecture with clear separation of concerns:
- Client/Server Layer (McpClient/McpServer): Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations.
- Session Layer (McpSession): Manages communication patterns and state.
- Transport Layer (McpTransport): Handles JSON-RPC message serialization/deserialization via:
- StdioTransport (stdin/stdout) in the core module
- HTTP SSE transports in dedicated transport modules (Java HttpClient, Servlet)
- Streamable HTTP transports for efficient bidirectional communication
- Spring WebFlux and Spring WebMVC transports (available in Spring AI 2.0+)
The MCP Client is a key component in the Model Context Protocol (MCP) architecture, responsible for establishing and managing connections with MCP servers. It implements the client-side of the protocol.

The MCP Server is a foundational component in the Model Context Protocol (MCP) architecture that provides tools, resources, and capabilities to clients. It implements the server-side of the protocol.

Key Interactions:
- Client/Server Initialization: Transport setup, protocol compatibility check, capability negotiation, and implementation details exchange.
- Message Flow: JSON-RPC message handling with validation, type-safe response processing, and error handling.
- Resource Management: Resource discovery, URI template-based access, subscription system, and content retrieval.
Module Structure¶
The SDK is organized into modules to separate concerns and allow adopters to bring in only what they need:
| Module | Artifact ID | Group | Purpose |
|---|---|---|---|
mcp-bom |
mcp-bom |
io.modelcontextprotocol.sdk |
Bill of Materials for dependency management |
mcp-core |
mcp-core |
io.modelcontextprotocol.sdk |
Core reference implementation (STDIO, JDK HttpClient, Servlet, Streamable HTTP) |
mcp-json-jackson2 |
mcp-json-jackson2 |
io.modelcontextprotocol.sdk |
Jackson 2.x JSON serialization implementation |
mcp-json-jackson3 |
mcp-json-jackson3 |
io.modelcontextprotocol.sdk |
Jackson 3.x JSON serialization implementation |
mcp |
mcp |
io.modelcontextprotocol.sdk |
Convenience bundle (mcp-core + mcp-json-jackson3) |
mcp-test |
mcp-test |
io.modelcontextprotocol.sdk |
Shared testing utilities and integration tests |
mcp-spring-webflux (external) |
mcp-spring-webflux |
org.springframework.ai |
Spring WebFlux integration — part of Spring AI 2.0+ |
mcp-spring-webmvc (external) |
mcp-spring-webmvc |
org.springframework.ai |
Spring WebMVC integration — part of Spring AI 2.0+ |
Tip
A minimal adopter may depend only on mcp (core + Jackson 3). Spring-based applications should use the mcp-spring-webflux or mcp-spring-webmvc artifacts from Spring AI 2.0+ (group org.springframework.ai), no longer part of this SDK.
Next Steps¶
-
Quickstart
Get started with dependencies and BOM configuration.
-
MCP Client
Learn how to create and configure MCP clients.
-
MCP Server
Learn how to implement and configure MCP servers.
-
GitHub
View the source code and contribute.