MCP 和 CLI 在竞争吗?

来源: Agentic AI Foundation (AAIF)
作者: Agentic AI Foundation
发布时间: 2026/5/16 02:44:58
原文链接: https://aaif.io/blog/are-mcp-and-clis-competing/


深入探讨 Nick Cooper 在 MCP Dev Summit North America 2026 上的演讲

MCP 还是 CLI?这是每个人都在问的问题。

Nick Cooper,OpenAI 技术团队成员兼 MCP 生态贡献者,分享了他对这一争论思考了一年,但并未选择站队:“至于哪个更好,这不是二选一的问题。你显然两者都需要。”

协议只是语言

Nick 首先指出,他认为协议讨论之所以比实际需要更困难,原因在于“协议”这个词听起来技术性强且难以接近,尤其是对那些试图向高中生解释它的人来说。他的重新定义很简单:协议就是语言。当两个系统相互通信时,它们就像两个人隔桌交谈一样,通过一套共享的规则交换意义。

基于这一基础,他追溯了计算机通信实际运作的分层历史。每一层都增加了更多的约束、更多的结构、更多的专业化,而每一新层都创造了新的位置,用于注入上一层无法处理的内容。

  • 电信号
  • TCP
  • HTTP
  • REST
  • OpenAPI
  • MCP

每一步都迫使人们进行约束和专业化。每一步也创建了可观测性、身份验证和安全性的标准模式,而这些模式在下一层并不存在。

MCP 位于该堆栈的高层。但关键在于,它仍然触及较低层。MCP 服务器通过 HTTP 或标准 I/O 运行。原始原语始终存在于底层。

Token 效率问题

Nick 提出了一个直白的观察:当模型执行任务时,输出比输入成本更高——体现在金钱、延迟和注意力上。这种不对称性塑造了一切。

早期的 MCP 使用方式将协议视为类似函数调用。你暴露工具,模型选择它们,结果返回。问题在于,随着 MCP 服务器数量激增至数千个,在单个上下文窗口中向模型暴露有意义的子集会迅速消耗上下文。你花费更多 token 来解释模式,而不是解决实际问题。

针对这一问题,出现了两种模式。

  • 类似 shell/文件系统的调用,其中资源是文件,工具是可执行文件
  • 类似代码的调用,其中工具成为函数,通常用 TypeScript 或 Python 编写

Nick 指出,两者本质上是同一思想在不同语法层面的体现。Bash 是一种编程语言,即使大多数人并不这么认为。

代码模式(编写程序而非进行单个工具调用)在两个方面对模型更高效。它可以在单次输出中表达一系列操作,而不是逐个迭代。而且,该程序的输出已经过代码逻辑过滤和塑造,成为下一轮更好的输入。你不再将模型用作控制流原语来处理那些 for 循环可以免费完成的事情。

意图是 MCP 真正带来的东西

如果你一无所有(没有现有 API,没有先前的基础设施),你可以构建任何东西。CLI、MCP 服务器,任选其一。Nick 建议围绕问题构建有意图的东西,而不是仅仅暴露原始功能并期望模型自行弄清楚如何处理。

如果你已有现有 API,他明确表示:不要直接将模型指向它。围绕它编写一个 CLI,或者围绕它编写一个 MCP 服务器。构建这一层的行为会迫使你思考用户真正希望模型做什么。

在他看来,MCP 的真正贡献不在于协议机制,而在于它为 API 设计带来的意图。“MCP 是面向 AI 的 API,”他说。当你启动一个 MCP 项目时,你思考的不是另一个开发者将如何调用你的端点,而是模型将如何使用这些工具。这个问题会引出通用 API 思维往往忽略的安全性和可观测性问题。

他分享说,一个电子邮件系统有显而易见的 API 表面——发送、接收、列出。但当你仔细思考时,最终会涉及草稿、标签、文件夹、分类、联系人管理。数百个工具,技术上都是正确的,但都可能让模型感到困惑。构建 MCP 服务器迫使你询问用户真正想要什么,并暴露正确的抽象层次,而不是完整的 API 表面。

CLI 历史悠久,已有成千上万个构建好的 CLI。MCP 服务器为你构建的内容带来 AI 意图。Nick 认为,最强大的系统将两者结合。

MCP 作为代理间协议

MCP 通常被描述为工具协议或上下文协议。但 Nick 指出,在更高层次上,它已经表现得像一个代理间协议。

工具是能力,任务是委托的工作。消息、输入和输出都是结构化且明确的。这些要素已经就位,但还没有人真正以这种方式对待它们。

他的判断是,随着MCP连接另一端的更多公司和产品具备AI能力,双方的抽象层级都应该提升。你不需要像为开发者API那样为另一个智能体定义每一个动词。你可以开放接口,让另一端理解意图,而不仅仅是执行指令。

他最后提出的不是最终答案,而是对输入的呼吁。身份发现:如何在一个由提供商、客户端和主机组成的联邦化环境中找到并验证连接另一端是什么,这是接下来要面对的难题。他邀请大家参与MCP Discord的讨论。这个问题过于分散,没有社区参与是无法解决的。

Nick Cooper是OpenAI的技术团队成员。要了解更多关于MCP的信息,并与思考这些问题的工程师联系,请访问aaif.io,加入AAIF Discord的讨论,或参加即将举行的AAIF活动