MCP.so
登录
返回博客

什么是 MCP?Model Context Protocol(模型上下文协议)详解(2026)

2026年10月15日MCP.so TeamMCP.so Team

什么是 MCP?Model Context Protocol 是把 AI 应用连接到工具和数据的开放标准。本文讲清架构、原语、传输方式、示例,以及 2026 年最新规范。

MCP(Model Context Protocol,模型上下文协议)是一个开放标准,让 AI 应用通过统一的接口连接外部工具、数据和服务。 开发者不必为每个应用、每个模型单独写集成,只需构建一次 MCP 服务器(比如 GitHub、数据库、浏览器、Figma),任何兼容 MCP 的宿主——Claude、ChatGPT、Cursor、VS Code 等——都能直接使用。人们常把它比作"AI 的 USB-C":一种接口,连接各种设备。

Anthropic 在 2024 年 11 月以开源项目的形式发布了 MCP。2025 年 12 月,它被捐赠给 Agentic AI Foundation(Linux 基金会旗下的定向基金),如今已成为 Agent 连接外部世界的默认方式。当前的规范版本是 2026-07-28,这一版把协议改成了无状态。本文讲清 MCP 是什么、各部分如何配合,以及今年发生了哪些变化。

MCP 解决的问题

语言模型本身只能读取提示词、输出文本。要真正有用,它需要上下文(你的文件、工单、文档、数据库记录),也需要行动能力(提交 PR、执行查询、发送消息)。在 MCP 出现之前,每个 AI 产品都用自己的格式自建这些连接器。M 个应用对接 N 个服务,大约需要 M × N 个集成,而且彼此无法复用。

MCP 把它变成了 M + N。每个服务只需提供一个 MCP 服务器,每个 AI 应用只需实现一个 MCP 客户端,大家都使用相同的 JSON-RPC 2.0 消息。这一设计公开借鉴了 Language Server Protocol——后者曾为编程语言和代码编辑器做过同样的事。

MCP 架构:宿主、客户端、服务器

规范定义了三种角色:

角色是什么示例
宿主(Host)用户直接使用的 AI 应用,掌管模型、对话和权限确认。Claude Code、Claude Desktop、ChatGPT、Cursor、VS Code
客户端(Client)宿主为每个服务器创建的连接器,一个客户端只对应一个服务器。宿主内部的 MCP 客户端对象
服务器(Server)通过 MCP 暴露工具、数据和提示词的程序,可在本地或远程运行。GitHub、Filesystem、Playwright、Sentry、Notion 服务器

如果你让 VS Code 同时连接一个文件系统服务器和一个 Sentry 服务器,VS Code(宿主)会创建两个客户端,每个服务器一个。服务器之间互相看不到,也看不到完整对话:每个服务器能收到什么,由宿主决定。这种隔离是规范中刻意设计的安全原则。

想深入了解服务器端,请看什么是 MCP 服务器。想了解客户端以及支持 MCP 的应用列表,请看 MCP 客户端指南。

基本构件:MCP 原语

MCP 服务器提供三类能力,规范按由谁控制来划分:

原语控制方是什么示例
Tools(工具)模型模型可自行决定调用的函数,输入用 JSON Schema 描述create_issue、run_query、browser_navigate
Resources(资源)应用以 URI 标识的只读数据,宿主可把它作为上下文附加一个文件、数据库 schema、一段日志
Prompts(提示词)用户可复用的模板,通常以斜杠命令呈现/review-pr、"总结这次故障"

工具是目前使用最广的原语。大多数宿主会列出服务器的工具,把名称和 schema 交给模型,在模型请求时执行调用。什么时候用哪种原语,可参考我们的 Resources 与 Tools 对比指南。

客户端也可以反过来向服务器提供功能。最主要的是引导输入(elicitation):服务器可以在任务中途向用户索取输入(缺失的参数、一次确认,或一个用于登录的 URL)。两个较早的客户端功能——采样(sampling)(服务器借用宿主的模型)和 roots(宿主告诉服务器可以访问哪些目录)——仍然可用,但已和协议层日志一起在 2026-07-28 被弃用。

在核心协议之上,MCP 还有按需启用的扩展。最知名的是 MCP Apps(在对话中渲染交互式 UI)和 Tasks(带持久句柄、可轮询的长时任务)。

传输方式:stdio 与 Streamable HTTP

同样的消息可以通过两种标准传输方式传递:

  • stdio:宿主把服务器作为本地子进程启动,通过 stdin 和 stdout 交换按行分隔的 JSON。大多数本地服务器(filesystem、git、Playwright)都这样运行,凭证通常来自环境变量。
  • Streamable HTTP:服务器部署在一个 URL 上,例如 https://example.com/mcp。每条消息是一次 HTTP POST,服务器用 JSON 或一段简短的 Server-Sent Events 流来回复。"远程 MCP 服务器"指的就是这种方式,登录使用 OAuth。

2024 年的旧版 HTTP+SSE 传输已被弃用。如果某篇教程让你把客户端指向 /sse 端点,说明它已经过时;迁移方法见 SSE 与 Streamable HTTP,远程服务器上 OAuth 的工作方式见 MCP 认证。

一次 MCP 交互长什么样

你很少需要手写原始 MCP 消息,因为 SDK 会替你完成,但看一眼能让协议变得具体。下面是客户端调用一个天气工具。在 2026-07-28 版本中,每个请求都在 _meta 里携带协议版本和客户端能力,因此服务器不需要事先握手:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "weather_current",
    "arguments": { "location": "San Francisco", "units": "imperial" },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientInfo": {
        "name": "example-client",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/clientCapabilities": { "elicitation": {} }
    }
  }
}

服务器的回复:

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "resultType": "complete",
    "content": [
      {
        "type": "text",
        "text": "Current weather in San Francisco: 68°F, partly cloudy"
      }
    ]
  }
}

这个示例改编自官方架构指南。完整流程(发现、tools/list、调用、引导输入的多轮往返以及变更通知)请看 MCP 是如何工作的。

一个最小的 MCP 服务器

构建服务器很简短。下面是官方 Python SDK README 中的完整示例(uv add "mcp[cli]"):

from mcp.server import MCPServer

mcp = MCPServer("Demo")


@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b


@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

类型注解会变成工具的 JSON Schema,docstring 会变成工具描述。运行 uv run mcp dev server.py 即可在 MCP Inspector 中打开它,手动调用 add。官方 SDK 还覆盖 TypeScript、C#、Go、Rust、Ruby、Java、Swift、PHP 和 Kotlin(SDK 列表)。想进一步学习,可以跟着构建 MCP 服务器或 Python MCP 服务器教程动手。

使用现成的服务器

大多数人从不自己写服务器,而是直接安装。在 Claude Code 中,添加 Notion 托管服务器只需 Claude Code 文档里的一条命令:

claude mcp add --transport http notion https://mcp.notion.com/mcp

桌面应用则使用 JSON 配置文件。下面是官方快速入门中的文件系统服务器配置,写在 claude_desktop_config.json 里:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop"
      ]
    }
  }
}

热门的入门选择包括 GitHub MCP 服务器、用于浏览器自动化的 Playwright MCP、提供最新库文档的 Context7,以及 Filesystem 服务器。各客户端的具体步骤见我们的配置指南:Claude Code、Cursor、VS Code 和 ChatGPT。

谁在支持 MCP

Anthropic 把 MCP 交给 Linux 基金会时公布:活跃的公开 MCP 服务器已超过 10,000 个,ChatGPT、Cursor、Gemini、Microsoft Copilot 和 Visual Studio Code 均已支持。Claude Code、Codex、Cursor 等编码 Agent 都把 MCP 当作主要的扩展机制。在服务器端,大多数主流 SaaS 厂商都已提供托管的 MCP 端点,MCP.so 等目录以及官方的 MCP Registry(仍处于预览阶段)都在收录它们。

历史与治理

时间里程碑
2024 年 11 月Anthropic 开源 MCP;首个规范版本 2024-11-05(stdio 与 HTTP+SSE)
2025 年 3 月版本 2025-03-26 引入 Streamable HTTP 和基于 OAuth 的授权框架
2025 年 6 月版本 2025-06-18 加入引导输入、结构化工具输出和 MCP-Protocol-Version 请求头
2025 年 11 月版本 2025-11-25;HTTP+SSE 继续处于弃用状态,Client ID Metadata Documents 成为首选的客户端注册方式
2025 年 12 月MCP 被捐赠给 Linux 基金会旗下的 Agentic AI Foundation(由 Anthropic、Block 和 OpenAI 联合创立)
2026 年 7 月版本 2026-07-28:无状态协议、server/discover、多轮往返请求,Tasks 移入扩展

版本号就是日期:每个日期标记最后一次不向后兼容的变更。项目的正式名称是 "Model Context Protocol a Series of LF Projects, LLC",技术治理由首席维护者、核心维护者和各工作组负责,变更以 SEP(Specification Enhancement Proposal,规范增强提案)的形式提出。成员资格属于个人,而不是公司。

2026-07-28 带来了什么变化

如果你是在 2025 年学的 MCP,有三点已经不同了(变更日志):

  1. 不再有 initialize 握手,也不再有会话。 每个请求都自带版本和能力信息,因此远程服务器可以放在普通的负载均衡器后面。新增的 server/discover 调用可在客户端需要时预先返回服务器支持的版本和能力。
  2. 服务器不再向客户端发起请求。 当服务器需要用户输入时,它返回一个 input_required 结果,客户端带上答案重试这次调用(即多轮往返请求,MRTR 模式)。
  3. 变更通知改走 subscriptions/listen,这是一个由客户端主动订阅的长连接流。

旧版客户端和服务器可以通过文档中规定的兼容模式继续工作,官方 SDK 也同时支持新旧两个时代。

MCP 与函数调用、API 和 RAG 的区别

  • 函数调用(Function calling) 是模型的功能:模型输出一个结构化请求,调用你定义好的函数。MCP 则是从应用外部提供这些函数的那一层,可在运行时发现、来自任意厂商。
  • REST API 是为程序设计的。MCP 服务器通常封装一个 API,但额外加上了写给模型看的描述和 schema,以及面向用户的授权确认和认证流程。
  • RAG 检索文本片段塞进提示词。MCP 可以作为一种检索途径,但它还涵盖行动。详见 MCP 与 RAG。
  • A2A(Agent2Agent)连接的是 Agent 与 Agent,而 MCP 连接的是 Agent 与工具。两者可以配合使用,详见 A2A 与 MCP。

MCP 安全吗?

MCP 只是一个协议,安全性取决于你信任哪些服务器,以及运行它们的宿主。规范要求宿主在调用工具前获得用户的明确同意,并把来自不可信服务器的工具描述视为不可信输入。实际操作中:从可信的发布者安装服务器;优先选择带 OAuth 的官方托管端点,而不是粘贴令牌;让具备写权限的工具始终经过确认;把文件系统服务器限制在它需要的目录内。我们的 MCP 安全最佳实践详细介绍了提示词注入、工具投毒和令牌管理。

下一步

常见问题

AI 领域的 MCP 是什么意思?

MCP 是 Model Context Protocol(模型上下文协议)的缩写,是把 AI 应用连接到外部工具、数据和服务的开放标准。它由 Anthropic 于 2024 年 11 月发布,现由 Linux 基金会旗下的 Agentic AI Foundation 托管。

MCP 只能在 Claude 里用吗?

不是。MCP 与厂商无关,ChatGPT、Cursor、Gemini、Microsoft Copilot、VS Code、Codex 等众多应用都支持它。一个 Server 写一次,就能在任何兼容的客户端中使用。

MCP 和 API 有什么区别?

API 是给程序调用的,而 MCP Server 会为工具和数据加上大模型能理解的描述和 Schema,并提供发现、用户授权和认证流程。很多 MCP Server 其实就是现有 REST API 外面的一层薄封装。

MCP 规范的最新版本是哪个?

当前版本是 2026-07-28。它去掉了 initialize 握手和会话,让 MCP 变成无状态协议,新增了 server/discover,并引入了用于 elicitation 的多轮往返请求(MRTR)。