大模型如何调用外部工具?通过几个简单MCP客户端示例迅速掌握!

前言

上一篇主要讲MCP服务端的实现。本篇将通过几个简单例子让大家轻松理解大模型如何调用外部工具并且快速上手MCP客户端开发

Note:
本文纯人肉手工编写,零AI添加剂,示例代码精心编排,尽量做到由浅入深,大家放心食用!

上手实操前先简单了解以下几个问题:

1. MCP 没出现之前大模型如何调用外部工具?

MCP(Model Context Protocol)协议出现之前,大模型(如GPT、Claude等)主要通过 Function Calling(函数调用) 的方式与外部工具交互。

2. 大模型如何获得Function Calling 能力?

大模型通过微调获得 Function Calling 能力的示意图

如上图所示,大模型通过监督微调(SFT)学习识别用户意图并生成结构化函数调用指令:
训练阶段:
模型被输入包含用户请求、可用函数描述期望输出的数据集,从而学会区分何时调用函数、如何提取参数格式化输出
推理阶段:
模型结合实时注入的工具描述(如函数名称、参数格式)动态生成调用指令,再由外部系统执行,最终整合输出结果

3. MCP和function calling 的关系和区别:

MCP是在Function Calling基础上的标准化工具调用流程

核心区别:

维度Function CallingMCP
作用层面模型内部的工具调用决策模型与外部工具的标准化交互协议
交互粒度细粒度(单函数调用)粗粒度(多工具/服务的统一管理)
实现方式模型原生能力(如 OpenAI 的 JSON 指令)独立协议(JSON-RPC 格式)
依赖关系不依赖 MCP依赖 Function Calling 生成指令

4. Function Calling 具体如何运行?

Function Calling 运行流程图

下面是一个简单示例代码,我们来运行看看。

1. 下载&安装
# 克隆本MCP教程项目代码
git clone git@gitee.com:changelink/mcp-so-easy.git
# 进入项目目录
cd mcp-so-easy
# 安装依赖
npm install
2. API配置

修改client/function-calling.js文件中的API配置(其他client示例文件需要做同样配置才能运行),替换为你的API Key和Base URL,如下:

const client = new OpenAI({
  apiKey: "<替换为你的API Key>",
  baseURL: "https://api.siliconflow.cn/v1"
});

tips: 本项目示例用的是硅基流动提供的API(详细参考项目中的README.md文件)。

3. 运行示例代码

执行以下命令:

# 运行 Function Calling 示例代码(Windows 用户如运行报错,请将命令中的"/"替换为"\")
node client/function-calling.js

Function Calling 示例代码运行效果图

从上图我们可以看到Function Calling示例代码运行过程可总结为以下三步:

1. 大模型根据用户提问内容结合工具函数信息给出函数调用决策信息

2. 外部系统根据函数调用决策信息执行函数调用

3. 大模型整合用户提问内容函数调用决策信息函数调用结果给出最终结果。

tips: 更具体实现细节可以细阅function-calling.js代码文件,上面每一行代码都有详细的注释。

5. MCP客户端如何调用MCP服务?

上述下载的项目里还准备了一个MCP客户端简易示例:client/client-simple.js,修改代码中的API配置信息(同上),执行以下命令:

# 运行MCP Client示例代码(Windows 用户如运行报错,请将命令中的"/"替换为"\")
node client/client-simple.js

MCP客户端简易示例代码运行效果图

从上图我们可以看到:MCP客户端连接到了名称为"My-Tool-Box"的MCP服务(不了解的可以看我上一篇MCP服务端实现的文章)并发现了5个工具函数。问题中包含3个子问题,分别调用了3个对应的工具得到3个对应的结果,然后整合输出完整回答。最后断开连接。

整个过程是否有似曾相识的感觉?是不是很像TCP协议三次握手和4次挥手的过程。其实MCP协议就是一个标准的CS(Client-Server)协议。

对比function-calling.jsclient-simple.js的代码可以看出来,前者实现的是简单的大模型调用工具函数的过程。而后者实现了一次完整的MCP协议的交互的过程,其中包含client(客户端)、server(服务器)、connect(连接)等高级抽象概念的应用。

结合第3点MCP和function calling 的关系和区别来看可以更好地理解。

6. 实现一个可通过配置文件加载多个不同类型MCP服务器的MCP客户端

一共3个文件:
1.MCP客户端主程序:client-with-config.js
2.MCP服务配置文件:mcp_settings.json
3.MCP远程服务程序:server-remote.js

1. 运行
# 先启动一个远程MCP服务
node server/server-remote.js 
# 然后运行MCP客户端主程序
node client/client-with-config.js
2.效果

client-with-config.js运行效果图

如上示例代码逻辑可总结为以下4步:

1. 🔗连接服务;

2. 🔧调用工具;

3. 🎯 整合结果;

4. 🔌断开连接。

更多细节处理请细阅代码。

7. MCP客户端不一定要使用官方的SDK。

MCP官方提供的SDK是一个实现MCP协议的工具库,不是非得用它不可。

只要你的客户端程序遵循MCP协议的规范你就可以和同样遵循MCP协议的服务器互动起来。

项目里提供了一个纯手搓版的(无官方SDK)MCP客户端示例client-no-sdk.js,以便读者更好的理解MCP客户端的运行原理。

1. 运行
# 运行无官方SDK实现的MCP客户端示例
node client/client-no-sdk.js 

无官方SDK实现的MCP客户端示例运行效果图

更多细节处理请细阅代码。

结语

MCP的核心是标准与规范,让大模型通过这个标准的协议可以快速与各种本地或远程网络工具交互起来,实现“万物”智能互动。

关于MCP客户端的内容就先写这些了,希望大家可以更好的理解MCP协议,并动手搞个自己的MCP客户端(* ̄︶ ̄)!

Note:
这篇已经是MCP实操系列的第二篇了,已经把MCP架构中的serverclient完成了,还差host。在考虑要不要再出一篇关于host的,其实server和client篇已经涵盖了MCP协议所有内容,host只是一个把这两者协同用起来的载体(如IDE、Cherry Studio及Claude Desktop等大模型交互工具 )。嗯,后面有时间再说吧。

欢迎关注“大虫小呓”(全网同名),获得更多技术分享内容!

如对文中内容有疑问,欢迎留言。如对您有帮助,可一键三连+投币。感谢大家的支持Thanks♪(・ω・)ノ!

### 现有的AI模型或MCP工具用于Excel数据分析 在当前技术环境中,有多种现有的AI模型和MCP工具可以满足Excel表格的数据分析需求。以下是几种推荐的解决方案: #### 1. 使用 Pandas-ai 和 MCP 工具进行 Excel 数据分析 Pandas-ai 是一个基于 Python 的开源库,能够结合 AI 模型对数据进行自动化分析。通过集成 MCP(Model Context Protocol),用户可以将 Excel 数据导入并利用 AI 模型生成洞察[^2]。例如,使用 FastAPI 构建的服务可以与 Pandas-ai 结合,从而实现动态的 Excel 数据分析功能。 ```python from pandasai import PandasAI from pandasai.llm.openai import OpenAI import pandas as pd # 加载 Excel 数据 df = pd.read_excel("data.xlsx") # 初始化大语言模型 llm = OpenAI(api_token="YOUR_API_TOKEN") pandas_ai = PandasAI(llm) # 执行数据分析任务 response = pandas_ai.run(df, prompt="分析销售额的趋势") print(response) ``` #### 2. 利用 Cherry 和 MCP 实现 Excel 数据可视化 Cherry 是一种替代 Manus 的工具,支持通过 MCP 协议调度多个 AI 模型,以处理复杂的数据分析任务。它能够在本地生成可视化的报告文件,特别适合需要对 Excel 数据进行深度分析的场景[^3]。以下是一个简单示例代码,展示如何使用 Cherry 处理 Excel 文件: ```python from cherry import Cherry import pandas as pd # 初始化 Cherry 客户端 cherry = Cherry() # 加载 Excel 数据 data = pd.read_excel("example.xlsx") # 调度 AI 模型进行分析 result = cherry.call_function( model="gemini-2.5-pro", function="analyze_data", data=data, question="生成销售数据的柱状图" ) # 输出结果 print(result) ``` #### 3. Azure Machine Learning for Excel Azure Machine Learning 提供了与 Excel 的无缝集成,使用户能够在不编写代码的情况下应用复杂的机器学习算法。这种集成允许直接从 Excel 界面训练模型并生成预测结果[^3]。用户可以通过安装相应的插件来启用此功能。 #### 4. Power Query 和 Power BI 的组合 Power Query 是 Excel 内置的一个强大工具,可用于数据清洗和转换。结合 Power BI,用户可以将清洗后的数据用于更深入的可视化分析和预测建模。这种方法不需要依赖外部 AI 模型,但仍然能够提供高质量的数据分析能力[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值