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工具,然后自动执行:
拿到真实天气数据后,AI 告诉你:"北京明天白天晴转多云,气温 18~28°C,建议穿薄外套。"{ "tool": "get_forecast", "arguments": { "city": "北京", "days": 1 } }
这就是一个 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.gif,ffmpeg 是程序,-i input.mp4 和 output.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 命令(如 git、grep),相当于自带说明书,不需要额外学习。冷门工具则可以通过 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 只负责"生成命令",不参与执行过程
exiftool、ImageMagick、scp三个工具在本地自动协作,通过|管道传递数据- 整个流程只和 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 则退守到对安全性和稳定性要求高的企业级场景,两者各有所长,长期共存。

浙公网安备 33010602011771号