---
title: "MCP 是什么？模型上下文协议架构白话解说 | TauX"
description: "MCP（Model Context Protocol）让 AI 应用程序接上外部数据与工具。白话解释 host、client、server 三个角色，以及 prompts、resources、tools 的差别在于「谁决定」而不是读或写。依规格修订版 2026-07-28 撰写。"
url: "https://taux.io/zh-Hans-CN/what-is-mcp"
locale: "zh-Hans-CN"
alternates:
  en-US: "https://taux.io/en-US/what-is-mcp"
  ja-JP: "https://taux.io/ja-JP/what-is-mcp"
  ko-KR: "https://taux.io/ko-KR/what-is-mcp"
  zh-Hant-TW: "https://taux.io/zh-Hant-TW/what-is-mcp"
---

# Model Context Protocol — MCP 是什么？一次搞懂它在解决什么问题

MCP 是一套**通用接线标准**，让 AI 应用程序能接上外部的数据与工具。这页用白话解释它的三个角色、它提供的三种东西，以及 2026 年这次改版把什么翻掉了。 

依规格修订版 2026-07-28 撰写 

## 01 — 一句话

MCP 让任何 AI 应用程序，用同一种方式接上任何数据来源。 

全名 Model Context Protocol，中文常译作「模型上下文协议」。它由 Anthropic 在 2024 年提出，**但从 2025 年 12 月起已经不属于 Anthropic**——协议捐给了 Agentic AI Foundation（Linux Foundation 旗下，与 Block、OpenAI 共同创立），现在由社区治理。 

## 02 — 为什么需要它

假设有 4 个 AI 应用程序，和 5 个你想接上的东西：Google Drive、GitHub、数据库、Slack、公司内部 API。 

没有共通协议

4 × 5 = 20

每一组「应用程序 × 数据来源」都要各自写一次。多一个应用程序就多 5 组，多一个数据来源就多 4 组。

有了共通协议

4 + 5 = 9

每个应用程序实作一次「怎么当客户端」，每个数据来源实作一次「怎么当服务器」。

这叫 **N×M 问题**，而 MCP 的全部价值就在这一句：**任何 MCP 客户端都能接上任何 MCP 服务器**。USB 是同一个故事——在它之前，每一种周边都有自己的接头。 

## 03 — 三个角色

MCP 里有三个角色。**最多人搞混的是前两个**——大家说「MCP client」的时候，心里想的通常是 Claude Desktop，但那是 host。 

client 在 host **里面**，一个服务器配一个。箭头一律从 client 出发。 

Host（宿主）

AI 应用程序本身。Claude Desktop、VS Code、Claude Code 都是 host。它握有模型、握有对话、决定权限。**host 就是那个「应用程序」**。

Client（客户端）

host **里面**的一个连接器，一个服务器配一个。它不是应用程序，是应用程序内部的零件。VS Code 同时接两个服务器，就有两个 client。

Server（服务器）

对外提供工具与数据的程序。可以跑在你自己的机器上，也可以在远程。它**看不到你的对话，也看不到其他服务器**——这是刻意的设计。

## 04 — 服务器提供什么

服务器提供三种东西。它们的差别**不是**「读 vs 写」——那是最常见的错误直觉。 

真正的差别是**谁决定要不要用它**。下面三个情境，每一个的答案都不一样： 

 我想让 AI 读我的文档 我想让 AI 帮我开一张票 我想用现成的审查流程 

答案：**Resource** — 由应用程序决定

你把一份文档拖进对话，或是 host 判断「这个问题需要附上这个文档」——决定权在**应用程序**手上，不在模型手上。模型只是收到了那份内容。 

常见例子：文档内容、git 历史、数据库 schema。 

答案：**Tool** — 由模型决定

你说「帮我把这个 bug 开成一张票」，模型自己判断要调用哪个功能、带什么参数。决定权在**模型**手上。 

关键：**一个唯读的查询也可以是 tool**，只要是模型自己决定要不要查。所以「读 = resource、写 = tool」是错的。 

答案：**Prompt** — 由用户决定

你从菜单挑一个「代码审查」，或打一个斜线指令。决定权在**你**手上——模型不会自己跑去用它。 

常见例子：斜线指令、模板菜单。 

├─ 三个情境的差别只有一个：谁按下决定键。 

## 05 — 它怎么传输

两种标准方式：**stdio**——服务器是一个子进程，透过标准输入输出沟通；与 **Streamable HTTP**——每则消息是一个 HTTP POST。**这是「怎么传」的差别，不是「在哪里」的差别**：一个跑在你自己机器上的服务器，一样可以讲 Streamable HTTP。 

值得知道的是**两者的安全性完全不同**：stdio 直接继承你的用户权限、没有验证层；HTTP 那条需要 OAuth、需要验证来源。另外，「本机服务器」指的是「跑在你机器上」，跟它会不会连外网无关——本机服务器一样可以去打远程 API。 

## 06 — 这一版变了什么

服务器现在什么都不记得。 

2026-07-28 是 MCP 问世以来最大的一次改版，而且是破坏性的。以前客户端要先跟服务器「握手」建立连接，之后双方记得彼此。**现在没有握手、没有连接阶段**——每一个请求都自己带着版本与身分，服务器处理完就忘记。 

方向也改了：**服务器不会回头问你问题**。它会回一个「我需要这个信息」然后结束这次请求，由客户端拿到答案后**重新发一次**。 

你在别处看到这些，代表那份数据已经过期

*   ├─ `initialize` 握手
*   ├─ `Mcp-Session-Id` 标头、协议层的 session
*   ├─ 服务器**主动送出**一个请求给客户端
*   └─ `ping`、`logging/setLevel` 这两个方法

第三项要讲清楚，因为它最容易被误读成「服务器再也不能要东西了」。**消失的是「主动送出请求」这个机制，不是服务器提出要求的能力。**以前服务器可以直接推一个请求过来；现在它只能在回应里说「我需要这个」然后结束，剩下的由客户端接手。 

所以那些「服务器向客户端要东西」的功能**都还在，只是换了条路走**——包括 **Elicitation**（跟用户要一项信息）与 **Sampling**（借用 host 的模型；方向与直觉相反，所以特别多人误解）。 

另外一件事跟上面无关：**Roots**（告诉服务器你的工作目录范围）、**Sampling** 与 **Logging** 这三样**被标记为淘汰**。它们现在还能用，但别当成现行架构学。淘汰与上面那个机制改变是两回事：一个讲「怎么传」，一个讲「还要不要留着」。 

## 07 — 本页对应哪一版

MCP 的版号**就是日期**。它标示的是「最后一次做出破坏性变更的日子」，不是发布周期。所以你手上任何一份 MCP 数据，看它对应哪个日期就知道新不新——**这是这页最值得你带走的一件事**。 

2024-11-05 → 2025-03-26 → 2025-06-18 → 2025-11-25 → 2026-07-28 

有时效的说法

*   上一节「这一版变了什么」只对 2026-07-28 成立。
*   三个被标记淘汰的功能，最早要到 2027-07-28 之后的某一版才会真的移除。
*   **协议不再需要连接阶段 ≠ 现实中的服务器都无状态了**。大量已部署的服务器仍在讲旧版，这个落差会持续一段时间。

接下来

*   [想知道怎么实际用它做事 → Claude Skills 实战指南](https://taux.io/zh-Hans-CN/claude-skills-guide)
*   [另一个 AI 时代的新标准 → LLMs.txt 是什么](https://taux.io/zh-Hans-CN/what-is-llms-txt)
