Function Calling已经过时 ,MCP才是真正的大模型接口标准

AI资讯 5小时前 charles
110 0

Function Calling已经过时 ,MCP才是真正的大模型接口标准

前言

过去一个月,全球大模型圈最热的关键词,非MCP莫属。

模型侧,从Claude到Open AI,从Llama到DeepSeek、通义;

应用侧,从Figma到Unreal,从Milvus到高德地图,全球超过 8,000 个主流工具和软件支持MCP,适配 MCP Server已经成为行业标准动作;

可以说,模型与工具对接标准的大一统时代已经呼之欲出;而借助MCP,人人都是AI应用开发者的时代也正加速到来。

但MCP 是怎么爆红的?会彻底取代Function Calling 吗?MCP 离“事实标准”还有几步?如何使用mcp-server-milvus服务?

针对以上几个问题,我们将在本文中,作出重点解读。

01

为什么需要MCP:AI统治世界,还需突破两道墙

为什么在新闻报道中,AI上知天文下知地理无所不能,但是实际生活中,却总感觉差点意思?因为两堵墙的存在。

第一堵墙:信息孤岛

无论你的大模型多么聪明,它的知识都停留在训练结束的那一刻。而世界,是不停地变化的,比如,信息孤岛的最典型例子是大模型永远不知道现在几点。类似的案例还包括:

  • 公司刚发布的年度战略,模型不知道;

  • 某个内网数据库里的用户埋点数据,模型永远接触不到;

  • 项目组昨天刚写完的新接口文档,它也不可能预见。

AI 一旦与现实脱钩,它的回答就注定带有幻觉、偏差,甚至风险。

第二堵墙:遗留系统

大模型只能负责更聪明的推理、计算,但问题是大模型在做完五一旅行规划之后,只有对接上我们的机票、酒店、打车软件,才能完成最终的执行;对企业场景同样如此,只有接入企业的财务、销售、数据库系统,才能真正发挥作用。但现实中

  • 每一家公司的IT系统构成都不一样:MySQL、Oracle、Redis、自研 CRM、私有云部署…

  • 就算有 API,OpenAI 和 Claude 的 Function 调用格式也各不相同,对接是个超级大工程。

Function Calling已经过时 ,MCP才是真正的大模型接口标准


02

搞定大模型困境的三条主流路径

大模型的落地困境说白了,其实就是不知道和干不了。

关于解决这两个问题,业内有以下三个解决思路:

1、RAG,解决不知道的信息孤岛

其核心思路是让大模型实时检索外部知识库(比如公司文档、合规政策、技术资料),再生成回答,把"闭卷考"变成"开卷考"。

但RAG也有局限那就是要想RAG的效果好或者模型表现稳定的话,对接的数据源需要结构化或至少格式统一,背后的工程投入不低;而且,RAG 本身不能“执行指令”或“调用工具”,这就导致其场景被限制在了IMA知识库的范围。

2、Function Calling,同时解决不知道与干不了。

Function Calling的核心思路是让大型语言模型(LLM)直接将用户请求转化为结构化的函数调用指令。模型根据预先定义的函数接口生成调用信息(通常为JSON格式),紧接着,外部应用读取并执行相应函数生成响应。让 AI 不仅能说,还能做。例如:

查天气 → 调用天气API;

开灯关灯 → 调用智能家居接口;

查数据库 → 执行SQL;

Function Calling已经过时 ,MCP才是真正的大模型接口标准

但Function Calling的问题也不小。

首先,函数定义与对话 Prompt 之间存在强耦合关系,这使得后期的修改和功能升级变得异常困难。开发者通常需要在应用代码中手动、静态地将函数定义嵌入到 Prompt 中,一旦注入聊天上下文,这些定义就“固化”下来,难以动态调整。若要新增或修改功能,只能回头修改代码或 Prompt,开发体验非常割裂。

其次,模型的上下文管理与函数调用逻辑往往在同一个进程中处理,一旦出现异常,轻则调用失败,重则可能导致整个服务崩溃,可靠性难以保障。

更棘手的是,不同大模型平台在函数接口的支持标准上并不统一。比如你想定义一个 search_weather(city) 的函数,放到 OpenAI、Claude 或 Gemini 中使用,就需要分别编写不同的 schema 和包装逻辑。最终的结果是:如果你有 M 个大模型应用、N 个工具或服务,理论上可能需要实现 M × N 套 Glue 代码,不仅开发效率低下,更会带来指数级增长的维护成本,严重制约了规模化落地的可能性。

Function Calling已经过时 ,MCP才是真正的大模型接口标准

OpenAI Function Calling示例:

OpenAI GPT-4 会返回一个带有function_call字段的JSON对象

{  "index"0,  "message": {    "role""assistant",    "content": null,    "tool_calls": [      {        "name""get_current_stock_price",        "arguments""{n "company""AAPL",n "format""USD"n}"      }    ]  },  "finish_reason""tool_calls"}

Claude Function Calling 示例:

Anthropic Claude则用内容类型标记tool_use

{  "role": "assistant",  "content": [    {      "type": "text",      "text": "<thinking>To answer this question, I will: …</thinking>"    },    {      "type": "tool_use",      "id": "1xqaf90qw9g0",      "name": "get_current_stock_price",      "input": {"company": "AAPL", "format": "USD"}    }  ]}

Google Gemini Function Calling 示例

Google Gemini使用functionCall

{  "functionCall": {    "name": "get_current_stock_price",    "args": {      "company": "AAPL",      "format": "USD"    }  }}

LLAMA Function Calling 示例:

LLaMA采用类似JSON结构

{  "role": "assistant",  "content": null,  "function_call": {    "name": "get_current_stock_price",    "arguments": {      "company": "AAPL",      "format": "USD"    }  }}

建立Function Calling 的思路基础上,MCP 协议(Model Context Protocol,简称MCP)横空出世。

其核心思路是为模型上下文协议引入了一种客户端-服务器的开放架构。通过一套标准,兼容多个工具和数据系统,对模型可以调用和访问的外部能力进行了精细化的拆分,将过去N个模型,M个服务对接需要N*M次开发,简化成了整个系统只需要N+M次开发的数学题。

而从用户侧,通过丰富的工具接入,MCP真正实现了“对话即操作”。

面向普通人,你可以一句话让AI帮你整理电脑桌面,或者一句话打开你家的扫地机器人

面向专业人士,Blender MCP可以让你一句话就自动实现一个3D建模,过程中还能通过和AI聊天不断修改;Figma MCP可以让你一句话自动完成产品原型设计,结合cursor可以让AI直接交付一个网站或者一个app;Unity和虚幻引擎的MCP则可以让你用和AI对话的方式构建一个完整的游戏建模,独立游戏要变天了。

Function Calling已经过时 ,MCP才是真正的大模型接口标准

具体来说,MCP协议工作生命周期如下:

第一步,初始化:当宿主应用程序(MCP Host)启动时,它会创建N个MCP Client,这些MCP Client通过握手和对应的MCP Server交换有关功能和协议版本的信息。

第二步,发现:MCP Client请求MCP Server提供的能力(Tools、Resources、Prompts)。MCP Server以列表和描述进行响应。

第三步,上下文提供:宿主应用程序现在可以向用户提供Resources和Prompts,或者将Tools解析为LLM兼容的格式,例如JSON Function calling。

第四步,调用:如果LLM确定需要使用工具(例如,基于用户请求,如“Milvus实例in01-0bbd6d324ff055e现在处于什么状态?”),则Host会指示Client向相应的Server发送调用请求。

第五步,响应:MCP Server将结果发送回MCP Client。

第六步,整合输出:MCP Client将结果传递给MCP Host,主机将其纳入LLM的上下文,从而使LLM能够根据新鲜的外部信息为用户生成最终响应。

Function Calling已经过时 ,MCP才是真正的大模型接口标准

可以发现,通过统一的接口,MCP除了降低开发难度之外,还可以带来:

数据实时流动:相比传统 Function Calling 更像是“写死”的调用逻辑,而 MCP 支持动态的数据交互,工具状态和响应可以实时更新,交互更自然、更智能。

数据不出本地,隐私保护:一个被很多人忽视的点是,MCP 的工具执行并不依赖云端远程,很多时候可以在本地完成调用。这意味着数据不用上传,隐私风险也就降到最低。

完整的生态,灵活的工具选择: MCP 支持自动工具发现和上下文管理,模型可以根据对话内容自动判断该用哪个工具。

03

MCP很好,但并非全能

随着Claude、open AI、Llama、DeepSeek、通义先后官宣支持MCP,以及应用侧超过 8,000 个主流工具和软件支持MCP,模型与工具对接标准的大一统时代已经呼之欲出。

但MCP并非全能。

首先,对一些非常轻量级的高频任务,比如调用计算器、天气插件来说,能够快速响应的Function Call仍是更优解;MCP更适合相对复杂的任务编排。

其次,不同工具与软件对MCP的支持力度是不同的,MCP Server质量良莠不齐,对于小白用户而言,安全性也存在比较大的风险。目前市面上的主流实践方案,并没有完整实现MCP协议最初的设想,基本上都是在开发Tools,而Prompts和Resource这两层还没有很好的实践案例出来

https://modelcontextprotocol.io/llms-full.txt

Function Calling已经过时 ,MCP才是真正的大模型接口标准

最重要的是,当前MCP还缺乏大规模在线服务应用的验证

  • 准备这次分享的过程中在Claude3.5和3.7模型下,我挂载30-50个Tool,Prompt驱动模型调用Tool成功率是100%(测试了几十次)但实际跑在线业务的时候,如果有成百上千个Tool,模型是否还能保持稳定?或者是否有更好的工程实践路线?

  • Claude3.5和3.7的token费用现在还是很贵,有没有可能通过混合模型架构来降低成本?

  • 对于一些可能暴露敏感数据的Tool,有可能需要通过本地部署的大模型,例如DeepSeek来驱动,执行质量需要进一步验证(可能针对MCP的模型调优不如Claude)

另外补充一句,MCP实际上只解决了AI Agent的一部分问题。比如,,MCP协议给Tools的使用提供了标准和稳定的解决方案,一定程度上优化了Action的实践路径。但对于Planing和Memory,还需要额外的工程设计和实现。

当前,Planing层面,可能的解决方案是dify这样的AI工作流编排;

Memory层面,则主要依靠Milvus + 关系型数据库 + Data Warehouse

Function Calling已经过时 ,MCP才是真正的大模型接口标准

以下是mcp-server-milvus的最佳实践。

04

实战案例:mcp-server-milvus项目

背景:mcp-server-milvus项目介绍

该项目包含一个 MCP 服务器,可提供对Milvus向量数据库功能的访问。

项目地址:https://github.com/zilliztech/mcp-server-milvus

第一步:环境准备与配置

说明:本教程不含Python3和Nodejs安装展示,请自行按照官方手册进行配置。

Python3官网:https://www.python.org/

Nodejs官网:https://nodejs.org/zh-cn

Function Calling已经过时 ,MCP才是真正的大模型接口标准

第二步:安装UV

curl -LsSf https://astral.sh/uv/install.sh | sh

或者

pip3 install uv -i https://mirrors.aliyun.com/pypi/simple

安装完成之后,我们需要对UV进行验证。

uv --version
uvx --version
Function Calling已经过时 ,MCP才是真正的大模型接口标准

第三步:安装Milvus

Milvus 是由Zilliz全球首款开源向量数据库产品,能够处理数百万乃至数十亿级的向量数据,在Github取得3w+star数量。基于开源 Milvus ,Zilliz还构建了商业化向量数据库产品 Zilliz Cloud,这是一款全托管的向量数据库服务,通过采用云原生设计理念,在易用性、成本效益和安全性上实现了全面提升。

通过MCP服务器,开发者无需深入了解Milvus的底层API细节,就可以轻松实现向量数据的实时查询、相似度搜索和数据管理等操作,极大地降低了向量数据库应用的开发门槛。

部署Milvus环境要求,可参考Milvus官网:https://milvus.io/docs/prerequisite-docker.md

必要条件:

  • 软件要求统:docker、docker-compose

  • 内存:至少16GB

  • 硬盘:至少100GB

下载milvus部署文件

[root@Milvus ~]# wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose.yml -O docker-compose.yml
启动Milvus
[root@Milvus ~]# docker-compose up -d
[root@Milvus ~]# docker ps -a
Function Calling已经过时 ,MCP才是真正的大模型接口标准

第四步:Cursor中配置mcp-server-milvus服务

Clone项目到本地

clone https://github.com/zilliztech/mcp-server-milvus.git
优先在本地执行依赖下载

建议:由于网络原因,建议优先在本地执行nv命令进行安装验证后在前往cursor添加mcp-server

uv run src/mcp_server_milvus/server.py --milvus-uri http://192.168.4.48:19530
Function Calling已经过时 ,MCP才是真正的大模型接口标准

新增mcp配置

在项目根目录中创建一个.cursor/mcp.json文件:

说明:这里填写自己的文件路径

mkdir -p /path/to/your/project/.cursor
参数说明:

1./PATH/TO/uv

替换uv可执行命令的路径

2.--directory

替换刚才clone下来的项目的完整路径

3.--milvus-uri

替换部署的milvus的服务地址

{  "mcpServers": {    "milvus": {      "command": "/PATH/TO/uv",      "args": [        "--directory",        "/path/to/mcp-server-milvus/src/mcp_server_milvus",        "run",        "server.py",        "--milvus-uri",        "http://127.0.0.1:19530"      ]    }  }}
Function Calling已经过时 ,MCP才是真正的大模型接口标准

第五步:实测效果

注意在对话时务必选择Agent模式,否则Cursor是不会引用MCP服务的

Function Calling已经过时 ,MCP才是真正的大模型接口标准

首先,检查集群中的集合情况

What are the collections I have in my Milvus DB?
可以看到当前milvus数据库里是没有任何集合的
Function Calling已经过时 ,MCP才是真正的大模型接口标准

接下来,创建集合

Create a new collection called 'articles' in Milvus with fields for title (string), content (string), and a vector field (128 dimensions)
MCP自动为我创建了集合
Function Calling已经过时 ,MCP才是真正的大模型接口标准

接下来,再次查询集合

What are the collections I have in my Milvus DB?
再次查询的结果是已经查到了刚才创建的集合了
Function Calling已经过时 ,MCP才是真正的大模型接口标准

其实,案例里面这个case如果对于不太熟悉Milvus操作的人去做可能是需要半小时起步的时间的;

但通过mcp-server-milvus,跑完整个流程,只需要几分钟时间。

这不仅让开发者可以灵活地管理和查询向量数据,同时充分利用MCP协议的上下文处理优势与大语言模型的理解能力相结合,在海量向量数据中找到最相关的内容,实现更智能的信息检索和处理。

而这种范式,不仅为知识库检索和智能问答系统带来了全新的解决思路,更是一种全新的在线业务运维乃至开发范式:

在未来,运维平台,可能只有一种交互,即对话框+适当的引导信息;而更广义的开发层面,所有人都不再需要学习传统的软件交互范式,只需要理解业务,就能做任何事情,一个想法,就能撬动地球。

作者介绍

Function Calling已经过时 ,MCP才是真正的大模型接口标准

Milvus资深研发工程师:罗鑫宇

推荐阅读

讨论|谁能统一Agent 接口?MCP 对比 A2A 、Function Calling

官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升

Agent的安卓时刻到了!MCP协议下的Cursor与Milvus部署指南

点击“阅读原文”即可体验zillz cloud
Function Calling已经过时 ,MCP才是真正的大模型接口标准

版权声明:charles 发表于 2025年4月24日 pm2:01。
转载请注明:Function Calling已经过时 ,MCP才是真正的大模型接口标准 | AI工具大全&导航

相关文章