MCP vs CLI vs skills: a 40-tool server can cost 12,000 tokens of definitions, a skill about 40. Decision table, three recipes, when to pick each.
A 40-tool MCP server can put roughly 12,000 tokens of tool definitions in front of your agent before it does anything, while a one-line skill costs about 40 tokens until Claude decides to use it. That gap is the whole argument behind the "just use the CLI" camp, and a 686-point Hacker News thread shows it is only half the story.[1] My short answer: use a CLI plus a skill for anything that already has a good command line, use MCP when you need hosted auth, policy or non-terminal clients, and use a skill alone when the job is a procedure, not a capability. The sections below give a decision table, the same Postgres task done three ways, the token math, and a pick-this-when list.
What the 686-point thread actually argued
The thread is about an Earendil post titled "You said no MCP". The team behind the Pi agent harness had rejected MCP and now supports it in core. Their reasoning: MCP changed, and the changes Pi needed (deferred tools, tools exposed only to a code sandbox) were useful beyond MCP.[2] Their own line on CLIs is the one people quote: CLIs work because "the agent and model just wire stuff together with efficient bashisms."
So the headline "agents prefer CLIs" is a simplification. The comments split by use case, not by ideology:
- Local developers with a terminal-capable agent mostly say a CLI or REST API plus a doc file is enough, and that many MCP servers could have been CLIs.
- Several commenters argue the opposite on security: an MCP server holds the API key so the agent never sees it, and enterprises get per-tool policy and fast revocation.
- Anyone shipping to chat apps like claude.ai or chatgpt.com points out a CLI does nothing there. MCP is the only door.
- The context-bloat complaint is real but harness-dependent. Some harnesses load every tool definition up front; others defer them.
The catch: the "MCP is dead" take and the "MCP wins" take are both wrong for the same reason. They describe different deployments.
The three layers, defined by what they actually are
MCP is a JSON-RPC protocol where a server exposes tools, resources and prompts to a host. The current spec is dated 2026-07-28 and describes stateless, self-contained requests with per-request capability negotiation.[3] In Claude Code you add servers over HTTP (recommended for remote), stdio (local process), or SSE (deprecated).[4]
A CLI is any command the agent can run through its shell tool. No protocol, no registration. The agent reads --help, or you tell it the flags.
A skill is a folder with a SKILL.md. Per the Claude Code docs, "skill descriptions are loaded into context so Claude knows what's available, but full skill content only loads when invoked."[5] Skills live at ~/.claude/skills/<name>/SKILL.md for personal use or .claude/skills/<name>/SKILL.md for a repo, and a skill can pre-approve commands with allowed-tools.
These are not rivals at the same level. A skill is instructions. A CLI is a capability. MCP is a capability with a contract. The popular pairing, a skill that teaches the agent to drive a CLI, is just the first two stacked.
Comments · 0
Beta: comments are stored locally on your device and not visible to other readers.
No comments yet. Be the first to share your thoughts.