0Pricing
MCP Academy · レッスン

長時間タスクの進捗を送信する

完了率の更新をクライアントへストリーミングします。

「長時間タスクの進捗を送信する」はCoddyKit上の無料MCP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMCP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MCP Academyコースには全4レッスンが含まれています。

進捗が重要な理由

ツールの処理に数秒や数分かかる場合、クライアントはただ待ち続けるべきではありません。MCPを使うと、サーバーは進捗を更新して、ユーザーに処理が進んでいることを示せます。

進捗トークン

クライアントは、リクエストにprogressTokenを付けてオプトインします。このトークンがなければ、サーバーは更新の送信を省略します。

コンテキストオブジェクトにアクセスする

Python SDKでは、ツールがContextオブジェクトを受け取ります。これは、進捗を含め、呼び出しの途中でクライアントに応答するための手段です。

from mcp.server.fastmcp import Context

@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
    return "done"

report_progressを呼び出す

更新を送信するには、ctx.report_progressを呼び出します。呼び出すたびに、処理がどこまで進んだかをクライアントに伝えます。

await ctx.report_progress(progress=3, total=10)

進捗と合計値

total引数はゴールを表します。クライアントは進捗をtotalで割り、ユーザーに完了率のバーを表示できます。

await ctx.report_progress(progress=5, total=10)  # 50%

ループ内で更新する

報告する自然な場所は、処理のループ内です。各チャンクの処理が終わるたびに更新を1回送信すれば、バーが着実に進みます。

for i, item in enumerate(items):
    process(item)
    await ctx.report_progress(i + 1, len(items))

合計値なしの進捗

最初に合計値が分からない場合もあります。その場合は省略でき、クライアントは正確なバーの代わりに不確定なスピナーを表示します。

await ctx.report_progress(progress=42)  # total unknown

オプションのメッセージを追加する

多くのSDKバージョンでは、進捗の呼び出しに短いメッセージを付けられます。「ファイルをインデックス化しています」のようなメッセージにより、ユーザーに分かりやすい状況を伝えられます。

await ctx.report_progress(2, 5, message="Fetching pages")

これは通知です

進捗はJSON-RPCの通知として送信されるため、応答はなく、処理をブロックすることもありません。更新を送信しながら、ツールは処理を続けられます。

更新頻度を適切に保つ

数千件もの小さな更新をクライアントに送り続けないでください。意味のある段階で報告し、ストリームを有用かつ軽量に保ちます。

進捗と結果

進捗通知は、ツールの戻り値とは別のものです。処理中は更新をストリーム送信し、最後に最終結果を返します。

await ctx.report_progress(10, 10)
return "index built"

確認問題

進捗報告がどのように開始されるか、理解度を確認しましょう。

まとめ:進捗

ctx.report_progressをprogressとtotalとともに呼び出し、ループ内で更新し、クライアントにリアルタイムのバーを表示させる方法を学びました。よくできました!

よくある質問

「長時間タスクの進捗を送信する」レッスンは無料ですか?

はい。「長時間タスクの進捗を送信する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MCP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MCP Academyコースには全4レッスンが含まれています。

「長時間タスクの進捗を送信する」で何を学びますか?

完了率の更新をクライアントへストリーミングします。 ブラウザで直接実行するハンズオンコードでMCP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

MCP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのMCP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「長時間タスクの進捗を送信する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このMCP Academyレッスンでコードを書いて実行できますか?

はい。すべてのMCP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 長時間タスクの進捗を送信する
  2. キャンセルリクエストを処理する
  3. クライアントへの構造化ログ
  4. 実行時にログレベルを設定する
← MCP Academyに戻る