MCP 和 Function Calling 分别是什么,两者有何关系?一文带你快速了解(附实例)
目录一、背景大模型需要动手干活二、方案一Function Calling模型API原生能力2.1 核心定义2.2 核心特点2.3 快速了解实际应用以查询天气为例整体流程概览核心函数展示(以java➕LainChain4j为例):三、方案二MCP标准化协议3.1 核心定义3.2 核心特点3.3 快速介绍实际使用以Mysql MCP server为例一、理解 MCP Server 的安装逻辑二、环境准备三、安装 MySQL MCP Server第一步命令行添加推荐最快捷第二步;指定作用域第三步验证 MCP 连接四、测试应用四核心区别五、生产环境5.1 标准协同架构链路5.2 为什么需要协同5.3 实战案例演示六、场景化选型推荐一、背景大模型需要动手干活让大模型“动手干活”是 AI 应用开发的核心。大模型只能输出文本无法直接操作外部系统。为了让模型‘动手干活’业界主要有两种方案Function Calling2023 年 OpenAI 首创让模型在回复中夹带标准化函数调用指令实现工具调用MCP2024 年 Anthropic 提出定义通用标准协议实现模型与外部工具服务器的独立通信二、方案一Function Calling模型API原生能力2.1 核心定义Function Calling 是大模型原生的 API 能力开发者预先定义工具函数信息后发送给模型模型识别用户意图后输出结构化调用指令。业务程序解析指令并执行对应工具最后模型结合用户提问与工具返回结果汇总生成最终答案。标准返回示例{// 要调用的工具函数名称function: query_weather,// 函数所需入参城市名称arguments: {city: 北京}}2.2 核心特点特点详细说明轻量便捷无需额外部署服务仅需在模型 API 请求中配置参数开箱即用响应快速单次 API 请求内完成意图识别、参数解析、调用指令生成链路极短模型原生由模型厂商原生实现随模型版本迭代自动优化升级无需开发者改造存在绑定限制函数签名每次请求都需带入工具数量过多会造成 Token 溢出、上下文过载2.3 快速了解实际应用以查询天气为例整体流程概览用户提问“今天北京天气怎么样”↓【大模型】识别意图 → 判断需要调用 get_weather 工具↓【输出调用指令】{name:get_weather, arguments:{city:北京,date:2026-06-12}}↓【业务代码】执行 WeatherTools.getWeather(北京, 2026-06-12)↓【调用真实天气 API】或返回模拟数据→ 获得结果“北京 2026-06-12 天气晴...”↓【大模型】将工具返回结果组织成自然语言↓最终回答“今天北京天气晴朗温度 18~28℃湿度 45%风力 2 级。”核心函数展示(以java➕LainChain4j为例):Component public class WeatherTools { /** * 定义一个可供大模型调用的工具函数。 * Tool 注解告诉 LangChain4j这是一个工具大模型可根据用户意图决定是否调用 * name : 工具的唯一标识大模型在生成调用指令时会使用这个名字 * value : 工具的功能描述帮助大模型理解在什么场景下使用该工具 */ Tool(name get_weather, value 获取指定城市和日期的天气信息) public String getWeather( P(value 城市名称如北京、上海) String city, P(value 日期格式 yyyy-MM-dd) String date) { // 调用真实天气 API示例为模拟返回 return callWeatherAPI(city, date); } private String callWeatherAPI(String city, String date) { // 实际项目中替换为 HTTP 请求如高德、和风天气等 return String.format(%s %s 天气晴温度18~28℃湿度45%%风力2级, city, date); } }三、方案二MCP标准化协议3.1 核心定义MCPModel Context Protocol模型上下文协议是一套与大模型完全解耦的开源标准协议。它搭建了标准化的工具调用架构彻底解决工具复用、跨模型适配、安全管控等问题。整体分为三层架构MCP Server工具能力载体封装数据库查询、CRM 调用、本地文件读写等具体业务能力MCP Client嵌入 AI 宿主Claude Desktop、Cursor、自研 AI 应用负责与服务端通信、指令转发Host 运行环境统一管理安全策略、权限校验、操作审计、流量管控基于 MCP大模型无需感知工具具体实现逻辑仅需通过标准协议调用 MCP Server 暴露的能力。3.2 核心特点特点详细说明彻底解耦工具实现与大模型完全分离更换模型无需重写、适配工具逻辑可审计、高安全三层架构隔离可在宿主层实现精细化权限校验、全链路操作日志审计动态注册支持运行时新增、更新工具无需修改模型请求参数、无需重启服务生态统一所有兼容 MCP 协议的工具可被任意 MCP 宿主、任意主流大模型调用3.3 快速介绍实际使用以Mysql MCP server为例一、理解 MCP Server 的安装逻辑MCP Server 本质上是一个独立运行的程序它通过标准输入输出stdio与 Claude Code 通信。安装一个 MCP Server 只需要做两件事告诉 Claude Code 怎么启动这个程序配置command和args告诉这个程序怎么连接外部资源配置环境变量env通信流程Claude Code 启动 → 拉起 MCP Server 进程 → Server 连接外部资源如 MySQL ↑ ↓ ←──────── stdio 通信 ─────── 返回结果二、环境准备在安装 MySQL MCP Server 之前确认以下环境已就绪依赖最低版本验证命令说明Node.js 18node -vMCP Server 的运行环境Claude Code最新版claude --version前两节已完成安装MySQL5.7推荐 8.0mysql --version要连接的目标数据库逐一检查# 1. 检查 Node.js node -v # 期望输出v18.x.x 或更高 # 2. 检查 Claude Code claude --version # 期望输出版本号 # 3. 检查 MySQL 是否运行 mysql -u root -p -e SELECT VERSION(); # 期望输出MySQL 版本号三、安装 MySQL MCP Server我们使用pickstar-2002/mysql-mcp这个社区维护的 MCP Server它提供了15 个数据库操作工具。第一步命令行添加推荐最快捷在终端中直接运行# claude mcp add向 Claude Code 添加一个 MCP Server 配置 claude mcp add mysql-mcp \ # mysql-mcp给这个 MCP Server 起一个名字可自定义 -e MYSQL_HOSTlocalhost \ # 环境变量MySQL 主机地址 -e MYSQL_PORT3306 \ # 环境变量MySQL 端口号 -e MYSQL_USERroot \ # 环境变量MySQL 用户名 -e MYSQL_PASSWORD123456 \ # 环境变量MySQL 密码生产请勿明文可用环境变量替换 -- \ # 分隔符前面是 claude mcp add 的参数后面是要执行的启动命令 npx pickstar-2002/mysql-mcplatest # 启动命令使用 npx 下载并运行 mysql-mcp Server注意把your_password和your_database替换为你实际的 MySQL 密码和数据库名。指定作用域第二步;指定作用域# 仅当前项目生效默认 claude mcp add mysql-mcp -s local ... # 当前用户所有项目生效 claude mcp add mysql-mcp -s user ... # 项目共享写入 .mcp.json可提交到 Git注意不要提交密码 claude mcp add mysql-mcp -s project ...第三步验证 MCP 连接配置完成后必须重启 Claude Code才能加载新的 MCP Server# 如果正在 Claude Code 会话中先退出 /exit # 重新启动 claude在 Claude Code 中输入/mcp你会看到mysql-mcp出现在可用 MCP 列表中。四、测试应用在 Claude Code 中输入自然语言指令帮我在本地数据库中创建一个叫 MCP_MYSQL 的数据库创建一个员工表并且添加一些数据。Claude Code 会通过 MCP Server 自动执行 SQL 操作并返回执行结果。四核心区别对比维度Function CallingMCP技术层级模型 API 层的专属能力通用协议层的行业标准跨模型兼容各厂商格式不互通更换模型需重写工具全兼容一套工具适配所有 MCP 宿主动态工具更新不支持新增工具需修改请求参数支持运行时动态注册、更新、下线工具安全审计能力依赖模型厂商审计粒度粗宿主层自主可控支持操作级精细化审计开发成本极低少量代码即可实现中等需独立开发、部署 MCP Server一句话总结Function Calling解决「模型怎么看懂指令、生成调用」MCP解决「工具怎么标准化、安全高效执行。五、生产环境生产环境的好方案 不一定非要二选一而是双层协同架构各司其职、互补短板。5.1 标准协同架构链路5.2 为什么需要协同缺少 Function Calling意图识别不准、参数传错大模型不知道该调哪个工具、怎么传参。缺少 MCP切换模型就要重写全部工具适配逻辑且难以统一权限管控与运维审计。5.3 实战案例演示用户提问 → Function Calling层识别物流查询意图输出带订单号的标准调用指令 → MCP客户端匹配物流MCP服务路由转发请求 → MCP Server查询库返回物流数据{status: 已发货, location: 上海中转站} → 大模型整合信息 → 输出自然语言回复六、场景化选型推荐业务场景推荐方案小型 Demo、仅 3 个以内工具、单模型、无敏感数据纯 Function CallingCursor 等软件本地文件读写插件纯 MCP多 AI 产品共用一套工具纯 MCP涉及隐私 / 支付 / 内网库需权限审计MCP Function CallingCRM、企业内部业务系统操作MCP Function Calling企业 Agent工具超 10 个、海量工具调度MCP Function Calling