SmeltSec
Features
|Security
|How It Works
|Pricing
|Docs
|Blog

Product

FeaturesSecurityPricingHow It WorksDocumentation

Resources

Quick StartAPI ReferenceCLI ReferenceLeaderboardBlog

Company

PrivacyTerms

SmeltSec
© 2026 SmeltSec. Open source CLI · Proprietary SaaS.
PrivacyTerms
    所有文章
    Technology

    MCP服务器 vs Function Calling:选择你的武器

    SmeltSec Team|2026年3月22日|6 分钟阅读
    EnglishEspañolFrançaisDeutsch日本語中文Portuguêsहिन्दी

    直接用Function Calling的诱惑

    很有诱惑力。真的。

    现在每个LLM供应商都有function calling。OpenAI有。Anthropic有。Google有。你选个最喜欢的,读二十分钟文档,用JSON Schema定义你的函数,然后上线。能用。你的演示看起来很棒。投资人印象深刻。

    问题在于,"能用"和"在多个供应商间大规模运行"是两个完全不同的说法。前者是一个周二下午的工作。后者是一份全职工作。

    当你把function calling硬编码到一个供应商上时,你选的不只是一个vendor。你选择了他们的schema格式、参数惯例、错误处理语义和发布节奏。你在写按定义就不可移植的胶水代码。而且你是在可移植性最重要的那一层做这件事——你的应用和它依赖的智能之间的边界。

    大多数人直到需要支持第二个LLM时才意识到这一点。到那时,胶水代码已经扩散了。

    没人算过的维护税

    做个练习。去你的代码库里数一下,有多少行代码纯粹是为了在你的内部工具定义和某个特定LLM供应商的function calling格式之间做转换。

    一个集成?也许一百行。可以管理。两个集成?你开始注意到OpenAI和Anthropic对可选参数的表达方式有微妙的分歧。三个?你在维护一个兼容性矩阵。五个?你不小心建了一个框架。

    而且框架永远不会停止增长。每个供应商每季度都会改API。有时候加功能。有时候废弃东西。有时候他们"改进"schema格式,结果在周六凌晨两点把你的生产环境搞崩。

    多供应商function calling的维护税不是线性的。是组合式的。每增加一个供应商就让攻击面倍增。每次API变更都会级联到每个集成。你"简单"的function calling层变成了技术栈中最脆弱的部分——那个所有人都不敢碰的文件。

    没人把这个成本写进架构文档。没人在sprint计划中估算它。它只是默默积累,直到有一天你发现一半的工程时间花在了维持集成运转上,而不是构建功能。

    MCP真正解决了什么

    MCP不是一个产品。不是某个创业公司的API。它是一个协议。这个区别比人们想象的重要得多。

    写MCP服务器时,你只描述一次工具。一套schema。一组描述。一种错误格式。完了。每个会说MCP的LLM都能发现并使用你的工具,无需你写一行供应商特定的代码。

    没有适配器。没有版本矩阵。没有"if openai then 格式A, elif anthropic then 格式B"的分支。协议就是契约,任何实现了协议的客户端都能免费获得你的工具。

    这和让HTTP成功的模式一样。没人为Chrome、Firefox和Safari写不同的API。你实现协议,每个遵循协议的客户端都能工作。MCP对AI工具集成做了HTTP对Web内容分发做的事——让传输层变得无聊,这样你就能专注于应用层。

    实际结果是,你的工具定义变成了资产而不是负债。写一次,测一次,文档写一次。新的LLM供应商出现时,你不需要重写任何东西。只要指向你的MCP服务器就行。

    Function Calling仍然胜出的时候

    如果我不承认这一点就太不诚实了:有时候function calling确实是正确的选择。

    如果你在构建一个只会用一个LLM的应用,你知道是哪个,而且你没有在这件事上自欺欺人——直接function calling更简单。更少的抽象。更少的活动部件。你用可移植性换取直接性,有时候这个交换是值得的。

    如果你需要MCP还没有对应的供应商特定功能——比如结构化输出模式、计算机使用API或者供应商特定的流式行为——直接集成是合理的。协议没暴露的东西你访问不了。

    如果你在做原型,在"先让它跑起来"的阶段,function calling让你更快到达目的地。MCP有初始搭建成本。对于一个周末黑客马拉松,这个成本是实在的。

    但有个问题你必须诚实回答:"永远只用一个供应商"真的描述了你的未来吗?因为根据我的经验,说"我们只会用OpenAI"的公司,就是六个月后用户开始要求时疯狂添加Claude支持的那些公司。说"我们只是在做原型"的公司,就是两年后还在生产环境跑那个原型的那些公司。

    从function calling切换到MCP的成本每天都在涨。从MCP开始的成本大致保持不变。

    融合

    我认为大多数人忽略了这一点:MCP和function calling不是敌人。它们是同一个技术栈中的不同层。

    MCP工具可以作为函数暴露给任何支持function calling的LLM。协议是真相之源——你的工具做什么、接受什么、返回什么的权威描述。Function calling适配器是生成的,不是手写的。你的MCP服务器是唯一的源头;供应商特定的格式是投影。

    这意味着你不需要选择。你可以用MCP作为工具定义层,同时继续用function calling作为向每个LLM交付的机制。区别在于,有了MCP,那些函数定义是从单一源头派生的,而不是按供应商独立维护的。

    不管行业是否意识到,这就是它前进的方向。"一个权威描述,多个派生格式"这个模式在其他所有领域都赢了——数据库schema、API规范、类型系统。AI工具集成会收敛到相同的模式,因为替代方案是一个比任何工程团队增长都快的维护负担。

    现在想明白这一点的公司会把时间花在构建更好的工具上。后来才想明白的公司会把时间花在重写胶水代码上。两组人最终都会到达同一个地方。唯一的问题是他们在路上浪费多少时间。

    相关文章

    Technology

    MCP协议将吞噬API经济

    5 分钟阅读

    Security

    为什么大多数AI工具集成都危险地不安全

    6 分钟阅读

    准备好试用SmeltSec了吗?

    60秒内生成安全的MCP服务器。免费开始。