news 2026/4/23 9:50:50

Function Call 和 MCP 的区别(举例子,一文说明白)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Function Call 和 MCP 的区别(举例子,一文说明白)

一、前言

过去一年里,Function Call 成为最常用的“让 AI 调用代码”的方式。
但是当你的业务变复杂,比如:

  • 访问数据库
  • 操作本地文件系统
  • 管理多个工具
  • 调用公司内部 API
  • 多个模型复用同一套工具

Function Call 就开始吃力了。

于是,MCP出现了,它解决了 Function Call 的所有局限,成为下一代 AI 工具调用标准。

本文将通过Node.js 实例,让你直观理解两者区别。

二、概念总结:一句话说清两者区别

Function Call
模型提示你:“我要调用这个函数”,然后你负责执行。

MCP
模型自动发现和调用已注册的“工具”,开发者只负责定义工具,不负责执行。

一句话:

Function Call:模型说“我需要工具”,你来执行。 MCP:模型自己执行工具,你只负责提供工具。

三、用例对比:查询某个城市的天气

我们以“查询北京天气”为例进行对比。

目标:
让用户问:“北京天气怎么样?”
模型自动获取天气数据,并返回结果。

3.1 Function Call 示例(Node.js)

代码结构
function_call/ ├── app.js └── weather.js
步骤1:你需要手写工具函数(核心)
import axios from "axios"; export async function getWeather(city) { const apiKey = "your_api_key_here"; const url = `https://api.open-meteo.com/v1/forecast?latitude=39.9&longitude=116.4&hourly=temperature_2m`; const resp = await axios.get(url); return `当前温度:${resp.data.hourly.temperature_2m[0]}°C`; }
步骤2:把工具绑定给模型(你要写)
import { ChatOpenAI } from "@langchain/openai"; import { getWeather } from "./weather.js"; const tools = [ { type: "function", function: { name: "get_weather", description: "获取指定城市的天气信息", parameters: { type: "object", properties: { city: { type: "string" } }, required: ["city"] } } } ]; const llm = new ChatOpenAI({ model: "gpt-4o-mini" }).bind({ tools }); async function run() { const res = await llm.invoke("北京天气怎么样"); if (res.tool_calls?.length > 0) { const { city } = res.tool_calls[0].args; // 你负责执行工具 const weather = await getWeather(city); console.log("返回天气:", weather); } } run();
Function Call 的特点

你必须:

  • ❗手写 getWeather
  • ❗手动执行工具
  • ❗手动把结果反馈给模型
  • ❗每个模型都需要绑一遍 tools

当你的工具越来越多时,维护成本越来越高。

3.2 MCP 示例(Node.js)

在 MCP 中,你只需要定义工具,模型会:

✔ 自动发现工具
✔ 自动决定什么时候调用
✔ MCPClient 自动执行
✔ 你不需要任何其它代码

步骤1:定义一个 MCP 天气服务

新建:mcp-weather-server.js

import { Server } from "@modelcontextprotocol/sdk/server"; import axios from "axios"; const server = new Server({ name: "weather-service", version: "1.0", }); // 注册自定义工具 server.tool( "get_weather", "获取天气", { type: "object", properties: { city: { type: "string" } }, required: ["city"] }, async ({ city }) => { // 你可以接数据库/公司内网 API 都行 const url = `https://api.open-meteo.com/v1/forecast?latitude=39.9&longitude=116.4&hourly=temperature_2m`; const resp = await axios.get(url); const temp = resp.data.hourly.temperature_2m[0]; return { weather: `${city}当前温度:${temp}°C` }; } ); server.start();
步骤2:模型自动调用 MCP 工具
import { ChatOpenAI } from "@langchain/openai"; import { MCPClient } from "@langchain/langgraph/mcp"; import { ChatPromptTemplate } from "@langchain/core/prompts"; // 连接 MCP server const mcp = new MCPClient("stdio", { command: "node", args: ["./mcp-weather-server.js"] }); // 绑定到模型(让模型自动调用 MCP 工具) const llm = new ChatOpenAI({ model: "gpt-4o-mini", }).bind({ mcp }); const prompt = ChatPromptTemplate.fromMessages([ ["system", "你可以使用 MCP 工具获取天气信息。"], ["human", "{q}"] ]); async function ask(q) { const res = await prompt.pipe(llm).invoke({ q }); console.log("模型回答:\n", res.content); } ask("北京天气怎么样");

运行后输出类似:

模型回答: 北京当前温度:1°C
MCP 的特点
  • 模型自动识别并调取 get_weather
  • MCPClient 负责执行工具并返回结果
  • 开发者不用写其它code(如 res.tool_calls)
  • 所有 MCP 支持的模型都能直接复用这个工具

四、核心区别(通过例子直接看出来)

能力Function CallMCP
工具在哪里定义?代码里MCP Server 里
工具由谁调用?开发者手动调用模型自动调用
工具能否自动发现?❌ 不行✔️ 自动发现
是否支持文件系统 / DB / 本地脚本?你得自己写MCP 工具库直接支持
能否被多个模型共享?❌ 每个模型都要重新写✔️ MCP 工具可复用
安全性和权限?手动处理MCP 内置权限管理

一句话:

Function Call = 模型请求你,你再帮它调工具 MCP = 模型自己调工具,你只提供工具

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:48:26

AI写专著的秘密武器:实用工具全解析,加速学术成果产出

学术专著的主要价值在于其内容的系统性和逻辑严谨性,但这往往是写作过程中最难以攻克的难题。与期刊论文关注单一议题不同,专著需要构建一个涵盖绪论、理论基础、核心研究、应用拓展及结论的完整体系,各章内容需逐层深入、彼此呼应&#xff0…

作者头像 李华
网站建设 2026/4/23 9:45:52

基于深度学习YOLOv12的晶圆体缺陷识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文提出了一种基于深度学习YOLOv12的晶圆体缺陷检测系统,旨在实现高效、准确的晶圆制造缺陷分类与定位。系统针对9类常见缺陷(包括Center、Donut、Edge-Loc等)进行检测,采用包含13,000张标注图像的数据集&#xff…

作者头像 李华
网站建设 2026/4/22 21:41:56

超实用AI教材生成指南,低查重让你的教材编写快人一步!

写教材需要依赖于丰富的资料支撑,而传统的资料整合方法已经过时。过去,我们需要从课标文件、学术论文到教学案例等各种来源获取信息,这些信息往往分散在知网、教研平台等不同地方,筛选有用的信息通常需要花费数天的时间。即使资料…

作者头像 李华
网站建设 2026/4/23 9:48:44

运动服饰ERP适合中小品牌吗

万达宝ERP:模块化架构与轻量化部署的平衡之道万达宝ERP为中小运动服饰品牌提供模块化功能组合,企业可按需选择采购、库存、销售、财务等核心模块,避免一次性投入过高成本。系统支持云端部署,无需自建服务器,初始实施成…

作者头像 李华
网站建设 2026/4/23 9:48:05

VR防震减灾学习机,提升应急反应能力的关键工具

在城市化快速发展的今天,地震等自然灾害依然时有发生。传统防震减灾宣传多依赖于纸质手册、宣讲课程或演练,存在抽象、枯燥、缺乏代入感等问题,往往难以真正让公众掌握应急技巧。正因如此,VR防震减灾学习机应运而生,借…

作者头像 李华
网站建设 2026/4/22 9:32:20

AI写教材必备!掌握低查重技巧,让教材生成又快又好

在创作教材之前,选择工具总是个让人头疼的问题!如果用普通的办公软件,功能简直单一得可怜,格式和框架得自己一点一点弄;换用那些专业的编写工具,操作可就繁琐多了,学会了还得花上好几天&#xf…

作者头像 李华