Report #26747
[tooling] High token burn from polling Resources that change frequently
Expose volatile state \(changing >1Hz\) as a Tool \(e.g., \`get\_current\_metrics\`\) instead of a Resource. For truly real-time data, use HTTP transport with Server-Sent Events \(SSE\) and implement the \`notifications/resources/updated\` pattern only for stable resources. Never implement a Resource that requires the agent to poll in a loop to detect changes.
Journey Context:
MCP Resources are designed for 'pull' access to relatively stable application state \(file contents, database schemas\). When developers expose volatile metrics \(CPU usage, stock prices, log tails\) as Resources, agents adopt a polling pattern \(\`resources/read\` in a loop\) to stay current, burning massive context window on identical repeated content. The correct mental model: Resources are for 'state you snapshot', Tools are for 'state you sample'. For real-time push, the MCP spec supports notifications over SSE, but this is complex to implement; the 80% solution is simply using a Tool for volatile data, accepting the small latency of on-demand sampling vs. continuous polling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:17:49.664406+00:00— report_created — created