← 返回资讯
林远舟
技术编辑
已审核

RAG像盲人摸象,Function Calling累成狗,MCP怎么解决?

说实话,我第一次看到MCP这三个字母的时候,脑子里冒出的第一个念头是——又来一个协议?是不是又是那种“看起来很美好,一落地就抓瞎”的玩意儿?

RAG像盲人摸象,Function Calling累成狗,MCP怎么解决?

RAG像盲人摸象,Function Calling累成狗,MCP怎么解决?


你被“协议”两个字吓到了?来看看MCP到底是个什么神仙东西

说实话,我第一次看到MCP这三个字母的时候,脑子里冒出的第一个念头是——又来一个协议?是不是又是那种“看起来很美好,一落地就抓瞎”的玩意儿?

你也有这种感觉吧?技术圈最不缺的就是新概念,今天一个框架,明天一个协议,后天一个标准,搞得人眼花缭乱。

但我真正上手折腾了一圈之后,我改观了。

这事儿,真挺有意思的。


先聊聊两个让你又爱又恨的老朋友

要理解MCP,得先看看它之前我们是怎么过来的。

RAG(检索增强生成),这玩意儿你应该不陌生吧?就是把你的资料库切成小块,转成向量,存进数据库。用户提问的时候,去库里搜相关片段,拼到提示词里一起发给大模型。

好处是不用微调模型,省心省钱。坏处呢?你永远不知道搜回来的东西是不是真的有用。

说到这儿,我得跟你分享一个我踩过的坑。

有个项目用RAG做客服知识库,用户问“怎么退款”,结果系统匹配到的是“退款政策”的目录页——就是那种只有几个标题、没有具体内容的目录页。大模型能怎么办?它只能根据目录瞎编啊!编出来的东西跟实际流程差了十万八千里。

用户气疯了,我也气疯了。

你以为RAG是万能钥匙?其实它就是个盲人摸象的瞎子。

Function Calling(函数调用) 是另一种思路。模型根据用户输入判断需要调用什么工具,后端执行实际请求,再拿结果生成回答。这套机制在百炼、Azure OpenAI这些平台上都用得挺成熟。

但问题来了:每个平台都有自己的Function Calling实现,工具接口五花八门。你写了一个工具,换个平台就得重写。

这就是所谓的“M×N问题”——M个模型,N个工具,需要M×N种集成方式。

累不累?

累。


MCP到底是什么?一个USB-C接口的故事

2024年11月25日,Anthropic开源了MCP。官方说法是:模型上下文协议,一个开放标准,让AI助手连接数据所在的系统。

翻译成人话:MCP就是AI应用的USB-C接口。

你想想,USB-C为什么好用?不管你是手机、笔记本、显示器还是充电宝,插上就能用,不用管背后是什么协议。以前出门要带三根线,现在一根搞定。

MCP做的就是同一件事——让AI模型用统一的方式去调用各种工具和数据源。

MCP有三个核心组件,简单到爆:

工作流程是这样的:用户提问 → Host分析需要什么工具 → Client调用对应的Server → Server返回结果 → Host根据结果生成回答。

说白了,MCP把Agent开发和工具开发解耦了。

写工具的人不用关心Agent怎么用,写Agent的人不用关心工具怎么实现。

各干各的,互不打扰,多好。


我实操了一把:从0到1写MCP Server,踩坑实录

光说不练假把式。我照着官方教程折腾了一下午,踩了不少坑,分享一下真实经历。

环境准备

说实话,uv这玩意儿我第一次用的时候还在想:又来个新工具?

但用完之后真香。uv add mcp 秒装,比pip不知道快到哪里去了。那种感觉就像你习惯了骑自行车,突然有人给你一辆电动车——爽!

写Server:我的需求很简单——读取本地文件。让Claude能直接读取我电脑上的文件内容。

代码是Claude 3.7帮我生成的。我跟它说:“帮我写一个MCP Server,能读取本地文件,用os模块就行。”

它刷刷刷写出来了。核心逻辑就十几行:

PYTHON
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("file-reader")

@mcp.tool()
async def read_file(path: str) -> str:
 with open(path, 'r') as f:
 return f.read()

测试:官方文档没提测试,但我强烈建议加上。用MCP Inspector工具可以调试Server,看它能不能正常响应请求。

我第一次跑的时候报错了,原因是uv路径没配对。用 which uv 拿到绝对路径,改好配置文件就OK了。

接入Claude Desktop:在Claude Desktop的配置文件里加上Server信息,重启应用。如果看到MCP Server列表里出现了你的Server,就说明成功了。

然后我试了个prompt:“读取我桌面上的notes.txt文件。”

Claude弹了个授权请求,点允许。

它真的读到了文件内容,还帮我总结了一下。

那一刻的感觉:这玩意儿真的能干活!不是PPT里画大饼的东西!


MCP的生态:能干的事比你想象的多

目前MCP的生态已经相当丰富了。我列几个实用的,你感受一下:

你想想,以前要让AI做这些事情,得写多少胶水代码?现在配个MCP Server就搞定了。

这不是效率提升,这是效率革命。


一个容易被忽略的点:Hooks才是真正的杀手锏

Claude Desktop还提供了Hooks机制,可以在工具调用前后自动触发脚本。比如:

我试了一下PostToolUse Hook:让Claude每次修改JS/TS文件后自动跑eslint --fix。它直接帮我生成了配置,写进了项目目录下的.claude/settings.json里,然后验证成功。

说实话,这比我在CI/CD里配lint检查方便多了。因为Hook是平台层面强制执行的,Claude想忘都忘不了。

你想想,这意味着什么?意味着你的AI助手不再是“用完就忘”的傻瓜,而是“有记忆、有习惯、有规则”的聪明帮手。


MCP和OpenAI Agent SDK:竞争对手都在用,说明什么?

2025年3月11日,OpenAI发布了Agent SDK,引入了Multi-Agent概念。你可以定义多个领域的Agent,让它们协同完成复杂任务。

有意思的是,OpenAI Agent SDK也支持MCP。

这说明什么?说明MCP正在成为行业标准,连竞争对手都在用。

目前Coze、腾讯云智能体开发平台都已经支持了Multi-Agent模式。Agent的发展速度比我想象的快。

你想想,以前是“谁做得好谁说了算”,现在是“谁的标准被接受谁说了算”。

MCP正在成为那个“被接受的标准”。


我的判断:MCP会不会成为AI时代的TCP/IP?

现在说这个为时过早。

但它确实解决了几个核心问题:

1. 标准化:工具接口统一,不用每个平台适配一次。

2. 解耦:写工具的和写Agent的各干各的。

3. 可扩展:加个新工具就是加个Server的事。

缺点也有:生态还不够成熟,调试工具不够完善,安全性还需要加强——毕竟让AI直接操作外部系统,这事想想就有点刺激。

但方向是对的。

AI应用不能只活在对话框里,它需要和真实世界交互。MCP就是那个桥。

你如果现在开始折腾MCP,等生态成熟的时候,你就是那个最懂的人。


最后说一句:别把MCP想得太玄乎。它就是一个协议,让AI能调你的工具,让你的工具能被AI调。写个Server也就几十行代码,花一个下午就能跑通。

试试看,说不定能打开新世界的大门。

毕竟,AI时代最酷的事,不是看着AI变强,而是让AI为你所用。

你值得拥有一个能跟AI直接握手的工具。

812
11601 阅读
3 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月22日 06:16

林远舟

技术编辑

全栈工程师出身,做过 5 年技术社区运营。对 AI 编程工具、开发者生态有深入研究,喜欢用实测数据说话。

读者评论 3

Dev小王 4天前
终于有人把这个说清楚了,收藏了。
回复 点赞 (8)
A
AI研究员 1周前
观点有道理,不过我觉得还需要考虑算力成本的问题。
回复 点赞 (11)
M
创业者Mark 1周前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)