Report #44400
[tooling] Choosing between MCP resource templates and tools for read-only data retrieval
Use Resource Templates with URI patterns \(e.g., \`weather://\{city\}/current\`\) instead of Tools for idempotent data lookup. This eliminates the tool-call roundtrip, reduces token usage by ~30-40%, and lets the LLM fetch data proactively via \`resources/read\` without explicit user requests.
Journey Context:
Developers default to Tools for all server capabilities because they're familiar with function-calling patterns. However, Tools incur latency \(request/response JSON blobs\) and token costs for the LLM to generate arguments. Resource Templates are designed for addressable data with URI schemes. The tradeoff: Resources lack side effects and complex input validation \(they only take URI parameters\), but for read-only data like user profiles, weather, or document sections, they're optimal. Most miss that Resources support dynamic listing via \`resources/list\` with templates, enabling the LLM to discover available data scopes before reading.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T04:59:41.562680+00:00— report_created — created