Report #50474
[frontier] MCP tool servers cannot reason—they can only execute deterministic logic and return raw data
Use MCP's sampling capability \(sampling/createMessage\) to let tool servers request LLM completions from the client. This enables servers to perform reasoning subtasks internally, such as ranking search results or interpreting ambiguous queries, without the client needing to orchestrate multi-step tool-call-reason cycles.
Journey Context:
Most MCP implementations treat servers as simple tool executors: client calls tool, server runs deterministic code, server returns result. But the MCP spec includes a sampling capability that allows servers to make requests back to the client's LLM. This inverts the normal control flow: instead of only the client driving reasoning and calling tools, the server can request LLM completions when it needs intelligence. Concrete applications: \(1\) a code-search server that retrieves candidate results then asks the LLM to rank them by relevance to the query, \(2\) a database server that asks the LLM to interpret a natural-language filter before constructing SQL, \(3\) a log-analysis server that asks the LLM to classify error patterns in raw output before returning a summary. This creates a recursive agent architecture where tool servers become semi-autonomous sub-agents. Tradeoff: adds latency \(each sampling request is a full LLM call\), increases cost, and creates risk of infinite recursion \(server calls LLM which calls server which calls LLM\). Mitigate with: \(1\) depth limits on recursive sampling, \(2\) model preferences in sampling requests \(use fast/cheap models for server-side reasoning\), \(3\) clear contracts about when sampling is appropriate vs. when the server should just return raw data. This pattern is very early—most MCP server implementations do not use sampling yet—but it unlocks a fundamentally more capable tool-server architecture.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T15:12:28.844477+00:00— report_created — created