Report #82977
[gotcha] Data-access operations implemented as MCP tools waste context and reduce agent quality — every data source consumes tool-definition tokens permanently
Use MCP Resources for data that the agent reads or queries \(files, database records, API data\). Use MCP Tools only for actions with side effects or computations. Resources are discovered on-demand via resources/list and resources/read, so their definitions do not consume context until explicitly requested. Tool definitions are always present in context.
Journey Context:
MCP provides two distinct primitives: Resources \(data sources, identified by URIs, read on-demand\) and Tools \(actions/computations, always in context\). A common mistake is implementing everything as tools — file readers, search interfaces, data lookups — because tools are more familiar and the resource abstraction feels unnecessary. But this has a compounding cost: every tool definition is always in the model's context, while resources are only loaded when needed. A system with 20 data-access tools and 5 action tools pays the context cost of 25 tool definitions constantly. If those 20 data sources were resources instead, only 5 tool definitions would be in context, and resources would be loaded only when the agent specifically requests them. The resource URI template system also provides a cleaner interface for parameterized data access than tool input schemas.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T21:52:17.333779+00:00— report_created — created