MCPSkill
MCP 与 SkillMCP 市场
对比

MCP 与函数调用的区别

两者都让模型调用工具。一个内建在模型运行时里,另一个是跨系统的协议。

先记住一句话

函数调用是模型自身的能力。你在请求里声明一组函数,模型可能返回一个结构化的调用,然后由你自己的代码去执行。 全过程都发生在你能控制的一个进程里。

MCP 是客户端和服务端之间的协议。工具不必在你的进程里,可以是别人写的;客户端是在运行时发现它们, 而不是提前把清单声明好。

关键区别

函数调用回答的是"模型怎么表达一次调用";MCP 回答的是"这些可调用的能力从哪来、别人怎么找到它们"。

并排看

维度函数调用MCP
它是什么模型 API 的一个特性一套客户端–服务端协议
工具在哪在你进程里,随请求声明在服务端后面,可能是别人写的
发现方式每次调用都传完整清单客户端从服务端发现能力
清单变大的代价工具越多,每次请求越大能力留在服务端一侧
执行方你的代码执行函数服务端执行该能力
跨应用复用复制声明和处理器让另一个客户端连同一个服务端
凭据在调用方应用里在服务端边界上,管一次

它们重叠在哪

尽管有上面这张表,两者并不是竞争关系。支持 MCP 的客户端,通常会把发现到的能力转换成模型本来就认识的形式。 从模型的角度看,一次调用来自声明的函数还是来自发现的 MCP 工具,往往长得一模一样。

区别在模型之外:实现归谁所有、怎么被发现、凭据和权限放在哪里。

什么时候用哪个

函数调用就够了工具数量少、都在同一个服务里实现、不需要跨产品复用,而且工具清单很稳定。
该上 MCP工具要在多个客户端之间共享、放在另一个系统里,或者需要让根本不碰你代码的用户也能安装。
有意识地两个都用本地辅助函数直接调,共享的或第三方的能力走 MCP,避免为私有代码额外付协议开销。
注意成本把每个工具都内联声明,会让每一轮的请求都变大。超过一定规模,光是 token 预算就足以让"发现式"胜出。

它们怎么组合

实际项目里很少二选一。典型的客户端会声明几个本地函数,同时连上一个或多个 MCP 服务端。 模型看到的是一份合并后的可调用清单,由客户端把每次调用路由到正确的地方。

本地函数      → 在本进程内执行
MCP 服务端    → 发现能力,调用通过协议转发

模型看到:     一份合并后的工具清单
客户端决定:   路由到本地处理器,还是路由到服务端

所以真正要回答的不是"函数调用还是 MCP",而是"哪些能力值得留在本地,哪些能力值得共享出去"。