整体架构
MCP SDK 采用分层架构,主要分为以下几层:
1. 核心规范层 (spec 包)
2. 客户端实现层 (client 包)
3. 服务端实现层 (server 包)
4. 传输实现层 (transport 包)
主要特性
- 双模式支持:
- 同步 API (McpSyncClient/McpSyncServer)
- 异步 API (McpAsyncClient/McpAsyncServer)
- 核心功能:
工具调用 (Tools)
资源访问 (Resources)
提示模板 (Prompts)
日志系统 (Logging)
根目录管理 (Roots)
AI 采样支持 (Sampling)
传输实现:
标准输入输出 (Stdio)
HTTP SSE (Server-Sent Events)
WebFlux SSE
WebMVC SSE
设计模式:
工厂模式 (McpClient/McpServer)
构建器模式 (各种 Builder)
装饰器模式 (同步包装异步)
观察者模式 (事件通知)
关键交互流程
- 初始化流程:
- 消息处理流程:
资源管理流程:
这种分层架构使得代码结构清晰,各层职责明确,同时提供了良好的扩展性和可维护性。
让我来分析一下 McpSchema.java 中定义的 MCP 协议内容:
1. 协议基本信息
2. 协议方法定义
生命周期方法
工具相关方法
资源相关方法
Prompt 相关方法
日志相关方法
3. 主要数据结构
客户端能力
服务器能力
内容类型
根目录定义
4. 消息格式
JSON-RPC 消息
这个协议设计遵循了 JSON-RPC 2.0 规范,并在此基础上定义了特定的方法和数据结构,主要包括:
- 基础通信协议 (初始化、心跳)
- 工具管理 (发现、调用)
- 资源管理 (列表、读取、订阅)
- 提示模板管理 (列表、获取)
- 日志系统 (级别设置、消息通知)
- 变更通知机制 (工具、资源、提示模板的变更通知)
这种设计使得 AI 模型能够通过标准化的接口与外部工具和资源进行交互。