MCP 与 CLI 工具对比及未来趋势

MCP 与 CLI 工具对比及未来趋势

一、什么是 MCP?

MCP(Model Context Protocol,模型上下文协议)可以理解为一个"万能转接头"。

打个比方:你买了一台新电视,但家里有 HDMI 线、AV 线、USB 线等各种接口,每种设备都不一样。MCP 就像是一个统一转接头,让 AI 大模型只需要学会"插这一个转接头",就能连接各种外部工具。

MCP 曾被寄予厚望,被誉为"Agent 的万能接口",旨在成为连接一切工具的统一标准。


二、MCP 由什么构成?

要真正理解 MCP,需要拆开来看它的内部结构。MCP 体系由 三个核心角色三种能力 组成。

1. 三个核心角色

整个 MCP 体系就像一个"客服系统",有三个角色各司其职:

角色 类比 说明
MCP Host(宿主) 客服总台 AI 应用本身,比如 ChatGPT、Claude 桌面版。它是用户直接对话的对象,负责统筹调度。
MCP Client(客户端) 客服接线员 Host 内部的"翻译官"。每个 Client 负责和一个 MCP Server 对接,把 AI 的意图翻译成 Server 能理解的请求。
MCP Server(服务端) 具体业务部门 真正干活的"部门"。每个 Server 封装了一种外部能力,比如 GitHub Server 专门处理 GitHub 相关操作,Notion Server 专门处理笔记读写。

它们如何协作? 举个完整流程:

用户对 AI 说:"帮我在 GitHub 上创建一个 issue" → Host(AI 应用)理解意图 → Client(GitHub 接线员)把请求发给 Server(GitHub 部门)→ Server 调用 GitHub API 完成操作 → 结果原路返回给用户。

一个 Host 可以同时连接多个 Client,每个 Client 对应一个 Server,就像客服总台同时派多个接线员对接不同部门。

2. 三种核心能力

每个 MCP Server 可以向 AI 提供 三种能力(不是每个 Server 都有全部三种,按需提供):

① Tools(工具)—— 让 AI 能"做事"

这是最核心的能力。Server 会告诉 AI:"你可以让我执行以下操作",并列出每个操作的名称、功能描述和需要的参数。

实际例子(GitHub MCP Server 的部分工具):

工具名称 功能 需要的参数
create_issue 创建一个 GitHub Issue 仓库名、标题、描述
search_repositories 搜索 GitHub 仓库 搜索关键词、排序方式
create_pull_request 创建一个 Pull Request 源分支、目标分支、标题

AI 看到这份"工具清单"后,就知道自己能做什么、该传什么参数。

② Resources(资源)—— 让 AI 能"读数据"

Server 可以向 AI 暴露一些数据源,AI 可以主动读取这些数据。

实际例子

  • 数据库 MCP Server 可以把某张表作为 Resource 暴露出来,AI 随时可以查询表结构或数据
  • 文件系统 MCP Server 可以把某个文件夹作为 Resource,AI 可以浏览其中的文件列表

类比:Tools 是"操作按钮"(创建、删除、修改),Resources 是"展示面板"(查看数据)。

③ Prompts(提示模板)—— 让 AI 能"套公式"

Server 可以预定义一些提示词模板,用户一键调用,AI 就会按照模板的格式和逻辑来执行任务。

实际例子

  • 一个代码审查 MCP Server 可以提供 code_review 模板,用户调用后,AI 会自动按照"检查代码风格→检查潜在 Bug→给出改进建议"的固定流程来审查代码。

3. 通信方式

三个角色之间通过 JSON-RPC 2.0 协议通信(一种标准的消息格式),支持两种传输方式:

  • stdio(标准输入输出):Server 作为本地进程运行,通过管道与 Client 通信,适合本地工具。
  • SSE(Server-Sent Events)+ HTTP:Server 作为远程服务运行,通过网络与 Client 通信,适合云端工具。

对外行来说,你只需要知道:MCP 有一套标准化的"对话格式",不管底层连接的是 GitHub、Notion 还是数据库,AI 都用同一种方式跟它们"说话"。

4. 实物展示:一个真实的 MCP Server(JSON 格式)

光说概念太抽象,下面直接看一个真实存在的 MCP Server——天气查询 MCP Server 的 JSON 配置文件

这是 MCP Server 的"身份证",AI 应用通过读取这个 JSON 文件,就能知道"你能做什么、需要什么参数"。

{
  "name": "weather-mcp-server",
  "version": "1.0.0",
  "description": "提供全球城市天气查询服务",
  
  "tools": [
    {
      "name": "get_weather",
      "description": "查询指定城市的当前天气",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "城市名称,如\"北京\"、\"Shanghai\""
          }
        },
        "required": ["city"]
      }
    },
    {
      "name": "get_forecast",
      "description": "查询指定城市未来几天的天气预报",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "城市名称"
          },
          "days": {
            "type": "integer",
            "description": "预报天数,1-7天",
            "minimum": 1,
            "maximum": 7
          }
        },
        "required": ["city", "days"]
      }
    }
  ],
  
  "resources": [
    {
      "uri": "weather://current/{city}",
      "name": "当前天气",
      "description": "指定城市的实时天气数据",
      "mimeType": "application/json"
    },
    {
      "uri": "weather://alerts",
      "name": "天气预警",
      "description": "全局天气预警信息列表",
      "mimeType": "application/json"
    }
  ],
  
  "prompts": [
    {
      "name": "travel_advice",
      "description": "根据目的地天气生成出行建议",
      "arguments": [
        {
          "name": "destination",
          "description": "目的地城市",
          "required": true
        }
      ]
    }
  ]
}

逐段解读:

字段 含义 示例值
name Server 的唯一标识 weather-mcp-server
tools 可执行的操作列表 get_weather(查天气)、get_forecast(查预报)
inputSchema 每个工具的参数规范 city 是字符串、days 是 1-7 的整数
required 必填参数 get_weather 必须传 city
resources 可读取的数据源 weather://current/北京 可获取北京实时天气
prompts 预定义的提示模板 travel_advice 自动生成出行建议

实际使用效果对比:

  • 没有接入 MCP 时,你问 AI"北京明天天气怎么样",AI 只能回答:"我无法获取实时天气数据,建议你查看天气预报网站。"
  • 接入这个 MCP Server 后,AI 会读取上面的 JSON 配置,发现可以调用 get_forecast 工具,然后自动执行:
    {
      "tool": "get_forecast",
      "arguments": {
        "city": "北京",
        "days": 1
      }
    }
    
    拿到真实天气数据后,AI 告诉你:"北京明天白天晴转多云,气温 18~28°C,建议穿薄外套。"

这就是一个 MCP Server 的全貌:它通过一份标准化的 JSON 配置文件,告诉 AI"我是谁、能做什么、需要什么",任何 AI 应用都能即插即用。

5. 完整架构图(文字版)

用户
 ↓ 对话
┌──────────────────────────────────┐
│          MCP Host(AI 应用)       │
│  ┌──────────┐  ┌──────────┐     │
│  │ Client 1 │  │ Client 2 │ ... │
│  └────┬─────┘  └────┬─────┘     │
└───────┼──────────────┼───────────┘
        ↓              ↓
  ┌──────────┐  ┌──────────┐
  │ Server 1 │  │ Server 2 │
  │ (GitHub) │  │ (Notion) │
  └──────────┘  └──────────┘

三、什么是 CLI?

CLI(Command Line Interface,命令行界面)就是在黑窗口(终端)里敲命令来操作电脑的方式。

你平时双击图标打开软件,用的是图形界面(GUI);而 CLI 则是直接输入文字指令,让电脑执行任务。

实际例子

  • ffmpeg:一个视频处理命令,可以转换视频格式(比如把 MP4 转成 GIF)
  • grep:一个搜索命令,可以在文件中快速查找某个关键词
  • ImageMagick:一个图片处理命令,可以批量调整图片大小、加水印
  • git:一个代码版本管理命令,程序员每天都在用
  • scp:一个文件传输命令,可以把文件从一台电脑传到另一台

这些命令行工具大多已经存在了几十年,久经考验,功能强大且稳定。

CLI 的构成很简单:一个可执行程序 + 命令参数。比如 ffmpeg -i input.mp4 output.gifffmpeg 是程序,-i input.mp4output.gif 是参数。没有中间层,没有"转接头",直接执行。


四、为什么大家开始转向 CLI?

近期,顶级开发者(如 Perplexity CTO、YCombinator CEO)及爆火项目 OpenClaw 逐渐放弃 MCP,转向直接调用 CLI 工具。原因如下:

1. CLI 更省"脑力"(Token 消耗小)

AI 大模型每次处理任务时,需要先"阅读"工具的使用说明书,这会消耗一种叫 Token 的计算资源,Token 越多,成本越高。

  • MCP 的开销:每个 MCP Server 都需要向 AI 传递完整的"工具清单"——包括所有工具的名称、功能描述、参数格式等。比如 GitHub 的 MCP Server 包含 44 个工具,说明书多达 16,835 行、63,703 个字符,约消耗 14,268 个 Token。如果你同时接了 5 个 MCP Server,光"读说明书"就要消耗几万个 Token,成本很高。
  • CLI 的开销:AI 只需要知道"你可以执行命令行命令"这一个概念,说明书仅十几行,Token 消耗几乎可以忽略不计。

而且,AI 在训练过程中已经"见过"大量常见的 CLI 命令(如 gitgrep),相当于自带说明书,不需要额外学习。冷门工具则可以通过 agent skill(一份简短的说明文档)来补充。

2. CLI 执行效率更高

用一个摄影师工作流的真实场景来对比,你就能直观感受到差距。

场景:处理一批照片

假设你是摄影师,文件夹里有 10 张照片,任务是:找出横版照片 → 加水印 → 上传到服务器


MCP 模式:像"走流程"一样分步调用

你:帮我把文件夹里的横版照片加水印并上传

AI:好的,我来处理

第 1 步:调用 "读取目录工具"
  ↓ AI 等待返回
  ← 返回:["IMG_001.jpg", "IMG_002.jpg", ..., "IMG_010.jpg"]

第 2 步:调用 "读取图片信息工具"(循环 10 次)
  ↓ AI 等待返回
  ← 返回:IMG_001.jpg 宽 1920 高 1080(横版)
  ← 返回:IMG_002.jpg 宽 1080 高 1920(竖版)
  ← ...(重复 10 次)

第 3 步:AI "思考" 筛选出横版照片
  → 筛选结果:IMG_001.jpg, IMG_003.jpg, IMG_007.jpg

第 4 步:调用 "图像处理工具"(加水印)
  ↓ AI 等待返回
  ← 返回:处理完成

第 5 步:调用 "上传工具"
  ↓ AI 等待返回
  ← 返回:上传成功

AI:已完成!共处理 3 张横版照片并上传

痛点

  • AI 是唯一的"调度中心",每一步都要等它"思考"和决策
  • 每个工具调用的结果必须先传回 AI,才能决定下一步
  • 链路很长,10 张照片要来回通信几十次

CLI 模式:一步到位,本地执行

你:帮我把文件夹里的横版照片加水印并上传

AI:好的,我生成一条命令

生成的命令:
  exiftool -ImageWidth -ImageHeight /photos/*.jpg | \
  grep "Width > Height" | \
  ImageMagick mogrify -watermark "Copyright" && \
  scp /photos/* user@server:/uploads/

↓ 命令发送到终端
↓ 三个工具在本地自动串联执行(通过 | 管道和 && 逻辑符)
↓ 全程无需 AI 参与

← 最终结果:完成

AI:已完成!

优势

  • AI 只负责"生成命令",不参与执行过程
  • exiftoolImageMagickscp 三个工具在本地自动协作,通过 | 管道传递数据
  • 整个流程只和 AI 通信了 2 次(发命令 + 收结果)

对比总结

维度 MCP 模式 CLI 模式
通信次数 几十次(每步都要 AI 参与) 2 次(生成命令 + 返回结果)
AI 角色 全程调度,是瓶颈 只下指令,不介入执行
执行速度 慢(网络往返 + AI 思考) 快(本地直接执行)
灵活度 受限于预设工具 任意组合,自由拼接

这背后是 Unix 设计哲学:每个工具只做一件事,但通过 | 管道自由组合,能完成复杂任务。MCP 每次调用都要经过 Host → Client → Server 三层传递,而 CLI 是程序直接执行,没有中间层,自然更快。


五、那 MCP 还有优势吗?

当然有。CLI 虽然灵活高效,但也有明显的短板:

1. MCP 更可控

  • CLI 命令对特殊字符很敏感。比如文件名里有一个单引号 ',整条命令就可能报错,而且错误信息往往很难看懂。
  • MCP 通过 JSON 格式(一种结构化的数据格式)传递参数,边界清晰、规则明确,不容易出现语法冲突,执行结果更可预测。
  • 这得益于 MCP 的标准化设计:所有参数都经过 JSON Schema 校验,类型错误、缺少必填参数等问题在调用前就能被拦截。

类比:CLI 像是"口头传达指令",容易听错;MCP 像是"填标准表格",格式固定,不容易出错。

2. MCP 更安全

  • CLI 的灵活性是双刃剑。比如 rm -rf 命令可以瞬间删除所有文件,一旦 AI 误执行,后果严重。
  • 在云端共享环境中,一条失控的命令甚至可能影响其他用户。
  • MCP 工具的功能是预先设计好的,AI 只能做被允许的操作,无法"越界"。Server 的开发者明确界定了哪些操作可以执行、哪些参数可以接受,在高安全性场景(如企业、云端)更可靠。
  • 云端虽支持 CLI,但需严格沙箱和权限控制,实施成本远高于 MCP。

类比:CLI 像是给了 AI 一把万能钥匙,什么门都能开;MCP 像是给了 AI 一张门禁卡,只能进被授权的房间。


六、未来趋势

维度 CLI 工具 MCP 工具
趋势 ⬆️ 比重增大 ⬇️ 比重缩小,但不会消失
适用场景 轻量、个人化场景 企业、云端等高安全/稳定性场景
核心价值 省 Token、执行效率高 结构化、可控调用方式不可替代

一句话总结:CLI 将成为 AI 调用工具的主流方式,MCP 则退守到对安全性和稳定性要求高的企业级场景,两者各有所长,长期共存。

posted @ 2026-05-17 20:22  congxxx  阅读(162)  评论(0)    收藏  举报