進度
協議版本: 草案
模型上下文協議(MCP)通過通知消息支持對長時間運行的操作進行可選的進度跟蹤。雙方都可以發送進度通知以提供有關操作狀態的更新。
進度流程
當一方希望為請求_接收_進度更新時,它會在請求元數據中包含一個 progressToken。
- 進度令牌必須是字符串或整數值
- 發送方可以使用任何方式選擇進度令牌,但必須在所有活動請求中是唯一的。
{
"jsonrpc": "2.0",
"id": 1,
"method": "some_method",
"params": {
"_meta": {
"progressToken": "abc123"
}
}
}接收方可以發送包含以下內容的進度通知:
- 原始進度令牌
- 到目前為止的當前進度值
- 可選的"總計"值
- 可選的"消息"值
{
"jsonrpc": "2.0",
"method": "notifications/progress",
"params": {
"progressToken": "abc123",
"progress": 50,
"total": 100,
"message": "正在重構樣條..."
}
}- 即使總計未知,
progress值也必須隨著每個通知增加。 progress和total值可以是浮點數。message字段應該提供相關的人類可讀進度信息。
行為要求
進度通知必須只引用以下令牌:
- 在活動請求中提供的
- 與正在進行的操作相關聯的
進度請求的接收方可以:
- 選擇不發送任何進度通知
- 以他們認為適當的頻率發送通知
- 如果未知,則省略總計值
sequenceDiagram
participant Sender as 發送方
participant Receiver as 接收方
Note over Sender,Receiver: 帶有進度令牌的請求
Sender->>Receiver: 帶有 progressToken 的方法請求
Note over Sender,Receiver: 進度更新
loop 進度更新
Receiver-->>Sender: 進度通知 (0.2/1.0)
Receiver-->>Sender: 進度通知 (0.6/1.0)
Receiver-->>Sender: 進度通知 (1.0/1.0)
end
Note over Sender,Receiver: 操作完成
Receiver->>Sender: 方法響應
實施說明
- 發送方和接收方應該跟蹤活動的進度令牌
- 雙方應該實施速率限制以防止氾濫
- 完成後必須停止進度通知