Lately, I’ve had to connect my second-brain to a large number of services. Some via MCP, some through cli utilities. And cli turned out to have a mass of advantages:
- Tokens: cli is much more efficient. MCP wastes thousands of tokens just on tool schemas.
- Performance: cli is usually faster, as it has been refined by years of optimization.
- Capabilities: cli allows for precise low-level data processing through code and one-liners.
- Flexibility: Combinations of calls and output limiting via standard console methods and utilities like jq, yq, jc.
- Self-learning: LLMs natively understand cli. Learning happens via –help.
All this led to the fact that I have almost no MCP left :) Even playwright was replaced by playwright-cli. And the agent’s work with it became much more stable and faster, without creating a screenshot for every single action.
On the other hand, there are solutions for MCP problems with varying degrees of applicability:
- Simple reduction of tool schemas.
- Exposing MCP tools through included skills.
- Routing calls via proxy skills.
- Using LLM inside MCP to accept natural language requests. Ideally, with the ability to write and execute code inside the MCP.
- Code execution with MCP from Anthropic: https://www.anthropic.com/engineering/code-execution-with-mcp
Surely MCP will live and evolve, but the “just wrap your API in MCP” approach doesn’t seem to be working in the best way.