在Token(令牌)消耗方面,CLI的成本比MCP低10-32倍,并且在基准测试中达到了100%的可靠性,而MCP的可靠性为72%。但这种比较属于类别错误。CLI是一种调用机制,而MCP是一种集成协议。说“CLI优于MCP”就像说“cURL优于OAuth”一样。它们在堆栈的不同层上运行,生产架构需要两者。
当前热议的话题
如果你在2026年初关注过人工智能相关的推特、黑客新闻或开发者博客圈,你可能会看到这样的观点:“就用命令行界面(CLI)吧。微服务组合模式(MCP)设计过度了。”
2026年3月,Perplexity的首席技术官宣布,由于72%的上下文窗口存在浪费,公司内部将放弃使用MCP。Y Combinator的首席执行官则选择构建了一个基于命令行界面(CLI)的设置,而没有使用MCP。Scalekit基准测试(运行75次,使用Claude Sonnet 4,在p<0.05时具有统计学意义)显示,对于简单任务,MCP的代币成本高出32倍。这些都是来自可信人士的可信信号。
我们不会忽视它们。但框架是错误的。
命令行界面(CLI)位于调用层:执行程序、传递参数、读取输出。微服务组合(MCP)位于集成层:身份验证、授权、发现、审计、结构化合约、跨组织联盟。微服务组合在底层使用调用——它可以像命令行界面子进程一样通过标准输入输出(stdio)运行——但它在顶层增加了集成层:谁在调用、代表谁调用、他们被允许做什么,以及我们如何证明这些操作确实发生了。
CLI没有集成层。它继承了shell用户所拥有的所有环境权限。代理就是用户,拥有用户所有的权限,并且无法区分代理所做与人类所做。
基准测试实际展示的内容
让我们诚实地看一下Scalekit的数据。他们在多个复杂度级别上进行了75次测试:
| Metric | CLI | MCP (Direct) | MCP via Gateway (est.) |
|---|---|---|---|
| Token cost (simplest task) | 1,365 | 44,026 (32x) | ~4,400 (3x) |
| Token cost (complex task) | 8,750 | 37,402 (4x) | ~3,700 (0.4x) |
| Reliability | 100% | 72% | ~99% |
| Monthly cost (10K ops) | $3.20 | $55.20 | ~$5.00 |
注:CLI和MCP(直接)列的数据来源于Scalekit基准测试的实际测量结果。而网关列的数据则基于模式过滤的预估预测,并非Scalekit基准测试的实际结果。
32倍的成本差异是真实存在的,但它反映了一个特定的实施问题:MCP服务器每次都会将所有43个以上的工具模式转储到上下文中。通过网关进行模式过滤后,对于简单任务,成本差距缩小到大约3倍,对于复杂任务,MCP实际上比CLI更便宜。
像mcp2cli这样的工具将MCP服务器封装为命令行界面(CLI),实现了96-99%的令牌节省。MCP规范本身正朝着懒惰工具加载的方向发展。CLI与实现良好的MCP之间的差距大约是1.5倍,而不是32倍。
MCP在基准测试中的28%失败率源于与GitHub的MCP服务器之间的TCP级ConnectTimeout(连接超时)故障——这是网络基础设施故障,而非协议故障。CLI之所以能达到100%的可靠性,是因为它运行的是本地子进程。这对本地工具来说是一个真正的优势,但对远程服务而言则无关紧要。
CLI在结构上无法实现的七件事
这些并非CLI“表现更差”的情况。而是在不构建与MCP等效的顶层的情况下,在架构上无法实现的事情。
1. 身份范围授权
使用命令行界面(CLI)时,代理会继承shell用户的全部权限。MCP支持使用PKCE的每个工具、每个用户的OAuth 2.1。代理代表用户A调用list_issues得到的结果与用户B的不同。服务器持有凭据;代理永远不会看到它们。
2. 审计归因
当代理通过命令行运行“gh pr merge”时,审计日志会显示是开发人员执行了合并操作。代理的参与是隐形的。使用MCP后,每次工具调用都是一条结构化的JSON-RPC消息,包含完整的归属信息:谁调用了什么,代表谁调用的,以及何时调用的。SOC 2、ISO 27001和欧盟AI法案都要求做到这一点。
3. 跨组织联盟
CLI(命令行界面)是本地机器上的。要将其转为远程,需要使用SSH、堡垒主机或VPN。MCP(管理控制平面)具有原生HTTP传输功能,并集成了OAuth——A公司的代理调用B公司托管的工具,其权限范围仅限于B公司授予的权限。
4. 选择性工具暴露
使用命令行界面(CLI),代理可以访问$PATH环境变量中所有的二进制文件。而移动云平台(MCP)服务器仅公开一组已声明的工具,仅此而已。在受管制行业中,最小权限访问是必须的。
5. 单次会话工具范围界定
如果代理具有gh权限,则可以像运行gh issue list一样轻松地运行gh repo delete。MCP支持每个会话的允许工具——一个“分流”代理可以获取list_issues和add_comment,但不能关闭issue。
6. 人为干预审批
CLI是即发即弃的。MCP支持启发式、抽样式和基于挂钩的审批工作流程。工具可以在执行前要求人工确认。
7. 呼叫链中的代理身份
当代理使用gh CLI时,访问令牌会标识用户,但绝不会标识代理。使用MCP时,授权服务器会在令牌交换中包含代理身份。对于代理链,MCP通过act声明来维护完整的委托链。
“你只是重新发明了MCP”论点
安全研究员@yenkel在一篇热门帖子(19.6万浏览量)中提出了一个极具破坏性的结构性论点,题为“如果你干掉MCP,你就不会在乎安全”。他的观点是:任何API要想在没有MCP的情况下实现代理安全,就需要动态客户端注册、OAuth授权(而非API密钥)、敏感操作审批以及代理友好的模式。
他的结论是:“如果你做了1到4步,那么API就足够了。同时恭喜你,你刚刚重新发明了MCP。”
这是核心的反驳观点。每一条使命令行界面(CLI)或原始应用程序编程接口(API)对代理安全的路径,最终都会汇聚到构建微控制程序(MCP)已经提供的相同原语上。问题不在于你是否需要这些功能,而在于你是为每个服务临时实现它们,还是采用标准化它们的协议。
CLI真正胜出之处
CLI在特定且重要的用例中确实表现出色:开发人员在自己的机器上,使用他们已经熟悉的工具,自动化他们自己的工作流程。
大型语言模型(LLMs)已经从训练数据中掌握了git、gh、kubectl、docker等工具的使用——这是一种零样本能力,无需额外的模式开销。本地执行快速且可靠。开发者即用户,因此无需身份委托。这就是Claude Code、Cursor和Windsurf如此高效的原因。
这个错误在于,将“CLI对于开发者在自己的机器上使用非常棒”这一观点外推到“总体而言,对于AI代理,CLI优于MCP”。企业中的另外95%涉及代理代表其他人行事,跨越组织边界,并受到治理要求的约束。
团队已在手动构建相关功能
最有力的市场验证来自那些构建变通方案的MCP怀疑论者。团队正在为每个服务构建带有YAML白名单的FastAPI和Express作用域代理,以定义允许的项目、操作和响应字段,因为MCP的默认工具暴露方式无法满足生产需求。
这些解决方案确实有效,但必须针对每个服务进行构建:Jira、Confluence、Google Workspace、Notion、Linear,每个服务都需要有自己的代理、审计日志和访问控制。生态系统数据进一步证实了这一点:53%的MCP(多云平台)实施依赖于不安全的长期静态密码。OAuth(授权协议)的采用率仅为8.5%。
这就是帕尔玛所解决的问题。
Palma.ai将这一治理层作为一个平台提供:基于策略的访问控制、带有代理归因功能的完整工具调用审计跟踪、具有多租户隔离功能的MCP网关、审批工作流程,以及带有版本控制和漂移检测的工具目录。您无需为每个服务构建定制的代理,只需为所有服务配置一次即可。
尽管存在种种说法,但采用率仍在加速提升
尽管“CLI更好”的说法在2026年第一季度主导了科技推特圈,但MCP的实际采用情况却并非如此。
| SDK | Weekly Downloads | Monthly Downloads | Dependents |
|---|---|---|---|
| TypeScript SDK | 47.9M/week | ~192M/month | 36,593 projects |
| Python SDK | 50.6M/week | ~161M/month | |
| Combined | ~98.5M/week | ~350M+/month |
就上下文而言,React 用了大约 3 年的时间才达到每月 1 亿次下载。TypeScript 用了大约 4 年的时间。MCP 在大约 16 个月内就超过了这一数字,目前每月下载量超过 3.5 亿次。TypeScript SDK 在某一天(2026 年 3 月 26 日)的下载量达到峰值,为 1330 万次。
Block(Square)报告称,其开发者工作流程的时间节省率达到了75%。彭博社(Bloomberg)在全公司范围内采用了MCP。OpenAI、谷歌DeepMind和Anthropic也都采用了这一协议。目前,该协议由Linux基金会进行供应商中立的治理。
Zuplo的MCP现状调查(2025年12月)发现,72%的受访者预计其MCP使用量会增加,而38%的受访者表示安全问题是阻碍其更广泛采用的原因。值得注意的是:Zuplo销售的是MCP网关产品,因此其受访者更倾向于现有的MCP用户,而非具有代表性的开发者样本。但趋势是明确的——安全问题证实了治理基础设施的必要性。
关键点 CircleCI、Smithery、Scalekit 和 Descope 的独立分析均得出相同结论:内部循环使用命令行界面(CLI),外部循环使用微服务编排(MCP)。
CLI是一种出色的调用机制。MCP是一种必不可少的集成协议。CLI能够解决的每一个问题都充分证明了它是一个优秀的调用层。而它无法解决的每一个问题,则进一步证实了需要一种带有治理功能的集成协议。
原文链接: https://palma.ai/blog/mcp-vs-cli-not-the-same-thing
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/3066.html
在这个努力程度如此低下的时代,还轮不到比拼天赋。静下心来,just do it

暂无评论