Skip to content

架构 ​

库分层 ​

┌─────────────────────────────────────┐
│  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(可选)