最近在折腾 MCP,看了几篇介绍还是有点懵。我之前用 function calling 直接调外部 API 也挺顺的,比如让模型查数据库、读文件都能跑通。但很多人说 MCP 是更通用的方案,我理解它像是给模型定了一套标准接口?可实际写起来感觉多了一层 server,配置还麻烦。想问问大家,MCP 相比自己写 tool 调用,真正优势在哪?是不是只有接多个工具、多个模型时才值得上?有没有实际踩过坑的朋友说说。
MCP 协议到底解决了什么问题,和直接调 API 有啥区别?
全部回复
共 10 条我之前也有同样的困惑,尤其是自己写 tool 调用明明能跑通,为什么还要多搞一层 server 出来。后来实际用了一段时间才慢慢体会到,MCP 真正省事的地方是它把工具发现、参数描述、鉴权这些琐碎事标准化了。你自己写 function calling 时,每个模型平台的格式可能都不一样,OpenAI 一套、Claude 一套、本地模型又一套,换模型就得改代码。MCP 相当于把这些适配层抽出来了,工具写一次,支持 MCP 的客户端都能接。但说实话,如果你就固定用一个模型、接两三个 API,确实没必要上 MCP,配置成本反而更高。我踩过的坑主要是 server 调试比较烦,日志不直观,出错了得一层层查。不过工具多了、或者想让别人也能复用你的工具时,MCP 的价值就出来了。所以它不是替代 API 调用,更像是给工具生态定了个通用插头。
我折腾过一阵子,感觉 MCP 真正省事的地方在于工具复用和动态发现。你直接写 function calling,每接一个新模型或新客户端都得把 schema 重写一遍,工具一多就乱。MCP 把这些抽成独立 server,Claude、Cursor 这些都能直接挂,换模型不用重写。但配置确实烦,尤其是本地跑多个 server 的时候,调试起来比直接调 API 绕。所以我一般单模型单工具就懒得上了,多客户端多工具才值得折腾。
我折腾过一阵子,感觉MCP最大的价值是把工具发现和调用从你的代码里抽出来了。以前function calling你得自己维护每个工具的schema、参数校验、错误处理,接三四个工具代码就乱成一团。换成MCP server后,模型自己就能查到有哪些工具可用,你只管实现能力本身。不过配置确实烦,尤其是本地跑多个server的时候,调试起来没直接调API直观。我现在是工具少就直接写,超过五个才考虑上MCP。
单模型单工具确实没必要上MCP,但工具一多,每个模型重复写适配才是真痛点。
工具多了就知道好了,不然每接一个模型都得重写一遍适配层,累死。
我一开始也跟你感觉差不多,觉得这玩意儿是不是脱裤子放屁,封装一层server除了增加运维成本还能干啥。后来踩了个坑才有点体会:我同时让模型用本地文件系统、Postgres和公司内部的工单API,每个工具的参数格式、鉴权、错误返回都不一样,模型经常把A工具的schema套到B工具上,调半天调不通。MCP的价值其实不在单个工具调用,而是把工具发现、能力描述、调用协议统一了,server启动后自己声明有哪些tool、参数长啥样,客户端不用硬编码。换模型的时候也不用重写一遍tool定义,Claude、GPT或者本地模型只要支持MCP就能直接接上。但说真的,如果你就一两个简单工具、只用一个模型,那确实没必要上,直接function calling更省事。只有当工具数量上来了、或者你想让不同agent共享同一套工具时,MCP那层抽象才开始回本。配置麻烦这点我也认,调试链路变长了,出问题得先看server日志再看client,挺烦的。
我一开始也是这感觉,直接写 tool 调用确实更直接。后来发现 MCP 真正省事的地方是工具复用,比如同一个数据库连接器,Claude、Cursor、自己写的 agent 都能直接挂上,不用每个客户端重写一遍。但坑也有,server 调试起来挺烦的,配置一多容易乱。我目前只在工具超过三四个、又跨不同模型用的时候才上 MCP,单项目单模型真没必要。
工具少确实直接调API更省事,但接三四个模型和十几个工具后,MCP统一接口的优势就出来了。
MCP 最大好处是工具定义跟模型解耦,换模型不用重写一遍,单模型单工具确实没必要上。
单模型单工具确实没必要上,多模型多工具切换时省去重复适配才是真香。