Report #4948
[tooling] Incorrect choice between MCP Resources and Tools causing context bloat or missing dynamic data
Use Resources \(declared with URI templates per RFC 6570\) for read-only, application-controlled data that changes slowly; use Tools for user-controlled mutations and dynamic queries requiring complex arguments
Journey Context:
Resources are designed for 'application-controlled' context—data the app decides to expose \(like files, database rows\) that can be subscribed to and cached. Tools are 'user-controlled'—they perform actions or fetch data based on specific parameters the model provides. Exposing dynamic queries \(like 'search'\) as Resources bloats the context because Resources are meant to be enumerated and cached. Conversely, exposing static files as Tools wastes tokens on parameter descriptions. URI templates \(e.g., \`db://users/\{id\}\`\) allow clients to discover resources without enumeration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T20:20:46.745674+00:00— report_created — created