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 注解提供全面支持,使构建能够无缝连接外部系统的复杂 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 实现遵循三层架构,以分离关注点,提高可维护性和灵活性:
图 1. MCP 栈架构
客户端/服务器层(顶层)
顶层处理主要的应用逻辑和协议操作:
-
McpClient - 管理客户端操作和服务器连接
-
McpServer - 处理服务端协议操作和客户端请求
-
两个组件均使用下层的会话层进行通信管理
会话层(中间)
中间层管理通信模式并维护连接状态:
-
McpSession - 核心会话管理接口
-
McpClientSession - 客户端特定的会话实现
-
McpServerSession - 服务端特定的会话实现
传输层(底层)
底层处理实际的消息传输和序列化:
-
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 流式传输 | ![]() |
| MCP Server | |
|---|---|
| MCP Server 是 Model Context Protocol(MCP)架构中的基础组件,为客户端提供工具、资源和能力。它实现了协议的服务端部分,负责: - 服务端协议操作的实现 - 工具的暴露与发现 - 基于 URI 的资源管理 - 提供并处理提示模板(Prompt template) - 与客户端进行能力协商 - 结构化日志与通知 - 并发客户端连接管理 - 同步与异步 API 支持 - 传输层实现: - Stdio、Streamable-HTTP、无状态 Streamable-HTTP、SSE | ![]() |
有关使用低级 MCP Client/Server API 的详细实现指南,请参阅 MCP Java SDK 文档。如需通过 Spring Boot 简化配置,请使用下文所述的 MCP Boot Starters。
Spring AI MCP 集成
Spring AI 通过以下 Spring Boot starters 提供 MCP 集成:
-
spring-ai-starter-mcp-client- 核心 starter,提供STDIO、基于 Servlet 的Streamable-HTTP、Stateless Streamable-HTTP和SSE支持 -
spring-ai-starter-mcp-client-webflux- 基于 WebFlux 的Streamable-HTTP、Stateless Streamable-HTTP和SSE传输实现
STDIO
| 服务器类型 | 依赖项 | 属性 |
|---|---|---|
| 标准输入/输出 (STDIO) | spring-ai-starter-mcp-server | spring.ai.mcp.server.stdio=true |
WebMVC
| 服务器类型 | 依赖项 | 属性 |
|---|---|---|
| SSE WebMVC | spring-ai-starter-mcp-server-webmvc | spring.ai.mcp.server.protocol=SSE 或留空 |
| Streamable-HTTP WebMVC | spring-ai-starter-mcp-server-webmvc | spring.ai.mcp.server.protocol=STREAMABLE |
| 无状态 Streamable-HTTP WebMVC | spring-ai-starter-mcp-server-webmvc | spring.ai.mcp.server.protocol=STATELESS |
WebMVC (Reactive)
| 服务器类型 | 依赖项 | 属性 |
|---|---|---|
| SSE WebFlux | spring-ai-starter-mcp-server-webflux | spring.ai.mcp.server.protocol=SSE 或为空 |
| Streamable-HTTP WebFlux | spring-ai-starter-mcp-server-webflux | spring.ai.mcp.server.protocol=STREAMABLE |
| 无状态 Streamable-HTTP WebFlux | spring-ai-starter-mcp-server-webflux | spring.ai.mcp.server.protocol=STATELESS |
除了程序化的 MCP 客户端与服务器配置外,Spring AI 还通过 MCP Annotations 模块为 MCP 服务器和客户端提供了基于注解的方法处理。这种方式使用简洁的声明式编程模型(Java 注解),简化了 MCP 操作的创建与注册。
MCP Annotations 模块使开发者能够:
-
使用简单注解创建 MCP 工具、资源和提示
-
以声明式方式处理客户端通知和请求
-
减少样板代码并提高可维护性
-
自动为工具参数生成 JSON Schema
-
访问特殊参数和上下文信息
主要特性包括:
附加资源
章节总结
📄️ MCP 客户端启动器
Spring AI MCP(模型上下文协议)客户端启动器为 Spring Boot 应用程序中的 MCP 客户端功能提供了自动配置。它支持具有多种传输选项的同步和异步客户端实现。
🗃️ MCP Server Boot Starters
3 个项目
📄️ MCP 安全(进行中)
Spring AI MCP Security 模块为 Spring AI 中的 Model Context Protocol 实现提供了全面的 OAuth 2.0 和基于 API 密钥的安全支持。这个社区驱动的项目使开发人员能够使用行业标准的身份验证和授权机制来保护 MCP 服务器和客户端。
🗃️ MCP Annotations
4 个项目

