一、什么是CLI

CLI,全称:Command Line Interface,命令行界面;

比如:
视频转音频

ffmpeg -i input.mp4 -q:a 0 -map a output.mp3

搜索文件

grep -r "AI" ./视频

调整图片大小

magick input.jpg -resize 800x600 output.jpg


二、CLI工具的优势

1、Token消耗小

一个MCP Server会加载包含在其中的所有工具,这些工具包括名称、描述、入参格式等等;会消耗大量的Token;

CLI的命令,就只有几行命令,相比较起来,几乎可以忽略不计;

2、执行效率高

假如现在有这样一个任务:在某个文件夹中,把所有横板照片(宽大于高的照片),找出来加上专属水印,然后上传到服务器上;

MCP模式

在这里插入图片描述
这里每调用工具一次,就需要与大模型交互一次,效率自然没那么高;

CLI模式

在这里插入图片描述
调用“Bash”工具,命令内容:

exiftool -if '$ImageWidth > $ImageHeight' -p '$FileName' . | \
xargs -I {} magick {} -draw 'image over 0,0 0,0 watermark.png' \
-format png output/{}.png && \
scp output/*.png user@myserver.com:/var/www/photos/

为什么可以做到这一点了;

Unix设计哲学:
每个工具只做一件事,但做到极致;
工具与工具之间可以自由组合,像搭积木一样拼出任意复杂的流程;

有聪明的小伙伴就要问了:那么我可不可以将读取目录、读取图片信息、图像处理、上传做成一个MCP工具,是不是可以达到和CLI工具一样的效果呢?理论上当然可以;
但是如果需求稍微一变,比如说:筛选出分辨率为4K的图片,那么MCP工具就需要重新开发;而CLI工具只需要加几行命令,改几个参数即可实现,灵活性是MCP工具难以复刻的;



三、MCP工具的优势

1、更可控

将上面的加水印功能来对比;

CLI:

xargs -I {} magick {} -draw 'image over 0,0 0,0 watermark.png' \
-format png output/{}.png && \

对这个命令来说,如果图片名是:Mark’s Photo.png,那么这个单引号就会破坏命令本身的引号结构;

这种问题在CLI中是很常见的;命令越复杂,出错的概率越高,人很难察觉;

MCP:

{
  "tool": "add_watermark",
  "input": {
    "file": "Mark's Photo.png",
    "watermark": "watermark.png"
  }
}

文件名会老老实实的躺在JSON字段中,不会影响工具的正常功能使用,因为JSON有着自己的转义规则,参数的边界也是清晰的;


2、更安全

CLI工具的Bash命令,由大模型给出,万一其中包含一些危险的命令,如:

rm -rf *

那么就有可能导致文件被误删,有可能它只是想删除临时文件,或者你在错误的地方执行了该命令等情况;

总的来说:CLI工具,效率高、省Token,适用于个人领域;
MCP工具,安全,可控,适用于企业/云端场景;

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐