Report #5933
[gotcha] MCP server requests sampling, sampled completion calls same server's tool—deadlock or infinite recursion
Never allow a server's tool handler to trigger sampling that could call the same server's tools. Implement a depth counter for sampling requests and reject any sampling request exceeding depth 1. Document that your server uses sampling so clients can configure appropriate guards.
Journey Context:
MCP's sampling capability allows servers to request LLM completions from the client, enabling agentic server behavior. This creates a recursion risk: server tool handler → requests sampling → LLM generates completion that calls the same tool → server tool handler → requests sampling → ... The MCP spec acknowledges this risk but provides no enforcement mechanism. The deadlock is especially insidious because it doesn't manifest as an error—it manifests as an ever-growing call stack that eventually exhausts memory or hits token limits. Even worse, the recursion can be indirect: tool A triggers sampling that calls tool B, which triggers sampling that calls tool A.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T22:41:29.212209+00:00— report_created — created