Progress
Documentation Index
完全なドキュメント索引は modelcontextprotocol.io/llms.txt で取得してください。 さらに調べる前に、このファイルを使って利用可能なすべてのページを見つけてください。
Model Context Protocol (MCP) は、長時間実行される操作について、notification メッセージを通じた任意の進捗追跡をサポートしています。どちらの当事者も progress notification を送信して、操作状態の更新を提供できます。
Progress Flow
ある当事者が request に対する進捗更新を受け取りたい場合、その request の metadata に progressToken を含めます。
- progress token は文字列または整数値でなければなりません (MUST)。
- progress token は送信側が任意の方法で選んでかまいませんが、すべての active request の間で一意でなければなりません (MUST)。
{
"jsonrpc": "2.0",
"id": 1,
"method": "some_method",
"params": {
"_meta": {
"progressToken": "abc123"
}
}
}
受信側は、その後、次の内容を含む progress notification を送信してもかまいません (MAY)。
- 元の progress token
- 現時点までの progress 値
- 省略可能な
total値 - 省略可能な
message値
{
"jsonrpc": "2.0",
"method": "notifications/progress",
"params": {
"progressToken": "abc123",
"progress": 50,
"total": 100,
"message": "Reticulating splines..."
}
}
progress値は、totalが不明であっても、notification のたびに増加しなければなりません (MUST)。progress値とtotal値には浮動小数点数を使ってもかまいません (MAY)。messageフィールドは、人が読める関連する進捗情報を提供するべきです (SHOULD)。
Behavior Requirements
-
progress notification は、次の条件を満たす token だけを参照しなければなりません (MUST)。
- active な request で提供されたものである
- 進行中の操作に関連付けられている
-
progress request の受信側は、次のようにしてもかまいません (MAY)。
- progress notification をまったく送らない
- 適切と判断する任意の頻度で notification を送る
- 不明な場合は
total値を省略する
-
task-augmented requests では、元の request で提供された
progressTokenを、CreateTaskResultが返された後であっても、その task の存続期間を通じて progress notification に使い続けなければなりません (MUST)。progress token は、task が terminal status に到達するまで、その task に関連付けられた有効なものとして残ります。- task に対する progress notification は、初回の task-augmented request で提供された同じ
progressTokenを使わなければなりません (MUST)。 - task に対する progress notification は、task が terminal status(
completed、failed、またはcancelled)に到達した後は停止しなければなりません (MUST)。
- task に対する progress notification は、初回の task-augmented request で提供された同じ
sequenceDiagram
participant Sender
participant Receiver
Note over Sender,Receiver: Request with progress token
Sender->>Receiver: Method request with progressToken
Note over Sender,Receiver: Progress updates
Receiver-->>Sender: Progress notification (0.2/1.0)
Receiver-->>Sender: Progress notification (0.6/1.0)
Receiver-->>Sender: Progress notification (1.0/1.0)
Note over Sender,Receiver: Operation complete
Receiver->>Sender: Method response
Implementation Notes
- 送信側と受信側は、active な progress token を追跡するべきです (SHOULD)。
- 両当事者は、過剰送信を防ぐために rate limiting を実装するべきです (SHOULD)。
- progress notification は、完了後に停止しなければなりません (MUST)。