The useful question is not “Is MCP expensive?” It is: how much standing tool information does this specific client put in this specific model request? Tool count, JSON bytes, tokenizer tokens, provider billing, latency, and task quality are different measurements. This experiment keeps them separate.
The hidden fixed cost
A direct MCP client can register every remote tool as a model-visible function. That is simple and usually correct for a small catalog. At 1,000 tools, however, the model receives 1,000 names, descriptions, and input schemas even when the current task needs one of them.
The cost is workload-dependent. A handful of hot-path tools may be better exposed directly. A large, multi-server, long-tail catalog creates a different problem: most schemas are irrelevant on most turns, yet they remain in the request unless the harness provides progressive disclosure.
Two stable interfaces, exact schemas on demand
MCP Lens is a DeepSeek Harness plugin that keeps the remote MCP catalog behind two model-facing interfaces:
mcp_search(query)ranks candidate tools locally and returns the selected tools' exactinputSchema.mcp_call(server, tool, arguments)invokes the explicit remote server/tool pair.
The remote tools do not disappear and their schemas are not summarized. The difference is timing: the complete catalog stays local; exact schemas enter model context only after search selects them.
What the pilot froze
- DeepSeek Harness
0.1.0-rc.6and DeepSeek V4 Flash. - The same generated 1,000-tool local stdio MCP server.
- The same three tasks: customer lookup, order lookup, and GitHub lookup.
- The same 25 non-MCP Harness tools in both arms.
- Provider-reported usage; cost recomputed from DeepSeek pricing retrieved on August 14, 2026.
That is why the full tool counts are 1,025 and 27: both arms include the same 25 Harness tools. The MCP-only comparison is 1,000 remote schemas versus mcp_search and mcp_call.
| Measurement | Direct MCP client | MCP Lens | Interpretation |
|---|---|---|---|
| Complete model-facing tools | 1,025 | 27 | Includes 25 shared non-MCP tools |
| MCP-facing interfaces | 1,000 | 2 | Remote catalog remains reachable |
request/header.tools JSON | 674,249 B | 27,401 B | Exact UTF-8 bytes, not tokens |
| Task completion | 3/3 | 3/3 | Three tasks, not a broad quality score |
| Estimated API cost | $0.0307204 | $0.0034707 | Uses the dated price snapshot |
| Output tokens | 491 | 794 | Lens added search and more output |
The result is not “free compression”
Lens adds an explicit search step. In this pilot, output tokens increased by 61.711%, from 491 to 794. Cold discovery also has connection and catalog work. The input-heavy reduction outweighed that cost in these three tasks, but a small catalog or frequently reused direct tools may not benefit.
No universal latency claim follows from this study. No universal cost claim follows either: model prices change, cache behavior changes the bill, and different tasks may need more search iterations.
When to try it
Good candidate
- Dozens to thousands of tools
- Multiple MCP servers
- Long-tail capabilities
- Tool schemas dominate standing input
Probably keep direct tools
- A few fixed tools
- Most tools are used every turn
- Minimum first-step latency matters most
- The model already receives a small schema surface
Measure before you install
The local-only catalog calculator accepts a sanitized tool array, {"tools":[...]}, {"schemas":[...]}, or a recorded request.header.tools payload. It calculates canonical JSON.stringify(...) UTF-8 bytes in your browser and does not upload the pasted schemas.
curl -fL -o dsh-mcp-lens-0.1.0-rc.8.tgz https://github.com/labmimors/dsh-mcp-lens/releases/download/v0.1.0-rc.8/dsh-mcp-lens-0.1.0-rc.8.tgz
dsh plugin --profile web add ./dsh-mcp-lens-0.1.0-rc.8.tgz
dsh --profile web
The repository includes a reproducible component benchmark runner, a dated live-pilot method with aggregate usage accounting, tests, and security limits. If search misses a real tool, share a sanitized case in the MCP Catalog Challenge; real counterexamples are more useful than praise.