mcp和function calling关系

5 阅读3分钟

mcp 是什么

MCP,全称是 Model Context Protocol。你可以先把它简单理解成一套“让模型接外部能力的统一规则”。

说得更直白一点,MCP 的作用就是让模型能够更方便地获取和使用外部数据、工具和服务,而不是只靠自己生成答案。

比如模型想读文件、查数据库、搜代码、操作浏览器、访问知识库,如果没有统一规则,那每接一种能力都要单独适配,开发和维护都会比较麻烦。MCP 做的事情,就是把这些外部能力用更统一的方式提供给模型。

所以,MCP 的重点不是某一次具体调用,而是“怎么把外部能力稳定、统一地提供给模型使用”。

你可以把它理解成一个“统一插座”。不同的工具和数据源,只要按这套规则接进来,模型就更容易理解和使用它们。

function calling 是什么

function calling 可以理解成大模型的一种“调用工具”的能力。

它的核心作用是让模型在回答问题时,不只是输出一段文字,还可以根据任务需要去调用某个函数或者工具。

比如用户问天气、查订单、查数据库、调某个接口,这些事情通常不能只靠模型“编”一个答案出来,而是要真的去调用外部系统拿结果。这个时候就会用到 function calling。

所以,function calling 的重点是“让模型知道什么时候该调用工具,以及怎么调用”。它更关注调用动作本身,比如:

  • 调哪个函数
  • 传什么参数
  • 怎么把返回结果组织成最终答案

两者的关系和差别,哪种场景适合用哪种

MCP 和 function calling 都和“大模型使用外部能力”有关,但它们不是一个层面的东西。

可以先这样记:

  • function calling 解决的是“模型怎么调用工具”
  • MCP 解决的是“工具怎么统一提供给模型使用”

也就是说,function calling 更偏“调用动作”,MCP 更偏“接入方式”。

如果继续展开理解:

  • function calling 关心的是,模型要不要调工具、调用哪个工具、参数怎么传、结果怎么返回
  • MCP 关心的是,文件系统、数据库、浏览器、知识库这类外部能力,怎么用统一规则接给模型

所以两者并不冲突,很多时候还可以配合使用。

如果用一个更好懂的比喻:

  • function calling 像是“模型会使用工具”
  • MCP 像是“工具接入模型时遵守的一套统一规则”

一个偏“怎么用”,一个偏“怎么接”。

在实际场景里:

  • 如果你只是让模型调用几个固定函数,比如查天气、查订单、调用某个接口,那 function calling 就够用了
  • 如果你要接很多不同类型的外部能力,并且希望后面方便扩展和维护,那 MCP 会更合适

所以一句话总结就是:function calling 是让模型会调工具,MCP 是让外部工具和数据更方便、更统一地被模型使用。