Report #101075
[tooling] Should I expose read-only data as an MCP Resource or as a tool that fetches it?
Expose static, read-only context as a Resource \(URI-addressed, chosen by the user/app, no tool-description tokens, no LLM decision overhead\). Use a Tool only when the model must decide when to invoke it, when it takes action/side effects, or when it needs LLM-constructed parameters.
Journey Context:
Resources are application-controlled context; Tools are model-controlled actions. Docs, schemas, configs, and catalogs belong in Resources because the user or app can preload them once. Making the model call a 'fetch' tool burns tokens on the tool description and an extra turn, and can fail if the model never decides to fetch. Many servers overuse Tools for reference data; using Resources where appropriate reduces latency and token cost. Side-effectful or parameter-heavy operations still belong in Tools.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-06T04:56:43.741263+00:00— report_created — created