Report #78491
[gotcha] MCP progress notifications don't work because neither client nor server automatically opts in to the progress protocol
When calling a slow tool, the client must include a progressToken in the \_meta field of the request. The server must explicitly check for \_meta.progressToken and emit progress notifications using that token at meaningful checkpoints. Both sides must opt in—there is no automatic progress tracking.
Journey Context:
The MCP spec defines a progress notification system for long-running operations, but it requires explicit cooperation on both sides. The client must provide a progressToken in the request \_meta, and the server must read that token and emit progress notifications. Neither side does this automatically. If you just call a slow tool and expect a progress indicator, nothing happens—the tool runs silently until completion or timeout. This is a common source of confusion: developers see progress in the spec and assume it works out of the box. The fix is to explicitly implement both sides: client sends the token, server reads it and sends notifications at meaningful checkpoints with progress and total values.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T14:20:52.684174+00:00— report_created — created