Benchmark Report Daniel Reales

It's not CLI vs MCP.
It's what the model
already knows.

Everyone frames it as a choice: CLI tools or MCP servers? We ran 8 identical multi-step tasks across 4 services both ways and measured every token. The winner isn't the mechanism — it's model familiarity with the tool.

Daniel Reales·March 2026·8 pipelines, 4 services, $3.56 spent

CLI + Skills

Claude runs gh, psql, notion-cli, and slack-cli through Bash. It discovers subcommands, pipes output, and parses text. Fastest when it already knows the tool cold.

MCP Servers

Claude calls structured tool endpoints — typed input, typed output, no shell. Tool schemas are auto-injected into context. Fastest when orchestrating operations it hasn't seen before.

Familiarity wins. Every time.

Known tools = CLI wins

Claude knows psql and gh from training data. Result: 3–5x cheaper via CLI. One compound command, one turn, done.

Unknown tools = MCP wins

Claude doesn't know notion-cli or slack-cli. MCP was 1.4–2.3x cheaper because its auto-injected schemas skip the discovery tax.

Teach the tool = CLI wins again

When we added CLI cheatsheets to the prompt (like a good CLAUDE.md), CLI flipped from losing to winning on Slack. The mechanism doesn't matter — knowledge does.

See it yourself

Same prompt. Same task. Two completely different execution paths.

Cost per task

Each pair of bars is one task. The shorter bar won.

By service

The pattern is clear when you aggregate. Model familiarity is the deciding factor.

The context tax

Every MCP tool call loads the full tool schema into context. On every turn. This "context tax" is invisible in the API response but shows up clearly in token consumption.

What if you teach the model the CLI?

MCP's advantage comes from auto-injected schemas. We re-ran every task with accurate CLI cheatsheets — equivalent to a well-written CLAUDE.md.

Full results

Every task, both variants, with context overhead.

TaskServiceCLIMCPCLI TimeMCP TimeCLI CtxMCP CtxWinner

Stop asking "CLI or MCP?"

The right question is: does the model already know this tool?

If yes — use CLI. It's cheaper, faster, and pipelines naturally. If no — either use MCP (auto-injected schemas) or teach the model via CLAUDE.md. Both work. The cost driver isn't the mechanism. It's the number of turns the model needs to figure out what to do.