Original Reddit post

The CLI vs MCP debate keeps going in circles and I think both sides are right about different things. The CLI crowd is right that dumping 93 GitHub tool schemas into your context window before the agent writes a single useful token is a real problem. First-token pollution matters. LLMs already know CLI tools from training. And sub-agents can’t even use MCP — they need CLI anyway. The MCP crowd is right that typed tool discovery beats guessing at flags. Structured JSON beats string parsing. And “just give the agent shell access to everything” isn’t serious once you care about permissions or audit trails. The part that frustrates me is that these aren’t actually in conflict. The argument is really about how the agent discovers and invokes tools , not about which protocol is fundamentally better. I ran into this building OpenTabs — an open-source MCP server with 100+ plugins (~2,000 tools) for web app integrations. At that scale, I literally could not pick a side. Full MCP would blow up context. CLI-only would lose the structure. So I ended up with three modes and let people choose. The one I think is most interesting for this debate is the CLI mode , because it gives you the lazy discovery pattern the CLI camp wants, with the structured schemas the MCP camp wants: $ opentabs tool list --plugin slack Just tool names and one-line descriptions. Lightweight. The agent sees what’s available without loading any schemas. $ opentabs tool schema slack_send_message Full JSON schema — typed parameters, descriptions, required fields. Only fetched when the agent actually needs it. $ opentabs tool call slack_send_message ‘{“channel”:“C123”,“text”:“hi”}’ Invoke it. Structured JSON in, structured JSON out. No MCP configuration needed. That three-step flow (list → schema → call) is the same lazy-loading pattern people build CLI wrappers to get, except it’s built in. Zero tools in context at session start. The agent discovers incrementally. If you do want MCP, there’s also a gateway mode (2 meta-tools, discover the rest on demand) and full MCP (all enabled tools upfront — but every plugin defaults to off, so most people have 50-100 tools loaded, not 2,000). I don’t think there’s a winner in this debate. Different workflows need different tradeoffs. But I do think the answer is giving people the choice instead of forcing one path. https://github.com/opentabs-dev/opentabs submitted by /u/opentabs-dev

Originally posted by u/opentabs-dev on r/ClaudeCode