跳到正文

MCP 入门:把工具标准化暴露给 Agent

一句话讲清 MCP 解决什么,再亲手暴露一个工具

一句话:第 3 篇的 Function Calling 解决了"模型怎么调工具",但每接一个工具都要自己写胶水代码。MCP 把这件事标准化了——一次封装,任何支持 MCP 的 Agent 都能用。 MCP 解决什么(一句话讲清) MCP(Model Context Protocol,模型上下文协议)是一个开放标准,规定了"AI 应用"和"外部能力(工具 / 数据 / 提示)"之间怎么对话。 类比一下:MCP 之于 AI 工具,就像 USB-C 之于设备。以前每个工具配一根专用线(每个 Agent 自己写一套对接);有了 MCP 这个统一接口,你把工具做成一个 MCP Server,Claude Code、Cursor 等任何 MCP Client 插上就能用,不用为每个客户端重写。 MCP Server 能暴露三类东西: Tools(工具):能执行的动作(查数据库、发请求、跑脚本)——最常用。 Resources(资源):能读取的数据(文件、记录)。 Prompts(提示模板):可复用的提示词模板。 亲手暴露一个工具 用官方 Python SDK,几行就能起一个 MCP Server,暴露一个"查天气"工具: 关键点: @mcp.tool() 自动把函数签名 + docstring 转成模型能懂的工具 schema(还记得第 3 篇手写的那一大段 JSON 吗?这里自动生成了)。 跑起来后,它通过 stdio / SSE 等传输方式等待 MCP Client 连接。 在 Claude Code / Cursor 的配置里把这个 server 加上,它的工具就出现在 AI 的"工具箱"里了。 它和 Function Calling 什么关系 Function Calling 是"模型↔工具"在单个应用内的调用机制(第 3 篇)。 MCP 是"工具↔任意客户端"的跨应用标准:你封装一次,到处能用。 底层模型决定调哪个工具,还是 Function Calling 那套;MCP 解决的是"工具怎么被发现、被复用、被标准化接入"。 常见坑 工具 docstring 写得烂:和第 3 篇一样,描述含糊,模型就不知道何时调。 不做权限 / 校验:MCP 工具能被任意客户端调,危险操作(写数据、删文件)必须加确认和权限。 stdio 里乱 print:stdio 传输下,往标准输出打日志会污染协议消息——日志走 stderr。 以为 MCP 会让模型更聪明:不会。它只是"接线标准",决策能力还在模型本身。 关联面试题 「MCP 是什么?和 Function Calling 有什么区别和联系?」 「怎么给 Agent 安全地接入外部工具?」 👉 去 题库 搜 MCP / 工具调用 / Agent 工程。 训练营延伸 工业级的工具接入,要的是统一工具网关 + 多级沙箱(子进程 / 容器 / microVM)+ 容错与权限分级——是训练营的集群 Agent 那条线在做的事,把"接一个工具"升级成"安全地接一整套工具体系"。