--- title: Progress Monitoring sidebarTitle: Progress description: Handle progress notifications from long-running server operations. icon: bars-progress --- import { VersionBadge } from '/snippets/version-badge.mdx' Use this when you need to track progress of long-running operations. MCP servers can report progress during operations. The client receives these updates through a progress handler. ## Progress Handler Set a handler when creating the client: ```python from fastmcp import Client async def progress_handler( progress: float, total: float | None, message: str | None ) -> None: if total is not None: percentage = (progress / total) * 100 print(f"Progress: {percentage:.1f}% - {message or ''}") else: print(f"Progress: {progress} - {message or ''}") client = Client( "my_mcp_server.py", progress_handler=progress_handler ) ``` The handler receives three parameters: Current progress value Expected total value (may be None if unknown) Optional status message ## Per-Call Handler Override the client-level handler for specific tool calls: ```python async with client: result = await client.call_tool( "long_running_task", {"param": "value"}, progress_handler=my_progress_handler ) ```