ORANGE BOOK · MCP

第三章:五分钟看懂 MCP 的工作原理

写在前面:这一章你不需要会编程。我会刻意避开任何不必要的术语, 真有术语出现,会立刻给你一个生活化比喻。 别怕,五分钟搞定。


一、用"餐厅"的比喻,把 MCP 一次讲清楚

想象你走进一家餐厅吃饭。这家餐厅里有三种角色:

  1. 顾客(你):你坐在桌前,点菜,吃饭。
  2. 服务员:他不做菜,但他听懂你的需求,帮你跟厨房沟通。
  3. 厨房(带各种厨师和设备):真正做菜的地方。

你点菜、服务员传话、厨房做菜、服务员上菜——这就是一顿饭。

MCP 的工作原理几乎一模一样:

餐厅角色 MCP 角色 实际例子
顾客 Host(宿主) Claude Desktop、ChatGPT、Cursor 等 AI 客户端
服务员 Client(客户端) Host 内部的"翻译官",负责和 MCP 服务器通信
厨房(含各种厨师) Server(服务器) 提供"工具/数据/能力"的小程序,比如 filesystem MCP、GitHub MCP

一句话总结: Host 是你看到的 AI 客户端,Client 是它内部的"通讯员",Server 是真正干活的工具人。

注意,这里的"Server"很容易让人产生误解: 它通常不是一台远在云端的服务器,而是一个跑在你电脑上的小程序。 你可以把它理解为"AI 用的微信小程序"—— 名字叫"server",但它就是一个独立的小工具。


二、画成图:MCP 的三角关系

flowchart LR
    classDef box stroke-width:2px,fill:transparent;

    User([你 用户]):::box
    Host[Host AI客户端<br/>Claude Desktop / Cursor / ChatGPT]:::box
    Client[Client 通讯员<br/>Host内部模块]:::box
    Server1[Server 1<br/>filesystem MCP]:::box
    Server2[Server 2<br/>GitHub MCP]:::box
    Server3[Server 3<br/>飞书 MCP]:::box

    User -- "我要做X" --> Host
    Host -- 内置 --> Client
    Client <-- "JSON-RPC对话" --> Server1
    Client <-- "JSON-RPC对话" --> Server2
    Client <-- "JSON-RPC对话" --> Server3

记住三个要点:

  1. 一个 Host 里可以装多个 Server,就像一家餐厅有多个厨房(中餐、西餐、甜品)。
  2. Host 自己内部就带着一个 Client,你不用单独安装 Client。
  3. 每个 Server 都是一个独立的小程序,可以是 Anthropic 写的官方版本, 也可以是网友写的,也可以是你自己写的。

三、AI 是怎么"和工具说话"的?看一段对话

让我们偷看 AI 和一个 MCP 服务器之间的真实对话。 这段对话用的是一种叫 JSON-RPC 2.0 的格式—— 名字吓人,但你只需要把它理解成"严格规定格式的微信聊天"就行。

假设你对 Claude 说:「读一下我桌面上的 todo.txt 文件」。

第 1 步:Claude(Host 里的 Client)问 Server:"你都有什么工具?"

{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }

第 2 步:Server 回答:"我有这些工具,包括读文件、写文件、列目录……"

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      { "name": "read_file", "description": "Read the contents of a file", "inputSchema": { ... } },
      { "name": "write_file", "description": "Write contents to a file", "inputSchema": { ... } },
      { "name": "list_directory", "description": "List the contents of a directory", "inputSchema": { ... } }
    ]
  }
}

第 3 步:Claude 决定调用 read_file 工具

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": { "path": "/Users/you/Desktop/todo.txt" }
  }
}

第 4 步:Server 把文件内容返回

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      { "type": "text", "text": "1. 写完 MCP 橙皮书\n2. 给妈妈打电话\n3. 周日健身" }
    ]
  }
}

第 5 步:Claude 拿到内容,再用人话回复你

你桌面 todo.txt 里有 3 件事:

  1. 写完 MCP 橙皮书
  2. 给妈妈打电话
  3. 周日健身

整个过程的核心是这件事

AI 没有"凭空"读文件。它只是在和一个独立的小程序对话,让那个小程序帮它读文件。 AI 自己始终被关在沙盒里,不能直接碰你的电脑。 这就是 MCP 设计的安全本质——AI 必须通过 Server 这一层才能动手,而 Server 是你装的、你授权的、你能随时关掉的。

记住这一点,后面讲安全的时候会反复用到。


四、Server 提供给 AI 的 3 种能力

每个 MCP 服务器,最多可以向 AI 提供下面三种东西:

1. Tools(工具)

让 AI"做事"。

举例:

  • read_file:读取文件;
  • send_email:发邮件;
  • query_database:查数据库;
  • create_pull_request:开 PR。

可以理解为:服务员能帮你下单的菜品。

这是最常用、最重要的一种能力。这本书里 90% 的例子都跟 Tools 有关。

2. Resources(资源)

让 AI"看"东西。

举例:

  • 一份本地文件的内容;
  • 一段数据库表结构;
  • 一段实时日志;
  • 你 Notion 里的一篇文章。

可以理解为:服务员塞给你看的菜单/食材清单。

Resources 和 Tools 的区别在于:

  • Tools 是动作(要不要做?做完什么结果?);
  • Resources 是上下文(已经在那里、AI 可以参考)。

3. Prompts(提示模板)

让 AI"按某种套路说话"。

举例:

  • 一个固定的"代码评审"提示模板;
  • 一个固定的"周报总结"模板;
  • 一个固定的"客服回复风格"模板。

可以理解为:餐厅给的"今日特色推荐套餐"。

Prompts 不是必须的,很多 MCP 服务器只提供 Tools,就够用了。


一张速记表

能力 谁来用 类比 例子
Tools AI 主动调用 菜品 读文件、发邮件、写代码
Resources AI 引用作为上下文 菜单/食材 文件内容、数据库结构
Prompts 用户/AI 选用模板 套餐推荐 代码评审模板、周报模板

五、本地 stdio vs 远程 HTTP——你该选哪种?

MCP 服务器通常以两种方式跑起来:

方式 1:本地 stdio(标准输入输出)

  • 服务器是一个跑在你电脑上的小程序;
  • Host 通过"命令行管道"和它对话;
  • 零网络延迟,离线可用,最隐私
  • 配置时通常长这样:
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/Desktop"]
    }
  }
}

适合:文件操作、Git、数据库、本地工具——所有不需要联网的事

方式 2:远程 HTTP(带 OAuth 认证)

  • 服务器跑在云端(比如飞书、GitHub、Notion 的官方服务器);
  • Host 通过 HTTPS 连接它;
  • 需要网络,需要账号授权
  • 配置时通常长这样(2026 年新格式):
{
  "mcpServers": {
    "feishu": {
      "url": "https://mcp.feishu.cn",
      "auth": { "type": "oauth2" }
    }
  }
}

适合:SaaS(飞书、钉钉、Slack、GitHub、Notion)、企业系统、AI 网关。

给普通用户的建议

你想做什么 推荐用
整理文件、本地数据库、Git 本地 stdio
操作飞书、钉钉、Notion、GitHub 远程 HTTP(用官方服务器)
浏览网页、抓内容 二者都可以,看具体服务器

小白起步建议:从一个本地 stdio 服务器开始(比如 filesystem), 因为它最简单、最直观、最容易跑通。 玩熟之后再去配远程 HTTP 服务器。


六、MCP 的"安全设计":为什么你不用太担心

很多人第一次听到"AI 能动我的文件"会害怕。 其实 MCP 的安全设计相当严密:

  1. Server 必须是你主动安装的——AI 没法自己装工具;
  2. Server 的能力范围是你定的——比如 filesystem 只能访问你授权的目录;
  3. 每次调用工具,Host 都会问你"是否允许"(Claude Desktop、Cursor 等都内置确认机制);
  4. 你可以随时禁用某个 Server——一个开关解决;
  5. AI 自己看不到你的整个电脑——它只能看到 Server 暴露给它的那一小块。

我们会在第十六章详细讲安全。这里只需记住:

MCP 的本质不是"放任 AI",而是"通过受控接口让 AI 干活"。 你随时可以拔掉这根 USB-C 充电线。


七、本章小结

  1. MCP = Host(你看到的 AI 客户端)+ Client(内部通讯员)+ Server(独立小工具)的三角关系
  2. AI 通过 JSON-RPC 2.0 这种"严格格式"和 Server 对话——你完全不用懂这种格式;
  3. Server 给 AI 提供 3 种能力:Tools(做事)/ Resources(看东西)/ Prompts(套话)
  4. 本地 stdio 适合本地工具,远程 HTTP 适合 SaaS;普通用户先学 stdio;
  5. MCP 设计上是"用户授权 + 工具受限 + 调用确认",不会让 AI 失控。

八、动手任务(5 分钟)

把这一章里的"餐厅比喻"用自己的话讲给朋友听一次。 最好对方是个完全不懂 AI 的人——比如你妈、你伴侣、你刚毕业的表弟。

如果对方听完能复述出"Host 是你点菜的人,Server 是厨房,AI 不能直接碰你的电脑", 就说明你已经把 MCP 的核心讲清楚了。

——下一章,我们开始动手装它。