引言
在人工智能快速发展的当下,Agent、MCP、Function Call 这三个概念频繁出现在各种技术讨论中,但它们之间存在相似性,容易被混淆。
一、Function Call
Function Call(函数调用)是大模型调用外部函数或 API 以获取信息、执行计算或与系统交互的机制。Function Call 绑定到大模型身上后,使得大模型可以调用外部函数或 API 以增强大模型能力,是连接自然语言与程序化工具的桥梁。
1、核心价值
- 突破模型闭域限制:通过调用外部工具(如数据库、API、专业软件)扩展 LLM 能力边界
- 提升响应可靠性:将开放域问题转化为确定性函数执行(如数学计算转 Wolfram Alpha 调用)
- 实现动作代理:从纯文本生成升级为可编程行为(如发送邮件、修改代码)
- 通常与大模型绑定,作为模型的一部分,增强大模型能力的直接方式
2、Function Call 时序图
3、Function call 如何嵌入到模型中?
Function Call 就是升级版的 ChatGPT 插件,就是把 ChatGPT 插件的过程 API 化,是深度绑定到模型中,模型运行时直接调用的,就像是模型内部的协议一样,通过结构化的描述文件来简化通信流程。
ChatGPT 插件的机制:你的服务端给它提供一个描述文件,就是告诉 ChatGPT 怎么调用你的接口,以及这些接口都能做什么。那么当用户在使用 ChatGPT 的时候,如果 ChatGPT 认为用户提的某些问题,你的插件能够更好的解决,那么 ChatGPT 就会直接去调用你插件的接口。
二、什么是 MCP?
MCP(Model Context Protocol)是大语言模型(LLM)与外部数据源、工具及服务之间的交互的一种通用的开放通信协议。其核心目标是通过统一的接口框架,解决 AI 模型与真实环境连接不足的问题,使模型能够动态感知上下文并调用多样化工具,从而扩展其功能边界。
三、MCP Server
1、MCP 架构
MCP 协议基于 C-S 架构,核心组件包括:
- MCP Hosts 主机:像 Claude Desktop、IDE 或 AI 工具这样的程序,它们希望通过 MCP 访问数据
- MCP Clients 客户端:维护与服务器 1:1 连接的协议客户端
- MCP Servers 服务器:每个暴露特定功能的轻量级程序通过标准化的模型上下文协议
- Local Data Sources 本地数据源:您计算机的文件、数据库和服务,MCP 服务器可以安全地访问
- Remote Services 远程服务:可以通过互联网(例如,通过 API)访问的外部系统,MCP 服务器可以连接到
MCP 通过标准化接口和动态工具发现机制,正在重构 AI 与工具生态的协作范式。其本质是构建 LLM 与真实世界的通用适配层,既解决了模型与环境的割裂问题,又降低了开发者的集成成本
2、MCP 的通信机制
- 消息格式:基于 JSON-RPC 2.0 协议,支持请求(双向)、响应、通知(单向)三类消息类型。
- 传输方式:
- 本地通信:通过标准输入输出(stdio)传输,适用于 IDE 等本地工具集成。
- 远程通信:使用 SSE(Server-Sent Events)实现 HTTP 长连接,支持跨网络服务调用
3、MCP Server 的核心功能
3.1、动态工具发现
MCP Server 允许 LLM 运行时动态获取已注册的工具列表(如数据库查询、文件操作等),无需硬编码集成,极大提升灵活性和扩展性。
3.2、权限控制与安全执行
支持细粒度权限管理(开发者/用户/模型层级),并通过沙箱技术(如 Docker、WASM)隔离工具执行环境,保障数据安全。
3.3、资源暴露与工具调用
可安全暴露本地文件、数据库记录或远程 API 服务,供 LLM 通过自然语言指令调用,例如查询 PostgreSQL 数据库或生成 3D 建模指令。
3.4、实时通信与上下文管理
支持双向通信(如 SSE 事件流),实时推送数据更新至 LLM,维持会话状态以优化多轮交互

