ARTICLE DETAIL

建站实战干货

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

MCP 完全拆解:AI Agent 的 USB 接口,一次封装处处使用

2026/10/2 13:56:08 拓冰建站 浏览量
MCP 完全拆解:AI Agent 的 USB 接口,一次封装处处使用 为什么你的 AI 换个模型就不能调用工具了Claude 能用的插件ChatGPT 为什么不能直接用不是你的代码写得差是缺了一套统一的翻译协议。MCP 就是那个把所有工具接口标准化的东西。一、什么是 MCP不同的 AIClaude、ChatGPT、文心一言是由不同公司开发的它们的输入格式、接口规范各不相同。你想让 AI 帮你查天气给 Claude 发请求是一种 JSON 结构给 ChatGPT 发请求又是另一种结构。也就是说你需要为每个 AI 单独写一套调用天气功能的代码。而 MCP就是那个统一的规定——秦始皇书同文、车同轨的感觉。MCPModel Context Protocol是一个用于标准化大模型调用外部工具的开放协议。它主要解决 AI Agent 在调用 API 或工具时接口不统一的问题通过定义统一的 Tool、Resource 和 Prompt 结构让不同系统可以共享工具能力。一句话MCP 是 AI 界的 USB 接口——不管你是键盘、鼠标还是 U 盘插到 USB 口上就能用。二、MCP 解决了什么问题MCP 主要解决了两个痛点。第一接口不统一带来的重复开发。不同厂商的大模型调用外部工具的输入格式各不相同。开发者每接入一个新工具都要为每个模型单独写一套适配代码。今天接入 Claude明天接入 GPT后天接入文心一言你就要写三遍。MCP 统一了工具调用的接口规范开发者按标准格式写一次所有支持 MCP 的模型都能直接使用。第二工具能力无法跨模型共享。没有 MCP 时一个模型能用的工具另一个模型无法直接复用需要重新实现。你花了两周写了一个 GitHub 工具只能给 Claude 用那太亏了。MCP 把工具封装成独立服务器任何 MCP 客户端都可以自动发现并调用实现了工具的一次封装处处使用。三、MCP 架构与三大原语MCP 的架构非常简单Host宿主应用比如 Claude Desktop↔ Client客户端↔ Server服务端就是你的工具。核心是三大原语——Tools、Resources、Prompts它们构成了 MCP 的全部能力Tools是最常用的就是你让 AI 执行的动作查天气、发邮件、查数据库。Resources是 AI 可以读取的数据文件内容、数据库记录、文档片段。Prompts是预定义的提示模板比如总结这篇文章、“翻译这段文字”用户一键就能用。四、面试追问MCP 和 A2A 协议有什么关系很多人会把 MCP 和 Google 的 A2A 协议搞混。其实它们解决的是完全不同层面的问题。MCP 是 Agent ↔ Tool 的连接协议——让 Agent 能使用各种工具和数据源。A2AAgent-to-Agent是 Agent ↔ Agent 的通信协议——让不同 Agent 之间能互相发现、协商和协作。打个比方MCP 像 USB 接口设备连电脑A2A 像 HTTP 协议电脑之间通信。两者是互补关系一个 Multi-Agent 系统中每个 Agent 通过 MCP 连接自己的工具Agent 之间通过 A2A 协议通信。未来可能会出现同时实现两种协议的统一框架。五、实现一个 MCP Server说再多不如跑一遍。下面是一个最简的天气查询 MCP Server用 Python 写的frommcp.serverimportServerfrommcp.typesimportTool,TextContent serverServer(weather-server)server.list_tools()asyncdeflist_tools():return[Tool(nameget_weather,description获取指定城市的天气信息,inputSchema{type:object,properties:{city:{type:string,description:城市名称}},required:[city]})]server.call_tool()asyncdefcall_tool(name:str,arguments:dict):ifnameget_weather:cityarguments[city]weatherawaitfetch_weather(city)return[TextContent(typetext,textf{city}天气:{weather[temp]}°C,{weather[desc]})]asyncdefmain():frommcp.server.stdioimportstdio_serverasyncwithstdio_server()as(read,write):awaitserver.run(read,write,server.create_initialization_options())核心就两步list_tools()告诉客户端我有什么工具call_tool()真正执行工具逻辑。六、如何调试 MCP ServerMCP 官方提供了MCP Inspector——一个可视化的调试工具可以直接连接 Server 查看工具列表、手动调用工具、检查请求/响应。具体调试方法有五种1. Inspector 工具npx modelcontextprotocol/inspector启动 Web 界面连接你的 Server 做交互式测试2. 单元测试把 MCP Server 的 handler 函数单独提取出来做单元测试不需要启动完整 Server3. 集成测试用 MCP Client SDK 写自动化测试脚本list_tools → call_tool → 验证结果4. 日志打桩在 Server 的关键路径加 logging记录 list_tools()、call_tool() 的入参和返回值5. Mock 外部依赖Server 调用的外部 API 用 mock 替代确保测试稳定。七、MCP Client 怎么用Server 写好了客户端怎么调用也很简单frommcpimportClientSession,StdioServerParametersfrommcp.client.stdioimportstdio_client server_paramsStdioServerParameters(commandpython,args[weather_server.py])asyncwithstdio_client(server_params)as(read,write):asyncwithClientSession(read,write)assession:awaitsession.initialize()toolsawaitsession.list_tools()print(tools)resultawaitsession.call_tool(get_weather,{city:北京})print(result)三步连接 Server → 列出可用工具 → 调用工具。就这么简单。八、MCP 传输方式MCP 支持三种传输方式适用于不同场景本地开发用 stdio 就够了部署到生产环境用 SSE 或 Streamable HTTP九、MCP 安全模型MCP 当前的安全模型相对简单主要靠 Host 层面控制1. Server 白名单Host如 Claude Desktop只连接用户配置的 Server不会自动发现和连接未知 Server2. 用户授权高风险工具调用前需要用户手动确认Human-in-the-loop3. 传输安全stdio 只在本地进程间通信天然安全SSE/HTTP 需要加 TLS 认证 Token4. Server 隔离每个 Server 独立进程运行一个 Server 的漏洞不影响其他 Server。不足之处MCP 协议本身没有细粒度权限控制如这个 Server 只允许读不允许写需要在 Server 实现层自己做。未来预计会加入 OAuth 2.0 认证和更细粒度的权限声明。十、MCP 生态官方和社区MCP 的生态已经起来了官方提供了一批开箱即用的 Server• 文件系统 (filesystem)• GitHub• PostgreSQL / SQLite• Google Drive• Slack• Brave Search• Puppeteer浏览器自动化社区也在快速跟进各种 SaaS 工具、内部工具集成都在陆续推出 MCP Server。十一、MCP vs Function Calling vs Plugin最后做个对比一眼看懂 MCP 的定位Function Calling 是模型能力MCP 是协议标准。Function Calling 是 GPT-4 能调用函数这个能力MCP 是让所有模型都能调用同一套工具的协议。一个是能做一个是怎么做。面试快问快答Q1MCP 协议是什么和 Function Calling 区别MCP 是 Anthropic 提出的开放协议标准化大模型调用外部工具的接口。Function Calling 是大模型本身具备的函数调用能力是厂商私有的。MCP 是协议层Function Calling 是能力层。MCP 让工具跨模型可移植Function Calling 让模型能调用工具。Q2有没有实际跑过 MCP跑过。写过一个天气查询的 MCP Server用 stdio 传输在 Claude Desktop 里配置后能直接调用。调试用的是 MCP Inspector能看到工具列表和请求响应。生产环境建议用 SSE TLS 认证。Q3什么是 A2A 协议它和 MCP 协议的区别是什么A2A 是 Google 提出的 Agent-to-Agent 通信协议解决不同 Agent 之间互相发现、协商、协作的问题。MCP 解决的是 Agent ↔ Tool 的连接问题。类比MCP 是 USB设备连电脑A2A 是 HTTP电脑之间通信。两者互补不冲突。规划算法决定了 Agent 能跑多快工具调用决定了 Agent 能做多少事。而 MCP 解决的是你的工具不用为每个模型重写一遍。这就是为什么 Anthropic 推 MCP 推得这么狠——它要做 AI 工具生态的USB 标准。谁掌握了标准谁就掌握了生态的入口。面试被问到 MCP别只背Model Context Protocol这几个字。能讲清楚 Host-Server 架构、三大原语、stdio/SSE 传输、以及和 Function Calling/A2A 的区别才是真的理解了。寻码札记 · 专注 AI Agent 工程实践