每次要给 AI 接一个新工具,都得写一遍适配代码——这痛苦你来过吗?
调一遍 API Key、写一遍鉴权、写一遍参数映射、写一遍错误处理……十个工具写十遍。等到第十一个工具上线,前面的 10 个又得跟着升一遍。
这段「适配代码地狱」,就是 MCP 要解决的事。
写在前面:MCP 不是工具,是协议
MCP 全称 Model Context Protocol,是 Anthropic 公司在 2024 年 11 月 25 日推出的开放协议。
注意时间点——这不是个新框架、新 SDK、新产品,它是一份协议。
协议的意义,是让任何人、任何模型、任何工具,都能用同一套语言对话。
如果说 HTTP 是浏览器的「世界语」,那 MCP 就是 AI 圈的世界语——AI 界的 USB-C。
MCP 三件套:Client / Host / Server
MCP 把整个链路拆成三个角色:
| 角色 | 干啥 | 真实对应 |
|---|---|---|
| MCP Host(宿主) | AI 大脑,跑推理 | Claude Code、Cursor、Trae、Codex |
| MCP Client(客户端) | 装在宿主里,作为「插头」 | 每个工具一份配置,插件式 |
| MCP Server(服务端) | 真正提供数据和能力 | 文件系统、邮件、数据库、SaaS |
关系是这样:
Host(宿主)
├─ Client A(装个 filesystem 的插头)
├─ Client B(装个 Gmail 的插头)
├─ Client C(装个高德地图的插头)
└─ ... 想装多少装多少
宿主(Host)通过 Client 跟各种 Server 标准化对话。每个 Server 只关心一个能力,宿主把要干的事拆给不同的 Server——这就是 MCP 协议立下的「统一接口」规矩。
资源 vs 工具:模型到底要什么
很多人搞混 MCP 两套核心能力——**Resources(资源)**和 Tools(工具) 。
| 类型 | 模型干啥 | 真实例子 |
|---|---|---|
| Resources 资源 | 读 / 检索 | 数据库、API 响应、文件、SaaS(飞书、高德地图) |
| Tools 工具 | 调 / 触发动作 | 创建日历、发邮件、执行命令、远程控制 |
资源是用来「填饱肚子」的——给模型补上下文。工具是用来「动手干活」的——让模型真正对外部世界产生动作。
模型想知道、能用、能调的内容,就是 MCP 协议要承接的全部。
一句话看懂:MCP 是什么不是什么
既然很多人被「MCP 是 xx」忽悠过,一张表分清楚:
| 它是 | 它不是 |
|---|---|
| 一份开放协议 | 一个具体产品 |
| 一套通信规范 | 一段 SDK 代码 |
| 一个统一接口标准 | 一个第三方应用 |
| Anthropic 牵头、社区共建的标准 | Anthropic 独家私有 |
它最牛逼的地方不是「做得有多好」,而是任何 AI 模型都能以统一的方式,去访问任意资源和工具——这就是「协议」的力量。
USB-C 比喻:真没夸张
USB-C 这十年干成了一件事——消灭接口战争。
以前安卓苹果各有各的线、硬盘照相机各有各的口,乱七八糟。现在 USB-C 一统天下,插上就完事。
MCP 在 AI 圈干的是同一件事:
| 之前 | 之后(MCP 时代) |
|---|---|
| 每个工具写一份 adapter | 所有工具都用 MCP 标准 |
| 模型 A 适配完,模型 B 还得重写 | 协议通用,模型自由切换 |
| RAG、函数调用各搞一套 | 统一标准接入 |
| 工具升级要重写所有客户端 | 升级是服务端的事,客户端不动 |
有了 MCP,就好像 USB-C 数据线——任何 MCP 服务端和客户端都能自由互联,AI 可调用的上下文来源得到极大扩充。
完整代码:mcp.json 配 filesystem
最经典的 MCP 配置——官方文件系统服务端(让 AI 能合规读写本地目录):
json
{
"mcpServers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/Lenovo/Desktop/workspace/zy_ai/ai/mcp/mcp-text"
]
}
}
}
逐字段看:
| 字段 | 值 | 含义 |
|---|---|---|
mcpServers | 对象 | 所有 MCP 服务的注册表(key 是服务名) |
type | "stdio" | 通信方式,stdio = 标准输入输出 |
command | "npx" | 怎么启动这个 server |
args | 数组 | 传给命令的参数(顺次填) |
-y | —— | npx 参数,遇到交互提示直接确认 |
@modelcontextprotocol/server-filesystem | —— | npm 包名(MCP 官方) |
| 最后一个路径参数 | /Users/.../mcp-text | 授权访问的目录(白名单) |
⚠️ 最后那个路径是安全白名单——配置里只允许模型读写这个目录,其它盘符不会被 AI 偷看。这设计是真的懂安全。
启动命令一行:
bash
npm i -g @modelcontextprotocol/server-filesystem
装好之后,在 Cursor / Claude Code 里粘上面那段 mcp.json,AI 立刻多出一个能力:直接操作你这个目录下的文件。
进阶玩法:protocl 的价值不止「方便」
很多人低估了 MCP——以为是少写点适配代码而已。
但它从根本上重构了 AI 的应用架构。 最大的变化:
| 层级 | 之前 | MCP 之后 |
|---|---|---|
| AI 形态 | Chatbot(问答机器) | Agentic AI(智能体 AI) |
| 调用方式 | 人→AI 聊天 | AI→工具→真执行 |
| 上下文来源 | 训练数据为主 | RAG + 工具 + 数据库 + 文件 |
| 接入成本 | 每个工具写适配 | 一次配置,全球互通 |
Chatbot 是 AI 跟人类对话,Agentic AI 是 AI 自己动手完成真实任务——MCP 是从 chatbot 跨到 Agentic AI 的关键一环。
踩坑提醒:这 5 个坑别踩
- 把 MCP 当成「又一个新的 SDK」 —— 它是协议,底层用什么实现、什么语言写 server 都行,不是「学完 Claude SDK 再学 MCP SDK」。
- stdio 和 SSE 通信方式混用 —— 本地工具用
stdio,远程服务一般用http/SSE,别瞎配,协议要求严苛。 - 白名单路径写错或写太大 ——
args最后一个路径一旦写/或~/,AI 能读你整台机器,最小权限原则是命根子。 - 装完 server 不重启 Host —— Cursor/Claude 改完
mcp.json一定要 reload,没生效 90% 是这个原因。 - 混淆 Resources / Tools —— 资源只能读不能改,工具才能动副作用(发邮件 / 删文件 / 写日历),设计 server 时别乱归类。
结尾:MCP 让 AI「长出手脚」
去年写工具调用(Tool Use),咱在裸代码里手动 tool_calls 回传——能跑,但累。
MCP 的意义,是把这套累活抽成了协议层。以后想给 AI 加一个能力,不用改 Host、不用动模型,配一段 JSON 就行。
模型是千里马,MCP 是它脚下的标准马路、马嘴里的标准辔头、马鞍上的 USB-C 接口——所有工具都能即插即用。