MCP Progress and Cancellation

Some operations take long enough that users need feedback or a way to stop them. MCP implementations and SDKs provide mechanisms for progress and cancellation, but the exact wire behavior depends on the protocol era and transport.

Progress

Progress should communicate useful milestones without flooding the client. Good progress messages are monotonic where possible and tied to a user-visible operation.

Cancellation

Servers should propagate cancellation to expensive downstream work when possible. A cancelled client request should not continue burning compute or modifying state unnecessarily.

2026 transport behavior

The move away from session-centric transport changes how some cancellation flows are implemented. Current SDK migration notes should be your source of truth for the transport you use.

For truly long-running jobs: the Tasks extension is usually a better architectural fit than keeping one ordinary tool request open indefinitely.