Skip to content
MCP 文档版本 2026-07-28 更新于 2026-10-14

总览

本页定义核心协议的消息模式(message patterns):客户端与服务端如何把 JSON-RPC 的 请求、响应与通知 组合成一次交互。每一种 传输 都承载全部这些模式;传输之间的差异只在于消息如何分帧(framing)与投递。

每一次交互都从客户端开始:

  • 客户端发出 JSON-RPC 请求 与 通知。
  • 服务端对每个请求回以一个 JSON-RPC 响应(result 或 error),在此之前可以先发出若干作用于该请求的通知。

服务端 MUST NOT(不得)主动发起 JSON-RPC 请求,客户端也不发送 JSON-RPC 响应。

请求与响应(Request and Response)

客户端发出请求,服务端用一个 result 或 error 作答。在请求处理期间,服务端 MAY(可以)发出作用于该请求的通知,例如 notifications/progress 和 notifications/message。

sequenceDiagram
    participant Client
    participant Server

    Client->>Server: request
    Server-->>Client: notifications/progress (optional)
    Server-->>Client: response

多轮往返请求(Multi Round-Trip Requests)

当服务端需要客户端提供输入(sampling、elicitation 或 roots)才能完成某个请求时,它回以一个 InputRequiredResult, 然后客户端带上与之对应的 inputResponses 重试该请求。详见 多轮往返请求。

sequenceDiagram
    participant Client
    participant Server

    Client->>Server: request (id: 1)
    Server-->>Client: InputRequiredResult (inputRequests)
    Client->>Server: request (id: 2, original params + inputResponses)
    Server-->>Client: response

订阅与通知(Subscribe and Notify)

若要接收变更通知(列表变更、资源更新),客户端发送一个 subscriptions/listen 请求;其回复是一条长期存活的流,只推送客户端订阅的通知类型。流的状态作用域属于该请求本身: 一旦底层通道断开,客户端应重新发起该请求。

sequenceDiagram
    participant Client
    participant Server

    Client->>Server: subscriptions/listen
    Server-->>Client: notifications/subscriptions/acknowledged
    note over Client,Server: Stream stays open
    Server-->>Client: notifications/* (tagged with subscriptionId)

新增模式(Adding Patterns)

所有核心协议特性都由这些模式构建而成。某个协议修订版若要新增一种模式,就在本页定义它。 传输层无需任何改动即可承载新模式 —— 因为模式完全是用请求、响应与通知来表达的。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。