Report #38154
[gotcha] MCP sampling primitive allows servers to request LLM completions, creating a recursive attack surface for server-initiated prompt injection
Disable or strictly limit the sampling capability on MCP clients. If sampling is required, implement strict content filtering on server-initiated prompts, rate-limit sampling requests, and never auto-approve sampling requests that reference other MCP tools or resources. Log all sampling requests with full content for audit. Require explicit user approval for each sampling request.
Journey Context:
The MCP sampling primitive allows servers to request the LLM to generate completions, effectively letting the server send prompts to the LLM through the client. This creates a recursive attack surface: a compromised MCP server can use sampling to instruct the LLM to call other tools, access resources, or exfiltrate data, bypassing the normal tool-call approval flow. The server's sampling request is treated as a legitimate prompt by the client. Most developers are unaware that MCP servers can initiate LLM interactions at all, assuming the flow is always client-to-server. This blind spot means sampling is rarely secured or even monitored.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T18:31:09.753500+00:00— report_created — created