Inviare l'avanzamento delle attività lunghe
Trasmetta al client aggiornamenti sulla percentuale di completamento.
Inviare l'avanzamento delle attività lunghe è una lezione MCP Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento MCP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso MCP Academy include 4 lezioni in totale.
Perché l’avanzamento è importante
Quando uno strumento impiega secondi o minuti, il client non dovrebbe limitarsi a rimanere bloccato. MCP consente al server di inviare aggiornamenti sull’avanzamento, così l’utente vede che il lavoro procede.
Il token di avanzamento
Il client attiva questa funzione allegando un progressToken alla richiesta. Senza quel token, il server evita semplicemente di inviare aggiornamenti.
Accedere all’oggetto Context
Nel Python SDK, uno strumento riceve un oggetto Context. È il riferimento con cui può comunicare con il client durante la chiamata, incluso l’avanzamento.
from mcp.server.fastmcp import Context
@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
return "done"Chiamare report_progress
Per inviare un aggiornamento, chiami ctx.report_progress. Ogni chiamata comunica al client quanto è avanzato il lavoro.
await ctx.report_progress(progress=3, total=10)Avanzamento e totale
L’argomento total rappresenta il traguardo. Il client può dividere l’avanzamento per il totale e visualizzare una barra con la percentuale completata.
await ctx.report_progress(progress=5, total=10) # 50%Aggiornare all’interno di un ciclo
Il punto naturale per inviare gli aggiornamenti è all’interno del ciclo di lavoro. Dopo ogni blocco completato, invii un aggiornamento così la barra avanza regolarmente.
for i, item in enumerate(items):
process(item)
await ctx.report_progress(i + 1, len(items))Avanzamento senza un totale
A volte non è possibile conoscere in anticipo il totale. Può ometterlo; in tal caso il client mostra un indicatore indeterminato invece di una barra precisa.
await ctx.report_progress(progress=42) # total unknownAggiungere un messaggio facoltativo
Molte versioni dell’SDK consentono di allegare un breve messaggio a una chiamata di avanzamento, come "Indexing files", per fornire all’utente un contesto chiaro e comprensibile.
await ctx.report_progress(2, 5, message="Fetching pages")È una notifica
L’avanzamento viaggia come una notifica JSON-RPC, quindi non prevede una risposta e non blocca mai l’esecuzione. Lo strumento continua a lavorare mentre gli aggiornamenti vengono inviati.
Mantenga gli aggiornamenti a una frequenza ragionevole
Non inondi il client con migliaia di aggiornamenti minuscoli. Comunichi l’avanzamento in passaggi significativi, così il flusso rimane utile e leggero.
Avanzamento e risultato
Le notifiche di avanzamento sono separate dal valore restituito dallo strumento. Invii gli aggiornamenti durante l’elaborazione, poi restituisca il risultato finale al termine.
await ctx.report_progress(10, 10)
return "index built"Verifica rapida
Verifichi di avere compreso come iniziare a segnalare l’avanzamento.
Riepilogo: avanzamento
Ha imparato a chiamare ctx.report_progress con avanzamento e totale, a inserire gli aggiornamenti in un ciclo e a lasciare che il client visualizzi una barra in tempo reale. Ottimo lavoro!
Domande Frequenti
La lezione «Inviare l'avanzamento delle attività lunghe» è gratuita?
Sì — il testo completo di «Inviare l'avanzamento delle attività lunghe» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso MCP Academy, passa a CoddyKit PRO. Il corso MCP Academy include 4 lezioni in totale.
Cosa imparerò in «Inviare l'avanzamento delle attività lunghe»?
Trasmetta al client aggiornamenti sulla percentuale di completamento. Eserciti MCP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare MCP Academy?
Non è richiesta alcuna esperienza precedente. MCP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Inviare l'avanzamento delle attività lunghe»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione MCP Academy?
Sì. Ogni lezione MCP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Inviare l'avanzamento delle attività lunghe
- Gestire le richieste di annullamento
- Logging strutturato verso il client
- Impostare i livelli di log in esecuzione