MCP与CLI之争
一、什么是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工具,安全,可控,适用于企业/云端场景;
更多推荐



所有评论(0)