Enviar progreso para tareas largas
Transmita al cliente actualizaciones sobre el porcentaje completado.
Enviar progreso para tareas largas es una lección gratuita de MCP Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de MCP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de MCP Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Why Progress Matters
When a tool takes seconds or minutes, the client should not just hang. MCP lets your server send progress updates so the user sees movement.
The Progress Token
The client opts in by attaching a progressToken to the request. Without that token, your server simply skips sending updates.
Reach the Context Object
In the Python SDK, a tool receives a Context object. It is your handle for talking back to the client mid-call, including progress.
from mcp.server.fastmcp import Context
@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
return "done"Call report_progress
To push an update, you call ctx.report_progress. Each call tells the client how far along the work has come.
await ctx.report_progress(progress=3, total=10)Progress and Total
The total argument is the finish line. The client can divide progress by total to draw a percent-done bar for the user.
await ctx.report_progress(progress=5, total=10) # 50%Update Inside a Loop
The natural place to report is inside your work loop. After each chunk finishes, send one update so the bar climbs steadily.
for i, item in enumerate(items):
process(item)
await ctx.report_progress(i + 1, len(items))Progress Without a Total
Sometimes you cannot know the total upfront. You may omit it; the client then shows an indeterminate spinner instead of a precise bar.
await ctx.report_progress(progress=42) # total unknownAdd an Optional Message
Many SDK versions let you attach a short message to a progress call, like "Indexing files", giving the user friendly human context.
await ctx.report_progress(2, 5, message="Fetching pages")It Is a Notification
Progress travels as a JSON-RPC notification, so it has no reply and never blocks. Your tool keeps working while updates flow out.
Keep Updates Reasonable
Do not flood the client with thousands of tiny updates. Report at meaningful steps so the stream stays useful and lightweight.
Progress Plus a Result
Progress notifications are separate from your tool's return value. You stream updates as you go, then hand back the final result at the end.
await ctx.report_progress(10, 10)
return "index built"Quick Check
Test your grasp of how progress reporting begins.
Recap: Progress
You learned to call ctx.report_progress with progress and total, loop your updates, and let the client draw a live bar. Nice work!
Preguntas frecuentes
¿La lección «Enviar progreso para tareas largas» es gratis?
Sí — el texto completo de «Enviar progreso para tareas largas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de MCP Academy, actualiza a CoddyKit PRO. El curso de MCP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Enviar progreso para tareas largas»?
Transmita al cliente actualizaciones sobre el porcentaje completado. Practicas MCP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar MCP Academy?
No se requiere experiencia previa. MCP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Enviar progreso para tareas largas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de MCP Academy?
Sí. Cada lección de MCP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Enviar progreso para tareas largas
- Gestionar solicitudes de cancelación
- Registro estructurado para el cliente
- Establecer niveles de registro en tiempo de ejecución