[具身智能-344]:MCP Server的消息翻译与处理流程

张开发
2026/4/11 17:45:09 15 分钟阅读

分享文章

[具身智能-344]:MCP Server的消息翻译与处理流程
基于我们之前探讨的“MCP本质是结构化信息传递”以及“集中决策、分布式执行”的架构视角MCP Server 的消息处理流程实际上就是一个“翻译—决策—执行”的闭环过程。可以把 MCP Server 想象成一个“海关与物流中心”它接收来自外部AI/Client的标准化集装箱JSON拆箱检查解析根据货物类型分发给不同的工厂工具/资源处理完后再打包发回。以下是 MCP Server 内部消息处理的全链路深度解析 核心架构概览三层漏斗模型MCP Server 的处理流程通常分为三个核心层级传输层 (Transport Layer)负责物理连接和字节流传输Stdio 或 HTTP/SSE。协议层 (Protocol Layer)负责JSON-RPC 消息的解析、路由和会话管理。业务层 (Business Layer)负责具体的工具执行、资源读取和提示词生成。 详细处理流程五步曲第一步连接与握手在正式处理业务消息前Server 必须先“上线”。启动Server 作为一个独立进程Stdio模式或服务HTTP模式启动。握手Client 发送initialize请求。Server 接收后协商协议版本通常是 JSON-RPC 2.0并交换能力清单Capabilities例如“我支持 Tools但不支持 Prompts”。会话建立Server 为该 Client 分配一个会话 IDSession ID用于后续的状态隔离。第二步消息接收与“翻译”这里提到的“结构化信息传递”的关键入口。读取流Server 从 stdin标准输入或 HTTP POST 请求体中读取原始字节流。反序列化将原始字符串解析为 JSON 对象。输入{jsonrpc: 2.0, id: 1, method: tools/call, ...}动作Server 检查 JSON 格式是否合法是否符合 JSON-RPC 2.0 标准。第三步路由分发Server 根据 JSON 中的method字段将消息分发到不同的处理管道。MCP 定义了三大类原语路由逻辑如下消息类型 (Method)路由目标处理逻辑Tools(tools/call)执行器查找已注册的函数准备执行代码逻辑。Resources(resources/read)读取器查找文件路径或数据源 URI准备读取数据。Prompts(prompts/get)模板引擎查找预定义的提示词模板填充参数。初始化/列表(initialize,tools/list)元数据管理器返回 Server 自身的能力描述即你之前看到的 JSON Schema 定义。第四步业务执行这是 Server最核心的“苦力活”阶段。参数提取从params字段中提取参数如{price: 100, rate: 0.1}。类型校验Server 会利用 JSON Schema 对参数进行校验。如果 AI 传了字符串100而不是数字100Server 会在此处拦截并报错。调用实现工具调用执行对应的 Python/Node.js 函数。资源读取打开文件流读取内容转换为 Base64 或文本。异常捕获如果代码崩溃如除以零Server 会捕获异常并将其转换为标准的 JSON-RPC 错误对象。第五步响应封装与回传执行完毕后Server 需要将结果“翻译”回 AI 能听懂的语言。结果封装将执行结果包装在result字段中。输出{jsonrpc: 2.0, id: 1, result: {content: 税费为 10 元}}序列化将 JSON 对象转回字符串。发送通过 stdout 或 SSE 流将字符串写回给 Client。⚙️ 两种核心模式的差异根据传输方式的不同处理流程在底层略有区别1. Stdio 模式本地进程流程同步阻塞式。特点Client 启动 Server 进程 - Server 监听 stdin - 收到一行 JSON - 处理 - 输出一行 JSON - 进程保持运行。优势简单、低延迟适合本地文件操作。2. SSE / Streamable HTTP 模式远程服务流程异步事件驱动。特点Client 发送 HTTP POST 请求携带 JSON。Server 接收请求放入消息队列。Server 的处理线程从队列取消息执行。Server 通过 SSE 连接Server-Sent Events将结果“推”送给 Client。优势支持高并发、长连接适合云端部署。 总结从代码到智能的映射结合之前的深刻见解MCP Server 的消息处理流程本质上是在做一件事将 AI 的“意图”非结构化/半结构化 JSON映射为计算机的“动作”函数调用再将“结果”结构化数据翻译回 AI 的“认知”。输入AI 说“我要算税”Tools Call。处理Server 翻译为calculate_tax(price100, rate0.1)。输出Server 翻译回“结果是 10 元”Text Content。这个闭环就是 AI 能够操作物理世界和数字世界的基石。 流程总结为了让你更清晰地理解可以参考以下简化的调用链客户端请求 → 服务端响应Client Request→Server 读取请求(Read)→ServerJSON 解析(parse)→根据 method 路由(HandleRequest)→Server调用工具函数(Execute Tool)→构造响应(Create Response)→Server 写入(Write)→Client收到执行结果客户端通知 → 服务端处理不回包Client Notification→Server 读取(Read)→JSON 解析(parse)→根据 method 路由(HandleRequest)→调用通知处理器(Execute Notification)→结束(无响应)服务端主动推送Server 业务逻辑→构造通知(Create Notification)→Server 写入(Write)→Client

更多文章