AI Agent 如何调用工具:Tools、MCP、CLI 与 Skills
AI Agent 如何调用工具:Tools、MCP、CLI 与 Skills
Tools、MCP、CLI 和 Skills 经常出现在同一套 Agent 系统中,但它们不是同一种扩展机制。
Tools 描述模型可以发起的动作;MCP 规定 Agent 主机与外部程序如何交换能力和数据;CLI 是程序已有的命令行接口;Skills 则是一组按需加载的任务说明。一个实际任务可能同时用到四者。
本文以 NanoBot 的实现为出发点,同时参考 MCP 和 Agent Skills 的公开规范。项目中的具体设计会单独说明,避免把某个框架的做法当成通用标准。

01|四个概念分别处在哪一层
四者可以按职责分成下面几类:
| 机制 | 主要职责 | 常见内容 |
|---|---|---|
| Tools | 向模型声明可调用动作 | 工具名称、用途说明、参数 Schema |
| MCP | 连接 Agent 主机与外部系统 | Tools、Resources、Prompts |
| CLI | 运行现成程序 | 命令、参数、标准输入输出、退出码 |
| Skills | 提供任务级操作说明 | 步骤、规则、脚本、模板、参考资料 |
这里最容易混淆的是 Tools 和 MCP。MCP Server 可以向客户端提供 Tools,但 MCP 还包含 Resources 和 Prompts。反过来,Tools 也不一定来自 MCP;Agent 主机可以直接注册本地工具。
CLI 和 Skills 的位置又不相同。CLI 是软件接口,调用后会启动实际进程。Skill 通常是 Markdown 文档,它描述怎样完成任务,执行时仍要调用 Tool、CLI 或其他可用能力。
02|Tools:模型与执行程序之间的调用格式
大模型不会直接执行函数。Agent 主机需要先把工具定义发给模型,模型再根据对话生成一条结构化调用请求。
一项工具定义通常包含名称、用途说明和参数结构。例如:
{
"name": "web_search",
"description": "搜索公开网页并返回结果",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string" }
},
"required": ["query"]
}
}
模型可能返回下面这条调用:
{
"name": "web_search",
"arguments": {
"query": "MCP architecture"
}
}
Agent 主机收到请求后校验参数,执行对应函数,再把结果作为一条工具消息发回模型。模型根据结果继续调用工具,或者生成最终回复。
工具定义会占用上下文。注册十几个短工具时影响通常不大;工具达到几十个甚至上百个后,主机往往需要增加筛选、分组或延迟加载。否则模型既要阅读大量 Schema,也更容易在名称相近的工具之间选错。
适合直接注册为 Tool 的能力通常比较具体,例如读取文件、执行搜索、查询一条记录或创建日程。需要很多步骤和分支判断的任务,不适合全部塞进一个参数复杂的大工具。
03|MCP:统一外部能力的发现与调用
MCP 采用 Host、Client、Server 三层结构。Host 是承载模型和用户会话的应用;每个 Client 维护一条与 Server 的连接;Server 提供工具或上下文。
MCP Server 可以运行在本机,也可以部署在远端。本地进程通常使用 STDIO,远端服务通常使用 Streamable HTTP。因此,把 MCP 简单称为“远程工具协议”并不准确。
MCP Server 可以公开三类主要能力:
- Tools:可以执行的函数,例如查询数据库或创建工单;
- Resources:供客户端读取的数据,例如文件内容、数据库结构或知识库记录;
- Prompts:带参数的提示模板,用于描述某类固定交互。
客户端通过 tools/list 获取工具列表,通过 tools/call 发起调用。工具输入由 JSON Schema 描述,返回值可以包含文本、图片或结构化内容。
协议没有要求 Host 必须把 Server 提供的全部工具一次性传给模型。有的 Agent 会在连接后全部注册,有的会先搜索目录,再加载相关工具。权限确认、工具筛选、上下文管理和审计也由 Host 负责,不属于 MCP Server 自动解决的范围。
04|CLI:直接使用已有软件的命令行接口
很多开发和内容处理软件已经提供稳定的 CLI。Agent 只要有受控的进程执行工具,就可以调用 Git、FFmpeg、Docker、ImageMagick 或 gh,不需要为每个命令重新封装一套远程服务。
下面这条命令把图片裁成公众号头图尺寸:
magick cover.png -resize 900x383^ -gravity center -extent 900x383 cover-wechat.png
CLI 适合输出明确、容易复现的操作。对 Agent 来说,支持 JSON 输出的命令比面向人阅读的彩色日志更容易处理;明确的退出码也便于判断执行是否成功。
安全问题主要出在命令构造和权限范围。如果执行器把模型生成的字符串直接交给 Shell,分号、管道、重定向和变量替换都会被解释。比较稳妥的做法是使用参数数组启动指定程序,并限制可执行文件、工作目录、运行时间和环境变量。删除、发布、付款等操作仍应单独审批。
NanoBot 的 CLI APP 是一种项目级设计:多个外部程序共用一个执行入口,每个程序再配一份 Skill,说明命令和参数。模型只需要常驻一个入口工具,具体用法在任务命中后读取。这种做法适合 CLI 数量较多的系统,但不是所有 Agent 都必须采用的结构。
05|Skills:按任务加载的说明和资源
Agent Skills 规范把一个 Skill 定义为目录,其中至少有一个 SKILL.md。文件顶部用 YAML 记录名称和描述,正文写操作步骤。目录还可以包含脚本、参考文档和模板。
一份常见的 Skill 目录如下:
wechat-writing/
├── SKILL.md
├── scripts/
├── references/
└── assets/
Skills 的加载通常分为三个阶段:Agent 启动时只看到名称和描述;任务匹配后读取完整 SKILL.md;执行到具体步骤时,再打开相关脚本、参考文档或模板。
这种加载方式适合长流程。比如“把技术文章改成公众号”涉及获取原文、重新组织、核对事实、制作图片和排版。把这些要求全部写进常驻系统提示会浪费上下文,拆成 Skill 后只在相关任务中加载。
Skill 里可以附带脚本,但文档本身没有执行能力。文件读取、网页访问、图片生成和内容发布仍由 Agent 已经拥有的工具完成。
06|四种机制在一个任务中的组合
以“把技术博客改成公众号文章”为例,一次执行可能包含以下步骤:
- Agent 根据技能目录找到公众号写作 Skill,读取其中的内容和排版规则;
- 模型调用网页读取 Tool 获取原文;
- 网页读取能力可能由主机内置,也可能来自 MCP Server;
- 完成改写后,模型调用图片生成 Tool 制作头图;
- 主机通过 ImageMagick CLI 裁切图片;
- Skill 规定的检查流程核对标题长度、图片数量和 HTML 格式。
这条链路中,Skill 提供执行顺序,Tool 向模型暴露具体动作,MCP 负责连接外部服务,CLI 运行本机程序。它们在同一次任务中分别承担不同工作。
Skill:任务步骤和检查规则
└─ Tool:模型可调用的结构化动作
├─ 主机内置函数
├─ MCP Server
└─ CLI / API / 本地代码
07|如何选择扩展方式
选择哪种机制,主要取决于现有能力的形态。
| 情况 | 更适合的方式 | 原因 |
|---|---|---|
| 动作高频,参数稳定 | Tool | 模型可以直接生成结构化调用 |
| 一组能力需要被多个 Agent 客户端使用 | MCP | 协议统一了发现、连接和调用方式 |
| 软件已经有成熟命令行 | CLI | 可以直接复用已有实现 |
| 任务包含固定步骤和领域规则 | Skill | 说明和资源可以按任务加载 |
这些选择可以组合。一个数据库 MCP Server 会向模型提供查询 Tools;一个数据分析 Skill 可以调用这些 Tools,也可以运行本地 Python CLI。架构设计时没有必要强行只选其中一种。
实际落地还要考虑调用频率、延迟、权限和维护成本。只有一两个内部函数时,直接注册 Tool 最简单;需要跨产品复用时,MCP 的价值才会明显。CLI 适合已有程序,Skill 适合复用操作方法。
08|工具数量增加后的工程问题
Agent 可以连接的工具越来越多,系统需要处理的工作也随之变化。除了执行工具本身,还要管理工具发现、权限确认、调用日志、超时、重试和失败恢复。
一次性向模型提供大量工具并不一定有效。工具描述会占用上下文,相似名称会增加误选概率,危险操作也需要更细的授权。常见的处理方式包括按任务筛选工具、采用目录式发现、把长说明移到 Skills,以及给写操作增加人工确认。
Tools、MCP、CLI 和 Skills 可以放进同一套系统,但它们的边界需要在实现中保持清楚:Tool 是模型看到的调用格式;MCP 是连接和交换协议;CLI 是程序接口;Skill 是任务说明。后续调试时,才能判断问题发生在模型选择、主机路由、外部执行还是流程配置。
参考资料
- 原始文章:Neohope,《AI Agent 是如何使用工具的:Tools、MCP、CLI、Skills 四种机制深度解析》
- Model Context Protocol:Architecture Overview、Understanding MCP Servers
- OpenAI API:Function Calling
- Agent Skills:Specification、Adding Skills Support
- HKUDS:NanoBot、CLI-Anything
本文在原始文章的基础上重新组织,并补充了公开规范中的定义。资料访问日期:2026 年 8 月 3 日。