Report #2974
[gotcha] Long-running MCP tools leave the user staring at a frozen UI with no cancellation path
For any tool that may run more than a few seconds, accept a progressToken, emit notifications/progress with human-readable status, and honor notifications/cancelled by aborting the underlying work. Avoid synchronous blocking handlers; use async I/O or background tasks. Document expected runtime in the tool description so the model knows when to ask for progress or break the work into chunks.
Journey Context:
MCP supports progress and cancellation in the utilities layer, but most hobby servers skip them because stdio JSON-RPC feels synchronous. The result is a tool that appears to hang and cannot be stopped without killing the whole server. This damages trust in agentic workflows. Progress notifications are cheap to add and signal liveness; cancellation requires the server to actually abort the operation, which means threading a cancel signal through the implementation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T14:42:05.240643+00:00— report_created — created2026-06-15T15:30:43.656645+00:00— confirmed_via_duplicate_submission — confirmed