Skip to content

MCP Specification · 2026-07-28 · zh-TW

進度

Progress

以 progressToken 與 notifications/progress 回報長時間操作的進度。

Model Context Protocol(MCP)可以透過 notification message,為長時間執行的操作提供選用的進度追蹤。伺服器 MAY(可以)針對用戶端送出的請求傳送進度通知。

進度流程

如果用戶端希望接收某個請求的進度更新,它會在 request metadata 中加入 progressToken

  • progress token MUST(必須)是字串或整數。
  • 用戶端可以自行決定 token 的產生方式,但 token 在所有有效請求之間 MUST(必須)唯一。
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "some_method",
  "params": {
    "_meta": {
      "progressToken": "abc123"
    }
  }
}

伺服器之後 MAY(可以)送出進度通知,包含:

  • 原始 progressToken
  • 目前的 progress
  • 選用的 total
  • 選用的 message
{
  "jsonrpc": "2.0",
  "method": "notifications/progress",
  "params": {
    "progressToken": "abc123",
    "progress": 50,
    "total": 100,
    "message": "Reticulating splines..."
  }
}
  • progress 值在每一次通知中都 MUST(必須)增加,即使不知道總量也一樣。
  • progresstotal MAY(可以)是浮點數。
  • message SHOULD(應該)提供與目前進度相關、可供人閱讀的資訊。

行為要求

  1. 進度通知 MUST(必須)只指向由有效請求提供,而且仍對應進行中操作的 token。
  2. 伺服器收到帶有 progress token 的請求後,仍 MAY(可以)完全不送出進度通知,也可以自行決定通知頻率;若不知道總量,可以省略 total

典型流程是:用戶端送出帶有 progress token 的 request;伺服器在操作期間送出一連串 notifications/progress;操作完成後,再送出最終 method response。

實作注意事項

  • 用戶端與伺服器 SHOULD(應該)追蹤目前有效的 progress token。
  • 雙方 SHOULD(應該)實作 rate limiting,避免通知造成 flooding。
  • 操作完成後,進度通知 MUST(必須)停止。