支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


从 Function Call 到 MCP:解锁大模型与外部世界交互的 “超能力”

发布日期:2025-05-12 12:42:03 浏览次数: 1543 作者:尧字节
推荐语

探索大模型与外部世界交互的新路径。

核心内容:
1. Function Call概念及其扩展大模型能力的机制
2. 扣子平台插件的构建过程和关键步骤
3. 模型上下文协议(MCP)的开放标准及其应用前景

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

一 介绍

对于大语言模型来说,有个局限性,就是训练的数据不可能是实时的数据,也没有其他私有信息。就如同“知识很丰富,却被困在房间里面的人”。

1.1 Function Call

为了获取外部数据,2023年,OpenAI提出了Function Call的概念,它通过了将自然语言转成结构化调用,来扩展模型的能力,像是给模型加装各种外挂,可以让模型获取外部的实时天气,发送邮件,调用外部计算引擎进行计算等。有了Function Call这个桥梁,以大模型为中心,让LLM不仅能够聊天,而且还能自动化执行一系列操作,让其成为智能代理。

扣子(Coze)是新一代 AI 应用开发平台上面的各种插件就是基于Function Call构建的:coze上面的插件

以OpenAI官网上获取天气信息的例子,整个处理步骤如下:FunctionCall 调用过程示意图

简单来说由以下步骤组成:

  1. 定义函数 开发者需用 JSON Schema 描述函数,告知模型如何调用,将函数的描述和问题一起发给模型;
  2. 模型判断是否生成调用情况 模型会根据问题,判断是否生成调用请求,如果需要模型返回具体的调用请求;
  3. 开发者解析执行函数调用;
  4. 将调用结果和以前的消息发送给模型
  5. 模型将结果转成自然语言回复给开发者。

关键点:

  1. 开发者提供各种功能函数,告诉模型;
  2. 模型根据问题和函数功能决定是否调用,并根据问题,自动参数化调用命令;也就是构建出具体的调用命令;
  3. 模型只做决策和根据调用模版来参数化调用,很灵活。
分类优点缺点
能力扩展
连接外部API/工具,突破纯文本限制
需预先定义函数接口,开发复杂度高
精准性
结构化参数输出,减少模型幻觉
依赖外部系统稳定性(如API宕机)
安全性
敏感操作由代码控制,模型仅提供参数
错误参数需开发者兜底处理
灵活性
动态注册函数,支持多工具协作
多步骤任务需额外编排逻辑
成本
复杂操作更可靠(如支付、计算)
频繁调用增加API开销和Token消耗
适用性
适合实时数据、精准操作场景
纯文本任务反而低效(如简单问答)

1.2 MCP

模型上下文协议(MCP)是由Anthropic(Claude AI 助手背后的公司)公司提出的一种开放标准协议,旨在解决大型语言模型(LLM)与外部数据源及工具之间的集成问题。MCP的核心目标是打破信息孤岛,使得AI模型能够实时访问和处理动态数据,从而生成更准确和相关的响应。

“可以将 MCP 想象成AI 应用的“USB-C 端口”——一个标准化的即插即用接口,用于连接各种工具和数据。” 有了通用的标准之后,基于MCP协议开发的服务可以适配任何支持此协议的大模型。

架构图按照我自己的理解,为了屏蔽各种功能接口,增加了两个中间层,一个叫MCP server,封装了外部的各种服务提供统一接口、一个叫MCP Client 来减少MCP host(通常是各种大模型)的各种差异;

针对后台的资源或功能,开发者开发出一套MCP server后,就可以适配众多LLM模型,不用为每个模型做定制开发,提升了开发效率。

简洁点的架构图:MCP各个组件关系架构图

说明:

概念
定义
作用
示例/传输方式
MCP 主机
运行AI/LLM的应用程序(如聊天机器人、IDE)
协调AI操作,整合外部数据(通过MCP客户端)
Claude Desktop、Cursor代码编辑器
MCP 客户端
主机内管理单个MCP服务器连接的组件(库/进程)
处理通信(请求/响应)、会话管理、功能协商
每个数据源/工具对应一个客户端实例
MCP 服务器
提供标准化数据或功能的服务(封装本地/远程资源)
暴露统一接口供客户端调用,避免主机自定义代码
Google Drive连接器、Postgres适配器
MCP 协议
基于JSON-RPC 2.0的通信规则
定义初始化、功能调用等标准化交互方式
本地:stdio;远程:HTTP+SSE

1.3 MCP服务器究竟提供什么

1.资源(resource)模型可以为上下文检索提供基础数据,比如只读文件内容、只读数据库内容等;在MCP中, 资源通常由类似 URI 的标识符引用,客户端请求资源,服务器返回资源插入到和LLM交互的上下文中。这样LLM就可以获取最新的数据了。

2. 工具(tools)模型可以调用的可执行函数或操作(通常需要用户授权),它可以执行计算、调用API、发送消息等。LLM可以在需要的时候调用这些工具,扩展了LLM的能力,让LLM可以方便和外部系统进行交互;

3. 提示词(prompt)预定义的提示模板或对话工作流可以将提示视为预先设定的指导或多轮模板,可在需要时和数据一起发送给LLM。比如服务器可以提供代码审查的相关模版,通过这些模版,可以让AI遵循特定的模式,以保证结果的一致性;

1.4 MCP的交互流程

MCP 通信基于JSON-RPC 2.0,这是一种使用 JSON 的轻量级 RPC(远程过程调用)格式。这意味着每个请求或响应都是一个具有定义结构({"jsonrpc": "2.0", "method": ..., "params": ...}等)的 JSON 对象,使其与语言无关且易于解析。 MCP整个交互流程(去除了大模型的参与,实际中有大模型的参与)如下:图来自互联网

整个交互过程是:

  1. 连接:AI Host发起和MCP Client的连接;
  2. 获取:由MCP Client 去获取MCP Server支持的各种能力;
  3. 使用:经过模型交互后,确定使用哪类能力, 可以多次使用;
  4. 关闭: 关闭连接;

你也许会问,大模型起什么作用?

  1. 在你通过自然语言问问题的时候,大模型会进行分析,再结合MCP Client获取到MCP Server的能力来决定是否调用,如果需要调用,则会提示AI Client需要发起调用,给AI Client提示需要调用,同时需要客户确认;
  2. MCP Server返回执行结果后,MCP客户端再将JSON-RPC的结果和前面的消息一起发送给大模型,大模型再将其转换成自然语言回复;

关键点

  1. MCP客户端和MCP服务器通常有两种连接方式,一种是stdio,本地类似unix的管道方式进行通信,服务器作为本地运行的进程,这种方式高效、简单、减少网络通信开销;

  2. MCP客户端和MCP服务器的第二种通讯方式是HTTP+SSE。 MCP客户端通过 HTTP的POST来发送请求,MCP服务器通过SSE,推送的方式来完成事件响应;这里面的HTTP连接为长连接;

  3. MCP客户端和MCP服务器在初始化阶段,会获取MCP服务器上的工具列表、资源列表和提示词列表,以便后续使用;

  4. **MCP 客户端-服务器连接特性:

1. 长连接机制 
   - 连接持续活跃,支持多轮交互。
   - 客户端控制生命周期(可关闭或维持服务器)。
2. 异步事件处理
   - 服务器通过JSON-RPC通知推送事件(如文件变更)。
   - 客户端响应方式:更新上下文/触发用户通知。
3. 状态保持能力
   - 服务器可跨请求维护上下文(例如缓存数据、跟踪API会话状态)。
stdio和HTTP+SSE区别,图来自互联网

二 MCP简单实践

想尝试MCP,需要根据需求,找到MCP Client和MCP Server,这两者市面上已经开发了很多了,我们找最简单的来实践下即可;

2.1 MCP Client选择

MCP Client 可以是开发工具、或者使用大模型的编程工具,综合各种比较,国内比较适合:

  1. 基于vscode的Cline插件;
  2. AI的聊天工具:Cherry Studio;

2.2 MCP Server 选择

可以在哪里找到MCP Server那,可以从以下地方获取:

官网的MCP Server集合的github集合:https://github.com/modelcontextprotocol/servers
MCP Server官方集合
第三方MCP Server集合:https://mcp.so/
第三方MCP Server集合
MCP市场:https://mcpmarket.cn/
MCP市场
https://smithery.ai/
smithery.ai

2.3 配置MCP Server环境

MCP Server 开发用python或nodejs比较多,所以一般通过npx或uvx运行,如果用其他语言写的比如rust或go,可以直接通过命令行方式执行;

NPX:
1. NPM(nodejs包管理工具)的一部分;
2. 可以从NPM仓库运行一个包;
3. NPX可以缓存包提升性能;

UVX:
1. uv工具链组成部分;
2. 专注于python虚拟环境;
3. 创建虚拟环境;
4. 执行后自动清理;

运行NPX需要安装nodejs环境,安装npm;uvx需要安装python环境;

2.3.1 Cherry Studio 工具下MCP环境配置

首先准备下数据目录,里面放着学习信息、成绩表、老师表,每个表的数据都采用csv文件形式; 其次就是在cherry studio配置,我们直接在里面找个文件系统的MCP服务器;MCP服务器配置

MCP服务器执行工具安装

点击我们添加的服务器,进行参数配置配置

运行,我默认配置的DeepSeek这个大模型,在大模型聊天框中,首席点击下面的命令提示符选择MCP服务器: 问了个简单的问题:

现在有多少个学生,超过90分的学生有多少个?

image.png可以看到大模型:

  1. 遍历了准许遍历的目录;
  2. 遍历目录;
  3. 读取多个文件 通过结果看,是显示出来结果,不过速度挺慢的,而且耗时比较久的,关键比较耗费token;

2.3.2 Cline配置环境

  1. 安装Cline 这个比较简单,搜索vscode插件,然后选个下载最多的安装;

  2. 配置Cline配置MCP服务器cline配置

配置好了之后,每次运行都要批准比较慢,可以直接设置自动批准:MCP服务器配置2

配置文件:

{
  "mcpServers": {
    "filesystem": {
      "isActive"true,
      "name""Filesystem MCP Server",
      "type""stdio",
      "description""用于获取本地目录列表、读写本地文件的 MCP Server",
      "command""npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/mac/git/AI/datas"
      ]
    }
  }
}
  1. 发现上面配置执行失败 在测试的时候一直没有找到原因,后面卸载了Cline,重新从Cline默认的服务器安装一个filesystem,配置如下,同样是这个程序,它会自动下载,创建配置文件夹,启动MCP-Server,然后测试执行, 更正后的配置
{
  "mcpServers": {
    "fileSystem": {
      "autoApprove": [
      ],
      "disabled"false,
      "timeout": 60,
      "command""npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/mac/Desktop"
      ],
      "transportType""stdio"
    }
  }
}

交互测试如下,问了个问题,问:/Users/mac/git/AI/datas目录下有多少个学生? 通过多次交互,去遍历这个目录,找到students.csv文件,然后遍历得到20个学生的结论。目录下有多少个学生注意:最好用vscode打开这个目录,作为工作目录,不然每次都在桌面去找

三 总结

大模型不再是困于数据牢笼中的智者,Function Call 与 MCP 的出现,如同为其打开了与现实世界相连的 “任意门”。Function Call 以结构化调用拓展能力边界,MCP 则用标准化协议搭建交互桥梁,二者携手让 AI 走出 “象牙塔”,真正融入复杂多变的外部环境。当大模型学会调用实时数据、操作外部工具,智能体的终极形态已初现曙光。。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询