進度
協議版本: 2024-11-05
模型上下文協議(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
}
}- 即使總計未知,
progress值也必須隨每個通知增加。 progress和total值可以是浮點數。
行為要求
進度通知必須只引用以下令牌:
- 在活動請求中提供的
- 與進行中操作相關聯的
進度請求的接收者可以:
- 選擇不發送任何進度通知
- 以他們認為適當的頻率發送通知
- 如果未知,則省略總計值
sequenceDiagram
participant Sender
participant Receiver
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: 方法響應
實現注意事項
- 發送方和接收方應該跟蹤活動的進度令牌
- 雙方應該實現速率限制以防止氾濫
- 完成後進度通知必須停止