Report #102569
[gotcha] MCP progress notifications are never sent because the client did not request a progressToken
When implementing an MCP client, pass an onprogress callback to callTool; when implementing a server, read \_meta.progressToken and skip progress notifications if it is absent.
Journey Context:
The TypeScript SDK only adds a progressToken to the outgoing \_meta field when an onprogress callback is provided. A no-op callback is sufficient; the SDK uses its presence, not its behavior. If the client omits it, the server receives no token and correctly emits no progress notifications, so resetTimeoutOnProgress has nothing to reset. This is a common client-side bug: setting resetTimeoutOnProgress: true without an onprogress handler silently disables the keepalive. Server authors should also guard on progressToken existence rather than crashing.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T05:06:03.976518+00:00— report_created — created