MCP 协议实战:让大模型像人一样调用各种工具

发布时间:2026/9/30 12:43:10

MCP 协议实战:让大模型像人一样调用各种工具 MCPModel Context Protocol最近很火很多人听说过但不知道怎么用。这篇文章从零开始讲清楚 MCP 是什么、解决了什么问题、怎么实现。引言你有没有遇到过这种情况想让 AI 帮你查一下公司数据库里的数据或者操作一下某个文件却发现它根本做不到大模型本身很聪明能写文章、写代码、聊天但它就像一个没有手脚的大脑无法直接接触外部世界。MCPModel Context Protocol模型上下文协议就是来解决这个问题的。你可以把它理解成 AI 世界的USB 接口——以前每个设备都有自己的充电线现在统一用 Type-CMCP 就是给大模型调用外部工具定了一个统一标准。有了它你写一个工具就能在任何支持 MCP 的 AI 应用里即插即用不用再为每个应用单独写对接代码。本文阅读目标从零开始用最通俗的语言讲清楚 MCP 是什么、解决了什么问题、和 Function Calling 有什么区别并手把手带你写一个最简单的 MCP Server。适用人群对 AI 应用开发感兴趣、想了解 MCP 但不知从何下手的开发者以及想给大模型接入自定义工具的 AI 爱好者。下面是本文的整体结构导览MCP 是什么为什么需要 MCPMCP 核心概念MCP 工作流程与 Function Calling 对比实战写一个 MCP Server在 Host 中使用优势与注意点总结TL;DR太长不看版MCP 是什么一个开放协议统一了大模型调用外部工具的标准就像 AI 世界的USB 接口。解决什么问题告别每个工具单独对接、工具多了难管理、换模型要重写三大痛点。和 Function Calling 的区别Function Calling 是每个应用自己搞一套MCP 是大家统一用一个标准。怎么用写一个 MCP Server比如查时间的工具在 Host如 Claude Desktop里配置一下就能用。核心优势即插即用、标准化、安全可控本地运行数据不外传。一、为什么需要 MCP先想一个问题大模型现在能做什么写文章写代码分析数据聊天但它不能做什么不能查你公司的数据库不能调用你的内部 API不能操作你的文件系统为了解决这个问题以前的做法是 Function Calling你定义一堆工具大模型决定调用哪个你执行完把结果喂回去听起来不错对吧但问题来了问题 1每个工具都要单独对接你要接数据库、接 API、接文件系统、接搜索引擎… 每个都要写一套对接代码。问题 2工具多了管理不过来接了 10 个工具大模型有时候选错工具参数也传不对。问题 3换个大模型又要重新对接换个模型Function Calling 的格式不一样又得改一遍代码。MCP 就是为了解决这些问题而生的。下面用一张图总结 MCP 要解决的三大痛点痛点 3换模型重写模型 A 格式模型 B 格式又要改代码痛点 2管理困难工具多选错工具参数传错痛点 1对接繁琐数据库对接API 对接文件系统对接MCP 统一解决二、MCP 是什么MCPModel Context Protocol是 Anthropic 提出来的一个开放协议。简单理解MCP 就是 AI 世界的 “USB 接口”。以前每个设备都有自己的接口现在统一用 USB。MCP 就是给大模型调用工具定了一个统一标准。MCP 的核心概念Host宿主就是你的 AI 应用比如 Claude Desktop、Cursor 这些。Client客户端Host 里面负责和 MCP Server 通信的部分。Server服务端具体提供工具的服务比如文件系统 Server数据库 ServerGitHub ServerSlack ServerMCP 的工作流程用户提问 #x20; ↓ HostAI应用 #x20; ↓ ClientMCP客户端→ 询问各个Server你们有什么工具 #x20; ↓ Server返回工具列表 #x20; ↓ 大模型决定调用哪个工具 #x20; ↓ Client把请求发给对应的Server #x20; ↓ Server执行完返回结果 #x20; ↓ 大模型基于结果生成回答下面用 Mermaid 时序图更直观地展示 MCP 的完整工作流程MCP ServerClientMCP 客户端HostAI 应用用户MCP ServerClientMCP 客户端HostAI 应用用户提问转发请求询问你们有什么工具返回工具列表上报可用工具大模型决定调用哪个工具发送调用请求调用对应工具返回执行结果返回结果生成回答三、MCP 和 Function Calling 的区别对比维度Function CallingMCP对接方式每个工具单独写代码统一协议即插即用工具管理自己维护工具列表Server 自己描述自己的工具复用性低换个应用就要重写高一个 Server 到处用生态没有统一标准开放协议社区共建打个比方Function Calling 每个家电都有自己的电源线和插头MCP 全部统一用 Type-C 接口下面用一张对比图展示两者的核心差异MCP 模式MCP Server应用 A应用 B应用 CFunction Calling应用 A 对接工具应用 B 对接工具应用 C 对接工具四、写一个最简单的 MCP Server光说不练假把式我们来写一个最简单的 MCP Server一个能查时间的工具。第一步安装依赖pip install mcp第二步写 Server 代码frommcp.serverimportServerfrommcp.typesimportTool,TextContentimportdatetime# 创建 ServerserverServer(time-server)# 注册工具server.list_tools()asyncdeflist_tools():return[Tool(nameget_current_time,description获取当前时间,inputSchema{type:object,properties:{timezone:{type:string,description:时区比如 Asia/Shanghai}}})]# 处理工具调用server.call_tool()asyncdefcall_tool(name:str,arguments:dict):ifnameget_current_time:nowdatetime.datetime.now()return[TextContent(typetext,textf当前时间是{now.strftime(%Y-%m-%d %H:%M:%S)})]# 启动 Serverif__name____main__:importasynciofrommcp.server.stdioimportstdio_server asyncio.run(stdio_server(server))就这么简单一个 MCP Server 就写好了。下面是 MCP Server 的代码结构示意图MCP Serverlist_tools()call_tool()返回工具列表get_current_time返回当前时间stdio_server 启动五、怎么在 Host 里用以 Claude Desktop 为例配置一下{mcpServers:{time-server:{command:python,args:[/path/to/your/time_server.py]}}}重启 Claude Desktop你就可以直接问“现在几点了”它会自动调用你写的 time-server 工具。六、MCP 的优势到底在哪1. 即插即用别人写好的 MCP Server你拿来就能用不用自己写对接代码。现在社区已经有很多现成的 Server 了文件系统数据库GitHubGoogle DriveSlack各种 API2. 标准化大家都按同一个标准来你的 Server 可以在任何支持 MCP 的 Host 上用。3. 安全性MCP Server 是本地运行的数据不用传到第三方安全可控。七、实际开发中的注意点1. 工具描述要写清楚大模型靠你的 description 来判断什么时候用这个工具。描述写不清楚它就乱调用。2. 参数校验要做好大模型传的参数可能不对一定要做好校验和错误提示。3. 错误处理要友好工具调用失败了错误信息要写清楚大模型才能知道为什么失败、下次怎么调整。八、总结MCP 这个协议的本质就是把 “大模型怎么调用工具” 这件事标准化。以前每个应用自己搞现在大家统一用一个标准。这就像当年的 HTTP 一样一开始大家都自己搞协议后来统一用 HTTP整个互联网就爆发了。MCP 会不会成为 AI 时代的 HTTP不好说但方向是对的。
延伸阅读

更多相关文章

2026/9/30 12:43:10

YOLOv8落地全链路实战:从环境踩坑到边缘部署

1. 这不是“又一个YOLO教程”,而是你第一次真正搞懂目标检测落地的起点 你搜过“YOLOv8训练自己的数据集”,点开前十个视频,八成开头是“兄弟们,今天教大家用YOLOv8训练自己的模型!”——然后就是飞快敲命令、复制粘贴…

2026/9/30 12:38:09

GTK界面开发实战:从控件树到系统监控工具的设计全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 13:33:22

文档-影像Transformer:车险定损多模态证据链实战

简介:这份PDF文档聚焦车险定损场景,面向保险科技研究者、理赔系统开发者与多模态学习实践者,系统讲解如何用文档-影像Transformer构建多模态证据链以优化理赔流程。全文共28页,以单个PDF文件交付,压缩包约1.95MB&#…

2026/9/30 13:33:22

WorkBuddy+deepseek-v4-flash:微信AI日报自动化实战

1. 从一条定时消息说起:这个项目到底在解决什么问题每天早上到工位,第一件事是打开各种信息源,刷一遍行业动态、看看昨天夜里有没有什么新工具发布、有没有值得关注的模型更新。这件事听起来不费劲,但真正做过的人都知道&#xff…

2026/9/30 13:33:22

Word空白页删不掉?段落标记、分页符、分节符三大元凶解析

1. 为什么Word里那个“空白页”像幽灵一样删不掉?你有没有试过:文档明明写到最后一页,可打印预览时总多出一页纯白?按Delete键没反应,Backspace键也像打在棉花上,光标死死卡在倒数第二页末尾,怎…

2026/9/30 13:33:22

Buzz技术概念解析:从基础原理到工程实践

我无法根据当前输入生成符合要求的博文。 原因如下: 项目标题仅为单个英文单词 "buzz" ,无明确语义指向(可能是名词“嗡鸣声/热议”,动词“嗡嗡作响”,品牌名、产品代号、代码变量、社交行为缩写等&…

2026/9/30 13:28:21

LLM 应用开发必修课:彻底搞懂 Positional Encoding / Position Embedding

为什么 Transformer 明明能“看见”整个上下文,却不知道谁在前、谁在后? 从 Sinusoidal Position Encoding,到 Learned Position Embedding,再到如今 LLaMA、Qwen 等模型广泛采用的 RoPE,位置编码经历了一次非常有代表性的演进。 对 LLM 应用开发者来说,理解位置编码并不…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑