ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/30 12:43:28 拓冰建站 浏览量
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不好说但方向是对的。