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

Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法 Docker推出MCP Catalog和Toolkit测试版,旨在简化AI代理开发中模型上下文协议(MCP)工具的使用。该解决方案解决了MCP工具面临的三大挑战:发现难、安装复杂和安全隐患。MCP Catalog提供100多个精选容器化MCP服务器,而Toolkit则简化了安装、凭证管理和访问控制。通过与Stripe、Elastic等知名企业合作,Docker为开发者提供了安全、可扩展的MCP生态系统,支持与主流MCP客户端一键连接。未来还将扩展企业级功能,使团队能在Docker Hub上构建和共享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.js 和client-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架构中的server和client完成了,还差host。在考虑要不要再出一篇关于host的,其实server和client篇已经涵盖了MCP协议所有内容,host只是一个把这两者协同用起来的载体(如IDE、Cherry Studio及Claude Desktop等大模型交互工具 )。嗯,后面有时间再说吧。

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

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

MCP保姆级详解和实战案例(附完整代码) Function Call是大模型基于意图识别触发预设函数的机制,其本质是模型与外部工具的“点对点”交互。平台依赖性强:对于不同大模型(如GPT、Claude),Function Call的实现差异显著,开发者需要为每个大模型编写适配的相关代码。扩展性不足:新增工具需调整模型接口或重新训练,难以支持复杂多轮任务。从模型调用工具的流程来看,MCP 跟 Function Call 是调用链上的两个环节。 阅读详情

相关推荐

开源模型应用落地-LangChain与MCP协议-重塑AI工具调用的未来格局(二)

集成LangChain将MCP工具无缝融入Agent工作流。

以微薄之力,予他人些许温暖. 2万+

MCP如何用?看这篇就够了!!三种使用方式

三种方式使用MCP Server

a1105425455的博客 6334

华为防火墙NAT避坑指南:当双ISP出口遇到服务器发布,这些细节不注意会翻车

本文深入解析华为防火墙在双ISP出口环境下服务器发布的实战配置,重点探讨no-reverse参数对Server-Map表的影响、源进源出功能的实现及线路切换时的会话保持问题。通过策略路由和智能选路技术,确保HTTP/FTP服务在多运营商链路中的高可用性,避免路径不对称和NAT映射冲突等常见陷阱。

weixin_30897233的博客 548

一个简单的mcp 应用例子

本文介绍了三部分内容:1)使用vLLM框架本地部署Qwen3-14B-AWQ模型的启动命令,包括端口设置、自动工具选择等功能;2)一个基于FFmpeg的视频处理工具MCP的Python实现,包含获取视频信息、视频剪切和文件列表功能;3)一个基于OpenAI的智能代理调用类,集成了视频处理工具,并配置了调试日志和系统提示词。这些内容展示了从本地大模型部署到具体应用开发的技术实现路径。

盖丽男 329

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 538

小目标检测难题终结:YOLOv11 + 注意力机制,精度直接拉满

如果你在实操中遇到精度提升不明显或速度下降过多的问题,不妨尝试调整注意力模块的类型(如替换为CA)或插入层级,或针对性优化小目标的数据集增强策略。记住,小目标检测的核心是“特征强化与空间定位”,只要结合业务场景灵活调整注意力模块的组合,你也能让YOLOv11在小目标识别任务中脱颖而出。接下来,我们从模块选型到代码落地,一步步带你打造“小目标检测专精版”YOLOv11,真正帮你解决工业场景中(如安防、质检)的小目标识别痛点。在城市安防场景中,改进后的YOLOv11对远处行人、车辆(小目标)的识别准确率提升。

m0_64661770的博客 199

从0到1掌握MCP:让大模型自主调用外部服务,附完整示例代码

本文详细介绍如何利用MCP协议让大模型调用外部服务,特别是MySQL数据库。通过完整示例展示了环境准备、MCP服务配置和大模型调用流程。大模型可根据用户输入自主判断是否调用MySQL服务并执行相应SQL操作,实现了从"回答问题"到"完成任务"的能力跃升。这种架构让大模型不仅能提供信息,还能实际执行操作,极大扩展了应用场景。

lvaolan的博客 1288

简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)

改变 K 点、NBANDS、晶胞、ENCUT、POTCAR、自旋或 SOC 后要检查兼容性。该参数不参与物理计算,因此不会改变总能量、受力、应力或最终结构。如果研究的是金属、磁性材料、表面、二维材料、分子、缺陷、DFT+U、杂化泛函或强自旋轨道耦合体系,部分参数必须调整。适合已经用 IBRION = 2 预优化、力较小、自由度较多的结构。在 IBRION = 1、2、3 中,它只是内部缩放因子。“不能修改”不是程序禁止修改,而是修改后会改变理论模型、数值精度或能量参考,使结果不能直接比较。

weixin_51420530的博客 122

MCP技术的实用指南,采用分步骤讲解方式,结合技术原理与代码示例

MCP(模型上下文协议)通过标准化的客户端-服务器架构实现任务分配,其核心是建立AI模型与外部工具的"双向对话"。MCP的任务分配过程包括任务解析、工具发现和工具选择,通过自然语言处理和语义相似度算法实现任务与工具的匹配。MCP还提供了安全机制,如权限沙箱隔离、审计日志追踪和异常熔断保护,确保任务执行的安全性。MCP的设计思想包括标准化接口、动态适配能力和安全边界控制,将AI从"知识库"转化为"生产力工具"。文章还提供了技术传播的建议,如痛点前置、

分享平时的学习心得和笔记 1033

多物理场光学仿真软件:COMSOL_(10).激光器与谐振腔仿真

定义Nd:YAG晶体的材料属性% 折射率% 吸收系数% 发射截面% 定义光泵浦源% 泵浦光波长% 泵浦光强度% 泵浦光方向% 定义全反射镜% 选择边界% 完美电导体边界条件% 定义部分反射镜% 选择边界% 反射率边界条件% 反射率通过 COMSOL 对激光器和光学谐振腔进行仿真,可以全面评估激光器的性能,包括输出功率、效率、稳定性和模式选择等。这些仿真结果为激光器的设计和优化提供了重要的参考依据。

kkchenjj的博客 1647

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1273

一文带大家了解关于MCP 的完整 Hello World 示例

本文是一个基于 Model Context Protocol (MCP) 的完整 Hello World 示例,包含服务端和客户端代码,展示最基本的工具注册与调用流程

liwenxiang629的博客 3758

【红外DDE算法】一种应用于高动态范围红外可视化的算法

【红外DDE算法】一种应用于高动态范围红外可视化的算法 - 这个算法背后的动机 - 展示这个算法的流程 - 然后讨论各个可调参数的意义。

sunwindl91181的博客 1680

MCP客户端与服务端初使用——让deepseek调用查询天气的mcp来查询天气

MCP,即Model Context Protocol(模型上下文协议),是由Claude的母公司Anthropic在2024年底推出的一项创新技术协议。在它刚问世时,并未引起太多关注,反响较为平淡。然而,随着今年智能体Agent领域的迅猛发展,MCP逐渐进入大众视野并受到广泛关注。今年2月,Cursor宣布正式支持MCP功能,这无疑为MCP的推广按下了加速键,使其迅速走进了众多开发人员的视野。从本质上讲,MCP是一种在智能体Agent开发过程中被广泛认可并遵循的规范。

hooksten的博客 6182

【一看就会】Autoware.universe的“规划”部分源码梳理【0】——Planning综述(持续更新中)

单独开一篇planning综述,作为整个规划系列的开篇。本篇综述会持续更新,希望能帮助大家更好的整体理解规划部分。这个部分会持续更新。

weixin_48386130的博客 1963

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MCP客户端与服务端初体验——让deepseek调用MCP工具查询天气情况

本系列主要通过调用天气的mcp server查询天气这个例子来学习什么是mcp,以及怎么设计mcp。话不多说,我们开始吧。

大模型训练 1213

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MCP 客户端与服务端入门:集成 DeepSeek 调用天气查询 MCP

MCP,即Model Context Protocol(模型上下文协议),是由Claude的母公司Anthropic在2024年底推出的一项创新技术协议。在它刚问世时,并未引起太多关注,反响较为平淡。然而,随着今年智能体Agent领域的迅猛发展,MCP逐渐进入大众视野并受到广泛关注。今年2月,Cursor宣布正式支持MCP功能,这无疑为MCP的推广按下了加速键,使其迅速走进了众多开发人员的视野。从本质上讲,MCP是一种在智能体Agent开发过程中被广泛认可并遵循的规范。

HUANGXIN9898的博客 1207

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

告别“傻瓜”AI!Cherry Studio + MCP实战:让你的大模型拥有超能力

想象一下,如果把大模型比作一个需要“供电”才能工作的超级电器,那么MCP就像是一个万能插座协议。它定义了一套标准接口,让大模型这个“电器”可以方便地连接并使用各种各样的“外部设备”——也就是我们常说的第三方工具或API服务。简单来说,MCP就是一座连接大模型与外部API/工具的桥梁。大模型不再局限于它预训练时学到的那些“静态”知识。它可以实时调用外部工具来获取最新信息(比如用fetch工具抓取网页)。它可以操作你本地的资源(比如用filesystem工具管理你的文件)。

m0_66917422的博客 5002

大模型生态扩展:MCP协议与Python SDK实战开发指南!

文章详细介绍了Model Context Protocol (MCP)及其Python SDK,这是一个专为大型语言模型设计的开放协议,解决AI模型与外部工具交互的挑战。文章讲解了MCP的核心功能(工具、资源、提示词)、Streamable HTTP传输机制优势,以及如何使用Python构建MCP服务器和客户端。通过智能电灯控制服务实战示例,展示了MCP协议在实际应用中的具体实现方法,为开发者提供了构建大模型应用的实用指南。

m0_65555479的博客 1328

MCP:AI时代的“万能插座”,开启大模型无限可能

MCP 作为 AI 领域的一项重要创新,为大模型与外部工具、数据源的交互提供了标准化的解决方案。它的出现,不仅解决了传统技术中存在的标准不统一、兼容性差等问题,还为 AI 的发展开辟了新的道路。随着 MCP 生态的不断完善和发展,相信它将在更多的领域得到广泛应用,推动 AI 技术的进一步发展。更丰富的应用场景:随着 MCP 技术的不断成熟和完善,它将在更多的领域得到应用,如医疗、教育、金融等,为这些领域的发展带来新的机遇。

小相探索IT世界 2704

AI 大模型的标准化工具箱MCP (Model Context Protocol)

MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。

不积跬步,无以至千里;不积小流,无以成江海。 1379

构建更强大的 AI 工具链:七大 MCP 客户端盘点!

未来的 AI 不只是一个回答问题的“聊天机器人”,而是能主动使用工具完成任务的“数字代理”。MCP 就是让这种能力普及的关键桥梁。无论你是 AI 从业者、开发者,还是有志打造个人助手的爱好者,都值得从这七大 MCP 客户端中选一个,开启你的 AI 工具之旅。

蜗牛沐雨 1910

大模型开发 - 基于Spring AI 借助MCP Client 通过STDIO和SSE协议调用MCP Server (上)

MCP-Client是基于Spring AI框架的模型上下文协议客户端,采用分层架构设计,包含Web控制层、服务层、集成层和工具层。核心功能包括统一工具调用和上下文管理,技术栈基于Spring Boot 3.x和Spring AI。项目采用多模块结构,父工程管理依赖版本,子模块如mcp-client集成Spring Web和OpenAI模型支持。通过Mermaid图表展示了架构设计,并提供了Maven POM配置示例,适用于构建标准化AI应用开发框架。

小工匠 1843

MCP 揭秘:当 13000 + 工具组件遇上统一协议,Agent 开发进入标准化时代

MCP 揭秘:当 13000 + 工具组件遇上统一协议,Agent 开发进入标准化时代

caoyuan666的博客 1373

TypeScript MCP客户端工具库:快速构建AI应用外部工具集成

在AI应用开发中,大语言模型(LLM)与外部工具和数据的集成是一个核心挑战。Model Context Protocol(MCP)作为一种标准化协议,旨在规范模型与外部工具(如搜索引擎、数据库、文件系统)之间的安全、规范交互。其原理是通过定义一套通用的请求与响应格式,实现模型对工具的发现、描述与调用,从而解决传统硬编码适配方式带来的维护与扩展难题。这一协议的技术价值在于实现了模型与工具交互的标准化与解耦,为构建可扩展、易维护的AI应用提供了基础。其应用场景广泛,包括为聊天机器人集成实时天气查询、自动化脚本读

weixin_33694620的博客 336
上一篇: MCP实操系列 | 20行JS代码秒速上手MCP服务开发(附源码)
下一篇: 【速选指南】Python处理Excel数据 pandas和openpyxl哪家强?
大虫小呓
博客等级 码龄7年 94粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值