- MCP - if you need discoverability. a great example for this is something like context7
- CLI/API + Skill: When you have a defined workflow you want to use. For me a good example of this is using the Linear GraphQL API instead of their MCP
I prefer the Linear API because, where I work, we have come up with our way of using the tool so I don't need the entire MCP to do what I need the agent to do. I think for most use cases an MCP is a waste of context.
That said, MCP could be an effective way to sandbox what an agent can do with a tool. Also, it seems plausible to me that a tool that actually provided information to a model via the MCP protocol could be more useful than a CLI tool which operates in the "silence means success" mode of most unix CLI tools.
Basically, make a design choice for _reasons_ and not just because you like that TLA of the option you picked.
They are insecure, dangerous have footguns and based on old primitives that are bad for humans and agents.
CLIs are just a trendy fad currently but will fade away for anything used in serious usecases.
Why would you want to use a CLI for an API when an API is more quicker and less error prone than CLIs.
We need to move away from suboptimally thinking CLIs solve the problem of less token usage entirely.
In the long run, MCPs are only in its infancy stage, and make the most sense for businesses and actual users.
Just because an agent can use a CLI doesn't mean it's the best solution, IMO it is the worst solution.
I would pick the second option. CLI.
However, for CRUD B2B SaaS I think MCP works fine (if not better than CLI).
If we think back, even HTTP needed a decade to stabilize and dominate the other early web protocols. Before we throw out MCP, we'll have to see how important stateful vs stateless is for agents. It is still early days of real-world development!
"Use the Chronosphere key at $ENVVAR and make yourself a CLI that uses the Chronosphere API. All I need you to do is run PromQL queries, whatever that API is"
And it wrote it in 60s and it works perfectly. I get the same results I got from the MCP server except there is less overhead, both in context and in my mind.
CLI for defined workflows where the developer knows exactly what they want. MCP for discovery — when an AI agent needs to figure out what tools are available and how to compose them.
The real unlock with MCP isn't replacing CLI commands. It's that you can expose a tool once and every AI agent that supports the protocol can use it without custom integration. We built an MCP server that wraps our entire testing and deployment pipeline. Any Claude, Cursor, or Windsurf session can discover and invoke those tools without us writing a plugin for each IDE.
The CLI vs. MCP framing is wrong. CLI is for humans. MCP is for agents. You need both.