
In one cross-app task, MCP retrieval took 21 calls. The equivalent filesystem stage took ~0.3 seconds.
MCP gets several important things right, particularly standardized integrations, authentication and transactional actions.
But should agents also depend on runtime MCP calls to gather substantial context across applications?
We tested this across 20 scenarios using the same agent harness, model, prompts and machines:
- Official Slack, Notion and Linear MCP integrations
- The same permitted data synchronized and mounted as files
The filesystem implementation was Locality, which I work on.
The most revealing trace involved identifying product-launch risks across Slack, Linear, Notion and a Git repository.
The MCP agent gathered the evidence iteratively:
- 21 MCP calls
- Roughly 30 seconds inside tool calls
- About one minute for the retrieval stage
The filesystem agent used parallel rg and file operations across the same sources. The equivalent stage took roughly 0.3 seconds.
Across 60 paired runs, the filesystem setup reduced LLM costs by 27% and end-to-end latency by 32%. Its answers were preferred in 70% of the blind comparisons.
Our takeaway is a separation of responsibilities:
- MCP for actions
- Filesystems for data and context
Locality keeps permitted application data synchronized and exposes it as files. The agent can then search, filter and combine context through one interface instead of traversing multiple application-specific tools during execution.
This isn’t necessarily an argument against MCP as a protocol. It is an argument against using runtime tool calls as the primary context-retrieval layer for broad, read-heavy work. Interestingly, MCP already supports file:// resources, but most integrations still expose context through tool calls rather than a filesystem-like resource layer.
The benchmark focused on cross-application research and synthesis rather than transactional actions.
For people building MCP servers and agent infrastructure: does this separation match what you’re seeing - MCP for actions and another layer for context?