写在前面:这一章你不需要会编程。我会刻意避开任何不必要的术语, 真有术语出现,会立刻给你一个生活化比喻。 别怕,五分钟搞定。
一、用"餐厅"的比喻,把 MCP 一次讲清楚
想象你走进一家餐厅吃饭。这家餐厅里有三种角色:
- 顾客(你):你坐在桌前,点菜,吃饭。
- 服务员:他不做菜,但他听懂你的需求,帮你跟厨房沟通。
- 厨房(带各种厨师和设备):真正做菜的地方。
你点菜、服务员传话、厨房做菜、服务员上菜——这就是一顿饭。
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
记住三个要点:
- 一个 Host 里可以装多个 Server,就像一家餐厅有多个厨房(中餐、西餐、甜品)。
- Host 自己内部就带着一个 Client,你不用单独安装 Client。
- 每个 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 件事:
- 写完 MCP 橙皮书
- 给妈妈打电话
- 周日健身
整个过程的核心是这件事:
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 的安全设计相当严密:
- Server 必须是你主动安装的——AI 没法自己装工具;
- Server 的能力范围是你定的——比如 filesystem 只能访问你授权的目录;
- 每次调用工具,Host 都会问你"是否允许"(Claude Desktop、Cursor 等都内置确认机制);
- 你可以随时禁用某个 Server——一个开关解决;
- AI 自己看不到你的整个电脑——它只能看到 Server 暴露给它的那一小块。
我们会在第十六章详细讲安全。这里只需记住:
MCP 的本质不是"放任 AI",而是"通过受控接口让 AI 干活"。 你随时可以拔掉这根 USB-C 充电线。
七、本章小结
- MCP = Host(你看到的 AI 客户端)+ Client(内部通讯员)+ Server(独立小工具)的三角关系;
- AI 通过 JSON-RPC 2.0 这种"严格格式"和 Server 对话——你完全不用懂这种格式;
- Server 给 AI 提供 3 种能力:Tools(做事)/ Resources(看东西)/ Prompts(套话);
- 本地 stdio 适合本地工具,远程 HTTP 适合 SaaS;普通用户先学 stdio;
- MCP 设计上是"用户授权 + 工具受限 + 调用确认",不会让 AI 失控。
八、动手任务(5 分钟)
把这一章里的"餐厅比喻"用自己的话讲给朋友听一次。 最好对方是个完全不懂 AI 的人——比如你妈、你伴侣、你刚毕业的表弟。
如果对方听完能复述出"Host 是你点菜的人,Server 是厨房,AI 不能直接碰你的电脑", 就说明你已经把 MCP 的核心讲清楚了。
——下一章,我们开始动手装它。