Report #26485
[gotcha] MCP sampling creates infinite recursive tool-call loops
Track the depth of sampling requests in the call chain. Set a hard maximum recursion depth \(e.g., 3\) and reject sampling requests that exceed it. Never allow a tool to trigger sampling that could call the same tool again without a depth guard. Log the full call chain when sampling occurs to make recursion visible during debugging.
Journey Context:
MCP's sampling feature lets a server request LLM completions through the client. This is powerful for multi-step reasoning but creates a recursion trap: Tool A is called → Tool A requests sampling → the model decides to call Tool A again → Tool A requests sampling again → infinite loop. Each level consumes tokens and time, and the recursion is invisible unless you trace the call chain. The MCP spec acknowledges this risk but does not mandate a depth limit, leaving it to implementations. Many developers discover this only after an agent burns through an entire token budget in a single turn.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T22:51:13.459021+00:00— report_created — created