--- title: Progress Monitoring sidebarTitle: Progress description: Handle progress notifications from long-running server operations. icon: bars-progress --- import { VersionBadge } from '/snippets/version-badge.mdx' MCP servers can report progress during long-running operations. The client can receive these updates through a progress handler. ## Progress Handler Set a progress handler when creating the client: ```python from fastmcp import Client async def my_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=my_progress_handler ) ``` ### Handler Parameters The progress handler receives three parameters: Current progress value Expected total value (may be None) Optional status message (may be None) ## Per-Call Progress Handler Override the progress handler for specific tool calls: ```python async with client: # Override with specific progress handler for this call result = await client.call_tool( "long_running_task", {"param": "value"}, progress_handler=my_progress_handler ) ```