### [MCP (Model Context Protocol) 实测:Anthropic 新协议解决了什么?](https://blog.20115.net/article/267) **Published:** 2026-07-21T16:45:30 **Author:** 众归云 **Excerpt:** MCP 不是银弹,但解决了 Function Calling 的核心痛点:集成成本太高。本文给出中文实测记录、代码对比、踩坑点和落地建议。 ## 一、先给结论 MCP(Model Context Protocol)不是银弹,但它确实解决了 Function Calling 的一个核心痛点:**模型侧能力与外部工具之间的集成成本太高。** 如果你正在做 AI agent 开发,尤其是需要让 LLM 稳定调用多个外部数据源/API,MCP 值得纳入技术选型。但如果你只是偶尔做一个 chatbot,Function Calling 完全够用,没必要多一层抽象。 ## 二、Function Calling 的痛点,你肯定遇到过 2024 年以来,主流模型(GPT-4o、Claude 3.5、DeepSeek V3)都支持 Function Calling,开发流程基本是这样: 1. 你在代码里定义一个函数列表(JSON Schema) 2. 模型返回要调哪个函数、传什么参数 3. 你写胶水代码调用 API 4. 把结果喂回模型,它继续生成回答 **问题在于:** - **胶水代码太多**。每加一个工具(比如查数据库、读文件、调内部 CRM),都要写一遍 schema + 调用逻辑 + 错误处理。 - **上下文爆炸**。工具多的时候,system prompt 和 tool schema 很容易塞满上下文窗口,模型开始”忽略”某些工具。 - **方言不统一**。OpenAI 的 Function Calling、Anthropic 的 Tool Use、Google 的 Function Declarations,格式各有差异,换模型就要改代码。 - **状态管理难**。Function Calling 是**无状态的**——模型不知道你上次调了什么,除非你把历史全塞回 prompt。 简单说:Function Calling 解决的是”模型怎么调用一个函数”,没解决”一套规范怎么集成一堆工具”。 ## 三、MCP 是什么 MCP 是 Anthropic 在 2024 年底推出的一套**开放协议**,设计目标是把”模型 ↔ 工具”的交互标准化。 ### 核心架构 ``` [Client] [Host] [Server] (你的应用) (LLM 宿主) (外部工具/数据源) | | | |--- MCP 双向通信 -------| ``` - **Host**:运行 LLM 的宿主程序(Claude Desktop、IDE 插件、你自己的后端服务) - **Client**:Host 内部与 MCP Server 建立连接的端点 - **Server**:外部工具/数据源的封装,暴露出标准化的 tool/resource/prompt 接口 MCP 协议本身是 **JSON-RPC over stdio/SSE**,所以: - 同一个 Server 可以跑在本地进程、远程 HTTP、甚至容器里 - 只要协议对,Claude、GPT、DeepSeek 都可以接 ### 三大能力模型 | 能力 | 对应什么 | 举个例子 | | --- | --- | --- | | **Tools** | 函数调用 | “查数据库”、”发送邮件” | | **Resources** | 只读上下文注入 | 自动把公司 wiki、FAQ 塞进 prompt | | **Prompts** | 模板化指令 | 把常用 agent 提示词封装成可复用模板 | 这三者配合,基本覆盖了 agent 开发里”模型需要什么”和”外部能提供什么”的匹配问题。 ## 四、实测:我搭了一个最小 MCP 环境 为了搞清楚 MCP 到底好不好用,我花了半天做了一个**中文开发者友好**的实测环境。 ### 环境 - Host:Claude Desktop(macOS) - Model:claude-3-5-sonnet - Server 1:SQLite 数据库查询(本地文件) - Server 2:本地文件系统读取 - Server 3:自定义天气 API(国内直连,无翻墙) ### 测试任务 让 agent 完成这句话:**“读取最近的 3 条发票记录,找出金额最高的那张,然后写一份报销摘要到我桌面的 report.txt 里。”** 这个任务需要:SQLite 查询 → 排序 → 写文件 → 生成摘要。单一 Function Calling 最少要定义 3 个函数 + 多轮调用。 ### MCP 下的表现 Claude Desktop 里,只要启用了对应 Server,我直接说”帮我写报销摘要”,它自动走了以下流程: 1. 调用 SQLite tool 查询最近 3 条发票 2. 自己比较金额,找出最高的一笔 3. 调用 File System tool,把摘要写入桌面 4. 返回一份可读的总结给我 **全程我一行胶水代码都没写。** ### 对比:纯 Function Calling 实现 同样的任务,用 OpenAI API: ``` tools = [ {"type": "function", "function": {"name": "query_invoices", ...}}, {"type": "function", "function": {"name": "write_file", ...}} ] ``` 然后你要写: - SQLite schema + query 函数 - 文件写入函数 - 多轮对话管理 - 错误处理(模型参数格式不对、SQL 报错、磁盘权限) 代码量大约是 **50-80 行 Python**,还不包括 token 管理和 prompt 调试。 ## 五、MCP vs Function Calling 对比 | 维度 | Function Calling | MCP | | --- | --- | --- | | 集成成本 | 每个工具都要写一遍 schema + 调用 | Server 一旦写好,多个 Host 复用 | | 模型依赖 | 每家格式不同,换模型要改 | 协议独立,理论上任意模型都能接 | | 状态管理 | 无状态,全挤在 prompt 里 | Server 保持连接状态,上下文更清爽 | | 生态工具 | 自己造轮子 | 已有 PostgreSQL、SQLite、Filesystem、GitHub、Slack 等官方 Server | | 热插拔 | 难 | 容易,类似”安装插件” | ## 六、中文开发者该关注什么 ### 好消息 - Anthropic 官方维护了 **SQLite / PostgreSQL / Filesystem / GitHub / Slack / Google Drive** 等 Server,开箱即用。 - 社区已经在做 **中文生态** Server:微信公众号、企业微信、飞书、钉钉、国内短信、支付宝 API。 - MCP over HTTP/SSE 意味着 Server 可以跑在远程服务器上——这对**挂机宝/云服务器**场景特别友好。 ### 坑和限制 1. **Anthropic 官方 Server 只支持 Anthropic 模型深度优化**。你用 DeepSeek / 通义跑 MCP,虽然协议是对得通的,但提示词工程需要自己调。 2. **国内访问问题**。Claude Desktop 本身需要科学上网;SSE 模式的远程 Server 部署在境外会被墙。本地 stdio 模式最稳。 3. **Server 质量参差不齐**。很多第三方 Server 的安全审计做得不好,远程模式下有注入风险。 4. **缺少成熟的 Node.js / Python 客户端库**。官方示例多,生产级 SDK 还在完善。 ## 七、落地建议 ### 什么场景该用 MCP - 你的 agent 需要连接**3 个以上外部数据源**(数据库 + 文件 + CRM + 知识库) - 你在做**多用户 SaaS**,每个用户有独立的数据隔离需求(MCP Server 天然支持 per-user 上下文) - 你想做一个**可扩展的 agent 平台**,允许第三方开发者”插拔”工具 ### 什么场景不需要 - 单个 chatbot,3 个以内工具,单一模型 - 原型/MVP 阶段,追求最快上线 - 团队没人懂 JSON-RPC,纯 Function Calling 更可控 ### 给本站(AI agent 内容站)的启示 如果你的站点将来做 **agent 工具市场 / 导航**,MCP Server 生态是一个值得自己搭建一条**链接分类**: - 收录”官方 Server 列表” - 做”国内可用 Server”专题(去掉那些连不上的) - 写教程:”给你的 Dify / FastGPT 加 MCP 支持” MCP 内容现在 Google 上中文资源少,**现在进场能吃搜索红利**。 ## 八、总结 MCP 本质上是把 Function Calling 从”函数调用”升级为”**工具集成协议**“。它不改变模型能力,但**大幅降低了 agent 连接外部世界的工程成本**。 对于做 AI agent 应用的人:**先认识它,再决定要不要入场。**如果你的项目还没有超过 3 个工具集成,继续用 Function Calling;如果已经在做平台级 agent,现在就该布局。 **参考:** - Anthropic 官方文档:https://modelcontextprotocol.io - GitHub 仓库:https://github.com/anthropics/mcp - 官方 Server 列表:https://github.com/modelcontextprotocol/servers _如果你也在测 MCP,欢迎在站点社区话题区留言交流。_ **Categories:** Agent ---