AI 不知道今天的天气,根本原因在哪里
大语言模型本质上是一个函数:输入一段文本,输出一段文本。训练数据在某个时间点截止,之后发生的事情它一概不知。 这个设计本身没有问题,问题在于:如果我想让 AI 能查天气、能读数据库、能调用外部 API,该怎么做? MCP 出现之前,每家 AI 应用自己解决这个问题:OpenAI 搞了 Function Calling,Anthropic 有 Tool Use,各家实现方式不同,数据格式不统一。你给 Claude 写了一个读取 GitHub 仓库的工具,换到 GPT-4 就得重写一遍。工具开发者被迫为每个 AI 平台各写一套对接代码。 类比一下:这就像每家电器厂商都设计自己的充电接口——苹果用 Lightning,三星用 USB-C,充电器带一个不够,出门要带三个。MCP 要做的,是定义一套 USB-C 标准,让所有 AI 应用和所有工具服务器都说同一种语言。 用 curl 看看 MCP 协议的真实长相——它底层是 JSON-RPC 2.0,结构非常干净:MCP 解决了什么——从”每次定制”到”一次接入”
MCP 全称 Model Context Protocol,由 Anthropic 在 2024 年 11 月开源。核心思路是:定义一套统一协议,工具开发者只需要实现一次 MCP Server,所有支持 MCP 的 AI 客户端都能直接用。 类比更准确的版本:MCP 不只是 USB-C 接口(物理形状),它还规定了”插上去之后发生什么”——设备怎么自我介绍、怎么声明支持哪些操作、怎么传输数据、怎么报错。 实际效果:你写一个能查天气的 MCP Server,Claude Desktop 能用,Cursor 也能用,以后任何支持 MCP 的客户端都能用,不需要改一行 Server 代码。 MCP 协议基于 JSON-RPC 2.0,有三种核心原语:| 原语 | 作用 | 调用方向 |
|---|---|---|
| Tools | 可执行的函数(查天气、写文件、调 API) | 客户端 → Server |
| Resources | 可读取的数据(文档、数据库记录、文件内容) | 客户端 → Server |
| Prompts | 预定义的提示词模板 | 客户端 → Server |
三层架构:Host / Client / Server 各自干什么
MCP 定义了三个角色,理清这三层,协议就懂了一半。 Host:用户直接交互的应用程序。Claude Desktop、Cursor、Zed 都是 Host。Host 负责发起连接、管理会话、把 AI 的工具调用意图转发给 Client 执行。 Client:Host 内部的组件,专门负责和 MCP Server 通信。一个 Host 可以同时维持多个 Client 连接,对应多个不同的 Server。 Server:暴露工具、资源、提示词的轻量服务。可以是本地进程(通过 stdio 通信),也可以是远程 HTTP 服务(通过 Streamable HTTP)。一次工具调用的完整流程(含 JSON-RPC 报文)
你问 Claude “北京今天天气怎么样”,到 Claude 给出答案,中间发生了什么?按顺序走一遍。 ① 你发出问题,Host 把问题送给大模型 大模型收到对话上下文,外加一份”可用工具清单”(由 Client 从 MCP Server 获取并注入到 system prompt 里)。 ② 大模型决定要调用工具 模型输出不是直接回答,而是一个工具调用意图:MCP vs Function Calling:为什么需要一个专门的协议
Function Calling 和 MCP 解决的问题有重叠,但层次不同。 Function Calling 是 AI 模型层面的能力:模型在输出中声明”我要调用这个函数,参数是这些”。具体怎么调、谁来执行、结果怎么传回来,Function Calling 不管。每个 AI 平台的格式都不一样,工具开发者需要为 OpenAI、Anthropic、Gemini 各写一套。 MCP 是客户端-服务端通信协议,定义的是”工具服务器如何被发现、如何被调用、结果如何返回”的完整标准。| 维度 | Function Calling | MCP |
|---|---|---|
| 层次 | 模型输出格式 | 客户端-服务端协议 |
| 标准化范围 | 单家平台内部 | 跨平台通用 |
| 解决的问题 | 模型怎么表达意图 | 意图怎么被执行 |
| 工具开发者负担 | 每个平台各写一套 | 写一次,全平台通用 |
常见问题
MCP 协议是谁提出的?
MCP 协议是谁提出的?
Anthropic 于 2024 年 11 月发布并开源了 MCP。协议规范和 SDK 代码托管在 MCP 官方仓库,目前已有 OpenAI、Google DeepMind 等厂商跟进支持,逐渐成为 AI 工具调用的事实标准。
MCP 只能配合 Claude 使用吗?
MCP 只能配合 Claude 使用吗?
不是。MCP 是开放协议,任何 AI 应用都可以实现 MCP Client。目前已支持 MCP 的客户端包括 Claude Desktop、Cursor、Zed、Continue、Cline 等。MCP Server 写好之后,对所有这些客户端通用,不需要改代码。
MCP Server 只能部署在本地吗?
MCP Server 只能部署在本地吗?
本地和远程都可以。本地 MCP Server 通过 stdio(标准输入输出)与 Client 通信,不需要网络;远程 MCP Server 通过 Streamable HTTP 暴露 HTTPS 端点,可以部署在 VPS 上。两种方式的 MCP 协议层完全一致,只有传输层不同。
MCP 用什么格式传输数据?
MCP 用什么格式传输数据?
JSON-RPC 2.0。所有 MCP 请求和响应都是标准的 JSON-RPC 报文,method 字段对应操作类型(
tools/list、tools/call、resources/read 等),params 和 result 字段传递业务数据。理解了 MCP 的架构和调用流程,下一步是看它在实际工作流里能解决哪些具体问题。MCP 能做什么?10 个真实场景让 Claude / Cursor 变成超级助手里列了 10 个真实场景,每个都有配置代码,可以直接拿来用。 本文最后更新于 2026-03,MCP SDK 版本:1.10.2。MCP 协议迭代较快,建议每 3 个月检查 SDK 版本和客户端配置格式变更。