架构
库分层
┌─────────────────────────────────────┐
│ mcp-server mcp-client │ 服务器和客户端 API
├─────────────────────────────────────┤
│ mcp-protocol │ WireCodec、McpSessionHandler
├─────────────────────────────────────┤
│ mcp-transport mcp-http │ 传输层实现、Streamable HTTP、SSE
├─────────────────────────────────────┤
│ mcp-core │ 类型、JSON-RPC、接口
└─────────────────────────────────────┘mcp-core(STATIC)
核心协议类型和 JSON 基础设施:JsonValue(基于 std::variant 的递归 JSON)、JsonRpcRequest、JsonRpcResponse、JsonRpcNotification、JsonRpcErrorResponse、错误码、能力声明(ClientCapabilities、ServerCapabilities)、内容类型(TextContent、ImageContent、AudioContent、EmbeddedResource、ResourceLink)、传输层接口(ITransport、IClientTransport)。
mcp-transport(STATIC)
传输层实现:StdioServerTransport、StdioClientTransport、SseClientTransport、InMemoryTransport、WebSocketClientTransport、StreamableHttpServerTransport、StreamableHttpClientTransport。平台相关 I/O 位于 detail/ 目录下(posix、win32)。
mcp-protocol(STATIC)
JSON-RPC 引擎(McpSessionHandler):基于 MessageChannel 的异步消息循环、请求/响应关联与超时、通过 unordered_map 进行处理器分发、双时代 WireCodec(2025-11-25 initialize 握手 / 2026-07-28 每请求 _meta)、入站/出站 MessageFilter 管道。
mcp-server(STATIC)
McpServer:工具/资源/提示注册、IMcpTaskStore(含用于持久化的 FileTaskStore)、服务器到客户端的 Elicit、MRTR(InputRequiredResult,通过 MintRequestState 实现服务端 requestState 签名)、订阅管理、Streamable HTTP 的无状态模式。
mcp-client(STATIC)
McpClient:服务器发现(server/discover → initialize 回退)、版本协商、工具缓存、MRTR(通过 SendRequestWithMrtr 的 InputRequired 循环)、OAuth(PKCE、DCR、令牌刷新/撤销、FileTokenCache、private_key_jwt 断言、可选 DPoP 逐请求 proof)。
mcp-http(STATIC)
用于 Streamable HTTP 模式的 HTTP 服务器:HttpServer、EventStore(SSE 事件持久化和重放,含落盘持久化的 FileEventStore)、SessionStore/InMemorySessionStore(外部会话接管)、StreamableHttpServerTransport(含 Bearer 鉴权)、StreamableHttpClientTransport。
依赖图
mcp-core (STATIC)
mcp-transport (STATIC)
└── mcp-core(含自研网络栈:TCP/TLS/HTTP/WebSocket)
mcp-protocol (STATIC)
└── mcp-transport
mcp-http (STATIC)
└── mcp-transport(自研网络栈)
mcp-server (STATIC)
└── mcp-protocol
mcp-client (STATIC)
└── mcp-protocol + OpenSSL(可选)