概述
Model Context Protocol (MCP) Java SDK 简介
Java SDK for the Model Context Protocol 使 AI 模型和工具之间的标准化集成成为可能。
功能
- MCP 客户端和 MCP 服务器实现支持:
- 多种传输实现:
- 默认传输(包含在核心
mcp
模块中,无需外部 Web 框架):- 基于 Stdio 的传输,用于基于进程的通信
- 基于 Java HttpClient 的 SSE 客户端传输,用于 HTTP SSE 客户端流
- 基于 Servlet 的 SSE 服务器传输,用于 HTTP SSE 服务器流
- 可选的基于 Spring 的传输(如果使用 Spring Framework 则方便):
- 基于 WebFlux 的 SSE 客户端和服务器传输,用于响应式 HTTP 流
- 基于 WebMVC 的 SSE 传输,用于基于 Servlet 的 HTTP 流
- 默认传输(包含在核心
- 支持同步和异步编程范式
核心 io.modelcontextprotocol.sdk:mcp
模块提供了默认的 STDIO 和 SSE 客户端和服务器传输实现,无需外部 Web 框架。
如果使用 Spring Framework,可以使用作为可选依赖的 Spring 特定传输。
架构
SDK 遵循分层架构,明确分离关注点:
- 客户端/服务器层 (McpClient/McpServer):两者都使用 McpSession 进行同步/异步操作,McpClient 处理客户端协议操作,McpServer 管理服务器端协议操作。
- 会话层 (McpSession):使用 DefaultMcpSession 实现管理通信模式和状态。
- 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息序列化/反序列化:
- 核心模块中的 StdioTransport(stdin/stdout)
- 专用传输模块中的 HTTP SSE 传输(Java HttpClient, Spring WebFlux, Spring WebMVC)
MCP 客户端是 Model Context Protocol (MCP) 架构中的关键组件,负责与 MCP 服务器建立和管理连接。它实现了协议的客户端部分。
MCP 服务器是 Model Context Protocol (MCP) 架构中的基础组件,向客户端提供工具、资源和功能。它实现了协议的服务器端部分。
关键交互:
- 客户端/服务器初始化:传输设置、协议兼容性检查、能力协商和实现细节交换。
- 消息流:JSON-RPC 消息处理,包括验证、类型安全的响应处理和错误处理。
- 资源管理:资源发现、基于 URI 模板的访问、订阅系统和内容检索。
依赖
将以下 Maven 依赖添加到您的项目中:
核心 MCP 功能:
核心 mcp
模块已经包含了默认的 STDIO 和 SSE 传输实现,无需外部 Web 框架。
如果您使用 Spring Framework 并希望使用 Spring 特定的传输实现,请添加以下可选依赖之一:
核心 MCP 功能:
核心 mcp
模块已经包含了默认的 STDIO 和 SSE 传输实现,无需外部 Web 框架。
如果您使用 Spring Framework 并希望使用 Spring 特定的传输实现,请添加以下可选依赖之一:
核心 MCP 功能:
核心 mcp
模块已经包含了默认的 STDIO 和 SSE 传输实现,无需外部 Web 框架。
如果您使用 Spring Framework 并希望使用 Spring 特定的传输实现,请添加以下可选依赖之一:
物料清单 (BOM)
物料清单 (BOM) 声明了给定版本所使用的所有依赖的推荐版本。 在您的应用程序构建脚本中使用 BOM 可以避免您自己指定和维护依赖版本。 相反,您使用的 BOM 版本决定了使用的依赖版本。 它还确保您默认使用支持和测试过的依赖版本,除非您选择覆盖它们。
将 BOM 添加到您的项目中:
Gradle 用户还可以通过利用 Gradle (5.0+) 对使用 Maven BOM 声明依赖约束的原生支持来使用 Spring AI MCP BOM。 这通过在 Gradle 构建脚本的 dependencies 部分添加一个 ‘platform’ 依赖处理方法来实现。 如上面的片段所示,然后可以按照一个或多个您希望使用的 spring-ai 模块(例如 spring-ai-openai)的 Starter 依赖进行无版本声明的声明。
将版本号替换为您想要使用的 BOM 版本。
可用依赖
以下依赖由 BOM 管理并可用:
- 核心依赖
io.modelcontextprotocol.sdk:mcp
- 提供 Model Context Protocol 实现的基础功能和 API 的核心 MCP 库,包括默认的 STDIO 和 SSE 客户端和服务器传输实现。无需外部 Web 框架。
- 可选传输依赖(如果使用 Spring Framework 则方便)
io.modelcontextprotocol.sdk:mcp-spring-webflux
- 用于响应式应用程序的基于 WebFlux 的服务器发送事件 (SSE) 传输实现。io.modelcontextprotocol.sdk:mcp-spring-webmvc
- 用于基于 Servlet 的应用程序的基于 WebMVC 的服务器发送事件 (SSE) 传输实现。
- 测试依赖
io.modelcontextprotocol.sdk:mcp-test
- 用于基于 MCP 的应用程序的测试工具和支持。
Was this page helpful?