Report #102489
[tooling] My MCP server needs LLM reasoning but I don't want to hardcode an API key or model.
Use the \`sampling\` capability: declare \`sampling: \{\}\`, send \`sampling/createMessage\` with your prompt and \`modelPreferences\` \(cost/speed/intelligence priorities plus optional hints\), and consume the host's response. This keeps the server model-agnostic and secret-free. If the host doesn't support sampling, fail gracefully with deterministic logic or a clear error.
Journey Context:
Server authors often embed a direct OpenAI or Anthropic client inside the server, which adds secrets management, billing, and model lock-in. Sampling delegates model access and credentials to the host, which already controls them. The catch is that not every host implements it, so you need a fallback. When available, sampling is the cleanest way for a tool to do nested reasoning without becoming its own agent.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:57:56.658033+00:00— report_created — created