MCP和Function Call的区别究竟在哪里?


本人在之前开发的项目中大量使用Funtion Call, MCP获得关注后,开始并没有完全理解两者的区别和MCP的实际意义。仔细思考了MCP和Function Call的本质区别,有了一些心得,总结归纳如下。

Function Call

在大语言模型(如大语言模型LLM)中,Function Call(函数调用) 是一种让模型能够与外部工具、API或系统交互的机制,使其不仅能生成文本,还能执行特定任务(如查询数据库、调用计算接口等)。以下是其核心工作流程:

  1. 定义被Function Call调用的Tools。
  2. 用户输入时, LLM根据输入匹配Tools的定义,决定执行哪个Tool。调用的时候根据用户输入信息动态生成参数
  3. Tool可以调用外部API, 比如天气查询;或者读取本机文件(例如企业黑话汇总文件)
  4. LLM根据Tool调用结果,直接生成回复,或者可以根据返回结果决定是否要调用其他Tool.
MCP和Function Call的区别究竟在哪里?

MCP

官方给出的MCP架构是这样的:

MCP和Function Call的区别究竟在哪里?

这个架构定义比较抽象, 这里把上面的Function Call结合一下,个人感觉比较容易理解

MCP和Function Call的区别究竟在哪里?

从此图可以看出,最大的改动在于Tool的定义移到Application外面了。 具体来说, 现在由原来提供API的服务提供商来定义Tools, 并封装成一个MCP Server. 例如,高德地图把他们的地理编码/逆地理编码/路径规划等API封装成Tools并提供一个API。详细参考https://lbs.amap.com/api/mcp-server/summary

如此一来应用开发者只要在原来的Application中实现MCP Client,根据LLM的指示调用对应的MCP Server就行了。原来的Application现在也叫MCP Host了。

MCP的优势

极大简化应用开发工作量

假设应用要调用100个api, Function Call方案要实现100个Tool, 现在不用了,因为Tool是服务提供商实现了。应用侧只需要实现一个mcp client就行。

更容易标准化

如果企业有多个团队,Function Call每个团队都要实现自己的Tool, 实现方式五花八门.现在这样的问题不存在了。

增加Tool的可靠性和可复用性

由服务商实现Tool, 并提供全世界开发者使用,比每个Tool由全世界不同的开发者分别实现,复用性大大增加。

增加Tool的易用性

如果应用逻辑并不复杂, 无需开发自己的MCP Host和MCP Client。 借助已有的工具例如Cursor, CLine, 直接调用MCP Server完成工作。 对于没有编程经验的人来说,可用性大大增强。

#MCP, #FunctionCall, #AI

RAG技术前沿技术新闻资讯

RAGflow分片策略与文档解析器

2025-5-19 23:21:42

前沿技术多模态技术新闻资讯

退订即梦、可灵、Vidu、Mj,只因我有了Lovart

2025-5-19 23:57:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索