跳到主要内容

Model Context Protocol (MCP)

提示:初次使用 MCP? 请从我们的 MCP 入门指南 开始,快速了解并查看实践示例。

Model Context Protocol (MCP) 是一个标准化协议,使 AI 模型能够以结构化的方式与外部工具和资源交互。 可以将其视为 AI 模型与现实世界之间的桥梁——允许它们通过一致的接口访问数据库、API、文件系统和其他外部服务。 它支持多种传输机制,以在不同环境中提供灵活性。

MCP Java SDK 提供了 Model Context Protocol 的 Java 实现,通过同步和异步通信模式实现与 AI 模型和工具的标准化交互。

Spring AI 通过专用的 Boot Starters 和 MCP Java Annotations 全面支持 MCP,使构建能够无缝连接到外部系统的复杂 AI 驱动应用程序变得前所未有的简单。 这意味着 Spring 开发者可以参与 MCP 生态系统的两个方面——构建消费 MCP 服务器的 AI 应用程序,以及创建将基于 Spring 的服务暴露给更广泛 AI 社区的 MCP 服务器。 使用 Spring Initializer 引导支持 MCP 的 AI 应用程序。

MCP Java SDK 架构

提示: 本节概述了 MCP Java SDK 架构。 有关 Spring AI MCP 集成,请参考 Spring AI MCP Boot Starters 文档。

Java MCP 实现遵循三层架构,将关注点分离以提高可维护性和灵活性:

.MCP Stack Architecture MCP Stack Architecture

Client/Server Layer (Top)

顶层处理主要应用程序逻辑和协议操作:

  • McpClient - 管理客户端操作和服务器连接
  • McpServer - 处理服务器端协议操作和客户端请求
  • 两个组件都利用下面的会话层进行通信管理

Session Layer (Middle)

中间层管理通信模式并维护连接状态:

  • McpSession - 核心会话管理接口
  • McpClientSession - 客户端特定的会话实现
  • McpServerSession - 服务器端特定的会话实现

Transport Layer (Bottom)

底层处理实际的消息传输和序列化:

  • McpTransport - 管理 JSON-RPC 消息序列化和反序列化
  • 支持多种传输实现(STDIO、HTTP/SSE、Streamable-HTTP 等)
  • 为所有更高级别的通信提供基础
MCP Client
MCP Client 是 Model Context Protocol (MCP) 架构中的关键组件,负责建立和管理与 MCP 服务器的连接。它实现协议的客户端,处理:

* 协议版本协商以确保与服务器的兼容性
* 能力协商以确定可用功能
* 消息传输和 JSON-RPC 通信
* 工具发现和执行
* 资源访问和管理
* Prompt 系统交互
* 可选功能:
** Roots 管理
** Sampling 支持
* 同步和异步操作
* 传输选项:
** 基于 Stdio 的传输,用于基于进程的通信
** 基于 Java HttpClient 的 SSE 客户端传输
** WebFlux SSE 客户端传输,用于响应式 HTTP 流式传输

Java MCP Client Architecture
MCP Server
MCP Server 是 Model Context Protocol (MCP) 架构中的基础组件,向客户端提供工具、资源和能力。它实现协议的服务器端,负责:

* 服务器端协议操作实现
** 工具暴露和发现
** 基于 URI 的资源管理
** Prompt 模板提供和处理
** 与客户端的能力协商
** 结构化日志记录和通知
* 并发客户端连接管理
* 同步和异步 API 支持
* 传输实现:
** Stdio、Streamable-HTTP、Stateless Streamable-HTTP、SSE

Java MCP Server Architecture

有关使用低级 MCP Client/Server API 的详细实现指导,请参考 MCP Java SDK 文档。 要使用 Spring Boot 进行简化设置,请使用下面描述的 MCP Boot Starters。

Spring AI MCP 集成

Spring AI 通过以下 Spring Boot starters 提供 MCP 集成:

Client Starters

  • spring-ai-starter-mcp-client - 核心 starter,提供 STDIO、基于 Servlet 的 Streamable-HTTPStateless Streamable-HTTPSSE 支持
  • spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的 Streamable-HTTPStateless Streamable-HTTPSSE 传输实现

Server Starters

STDIO

Server TypeDependencyProperty
Standard Input/Output (STDIO)spring-ai-starter-mcp-serverspring.ai.mcp.server.stdio=true

WebMVC

Server TypeDependencyProperty
SSE WebMVCspring-ai-starter-mcp-server-webmvcspring.ai.mcp.server.protocol=SSE or empty
Streamable-HTTP WebMVCspring-ai-starter-mcp-server-webmvcspring.ai.mcp.server.protocol=STREAMABLE
Stateless Streamable-HTTP WebMVCspring-ai-starter-mcp-server-webmvcspring.ai.mcp.server.protocol=STATELESS

WebMVC (Reactive)

Server TypeDependencyProperty
SSE WebFluxspring-ai-starter-mcp-server-webfluxspring.ai.mcp.server.protocol=SSE or empty
Streamable-HTTP WebFluxspring-ai-starter-mcp-server-webfluxspring.ai.mcp.server.protocol=STREAMABLE
Stateless Streamable-HTTP WebFluxspring-ai-starter-mcp-server-webfluxspring.ai.mcp.server.protocol=STATELESS

Spring AI MCP Annotations

除了程序化的 MCP 客户端和服务器配置外,Spring AI 还通过 MCP Annotations 模块为 MCP 服务器和客户端提供基于注解的方法处理。 这种方法使用简洁的声明式编程模型和 Java 注解简化了 MCP 操作的创建和注册。

MCP Annotations 模块使开发者能够:

  • 使用简单的注解创建 MCP 工具、资源和 prompts
  • 以声明方式处理客户端通知和请求
  • 减少样板代码并提高可维护性
  • 自动为工具参数生成 JSON schemas
  • 访问特殊参数和上下文信息

主要功能包括:

  • Server Annotations: @McpTool@McpResource@McpPrompt@McpComplete
  • Client Annotations: @McpLogging@McpSampling@McpElicitation@McpProgress
  • Special Parameters: McpSyncServerExchangeMcpAsyncServerExchangeMcpTransportContextMcpMeta
  • Automatic Discovery: 具有可配置包包含/排除的注解扫描
  • Spring Boot Integration: 与 MCP Boot Starters 无缝集成

其他资源

Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。