在 AI Agent 的开发浪潮中,如何让模型高效、安全地连接外部世界是核心挑战。开发者常面临两种主流技术路径的选择:MCP(Model Context Protocol) 与 CLI + Skill。
本文将深入解析两者的本质区别、优劣势对比,并分享如何在使用 MCP 时大幅降低 Token 消耗的最佳实践。
一、 核心概念:执行层 vs 连接层
1. CLI + Skill:轻量级的“本地操作员”
- CLI (Command Line Interface):作为执行引擎。Agent 生成 Shell 命令(如
git log,curl),由操作系统直接执行 。 - Skill:作为认知引导。通常是一个 Markdown 文件(如
SKILL.md),用自然语言描述工具的用途、参数和用例,帮助 Agent 理解如何调用本地工具 。 - 本质:利用 LLM 训练数据中已有的 Unix/Linux 知识,通过少量文档提示实现低成本的工具调用 。
2. MCP:标准化的“远程连接器”
- MCP (Model Context Protocol):一种类似“AI 界 USB-C”的标准化通信协议 。
- 机制:通过 JSON-RPC 协议在 Agent 和远程服务之间传输结构化数据。Server 主动向 Agent 注册工具列表(Tools)、资源(Resources)和提示词(Prompts) 。
- 本质:解决异构系统间的“连接”与“标准化”问题,屏蔽底层实现细节,适合企业级集成 。
二、 深度对比:该如何选择?
| 维度 | CLI + Skill | MCP |
|---|---|---|
| 交互介质 | 文本流 (Text Stream) | 结构化数据 (JSON/Schema) |
| Token 开销 | 极低(仅需简短 Skill 描述) | 较高(需注入完整 JSON Schema) |
| 数据类型 | 纯文本,受限于 Stdout/Stdin | 多模态/结构化,支持复杂对象 |
| 安全性 | 较低,存在命令注入风险 | 较高,协议层具备严格参数校验 |
| 组合能力 | 强,支持 Unix 管道 (` | `) 串联 |
| 适用场景 | 本地文件操作、代码生成、日志分析 | 远程 SaaS 集成、实时数据监听、企业审计 |
选型建议
- 选 CLI + Skill:当你需要处理本地文件系统、追求极致响应速度、或希望利用模型固有的 Shell 知识时 。它是“轻骑兵”,适合高频、文本类的执行任务。
- 选 MCP:当你需要连接飞书、GitHub 等云端服务,或需要严格的权限控制、审计日志及类型安全时 。它是“正规军”,适合复杂的跨系统联动。
最佳实践:采用混合架构。让 CLI 负责本地执行层,MCP 负责远程连接层,两者互补而非互斥 。
三、 痛点攻克:如何减少 MCP 的 Token 消耗?
MCP 的主要劣势在于工具定义(JSON Schema)会占用大量上下文窗口。以下是三种经过验证的优化策略:
1. 采用“代码执行”模式(Code Execution)
这是目前能降低 98% Token 开销的最有效方案 。
- 渐进式披露:在 Prompt 中只植入精简的代码签名(如
tool.searchOrders(id: str)),将冗长的 JSON Schema 外置到 MCP Server 的注册中心 。 - 本地数据处理:让 Agent 编写代码在执行容器内筛选和处理大数据,仅将最终结果返回给模型,避免中间数据在上下文中反复传输 。
2. 引入主动式工具检索(如 MCP-Zero 框架)
传统 MCP 默认全量加载工具,导致上下文爆炸 。
- 按需调用:结合语义匹配技术,先筛选出候选的 MCP Server,再在服务器内部对工具优先级排序 。
- 动态加载:每轮交互只返回少量最相关的工具,支持迭代式调用和错误恢复,避免一次性匹配失败导致的资源浪费 。
3. 优化数据传输策略
- 引用而非内容:对于大型对象(如长文档、图片),尽量传递 ID、指针或摘要。
- 避免中转站效应:不要让模型成为数据的搬运工。确保数据在 MCP Server 端或代码执行环境中完成拼接和处理,模型只接收关键决策信息 。
四、 结语
在 Agent 开发的演进中,CLI + Skill 以其轻量和灵活成为了本地任务的首选,而 MCP 则凭借标准化和安全性成为了企业集成的基石。
聪明的架构师不会二选一,而是构建混合系统:利用 CLI 处理本地的高效执行,利用 MCP 连接广阔的远程生态,并通过代码执行和按需检索技术,将 Token 成本控制在合理范围。
评论区