04 · MRTR 与客户端能力
这是全协议最巧妙的一章。问题:无状态协议里,服务器处理一个工具调用时,发现“我得先问问用户的 GitHub 用户名 / 先让 LLM 生成一段文本 / 先要客户端的工作目录”——它怎么反过来向客户端要东西,又不留任何服务器端状态?答案是 MRTR(Multi Round-Trip Requests,多轮往返请求)。
4.1 旧做法 vs 新做法
旧版(2025-11-25 及更早):服务器直接朝客户端发一个 JSON-RPC 请求(如 sampling/createMessage)。这要求传输层支持“服务器→客户端的独立请求”,且服务器得记住“我正等着这个回复”——这就是状态。
draft 版:这种服务器发起的请求被彻底废除,全部改走 MRTR(docs/specification/draft/basic/patterns/mrtr.mdx:7,这是 breaking change)。