MCP Model Context Protocol(模型上下文协议)原理
MCP(模型上下文协议)是一种标准化协议,充当AI模型与外部工具的"翻译官+管理员"。它定义了模型、服务器、客户端和主机的交互方式,使不同AI模型(如GPT、Claude)能够通过统一协议调用数据库、API等外部工具。MCP通过初始化连接、工具发现、异步调用循环等机制工作,具有标准化、扩展性强和安全可控等优势。该协议仅规范客户端与服务端的通信,不涉及模型交互标准,因此实际作用是
🌟 一句话理解
MCP 就像“翻译官 + 管理员”:
它规定了一套标准,让 AI 模型能够用同一种语言去:
- 发现 外部工具
- 调用 外部数据
- 返回 结果给用户
这样 AI 就能更智能,不只是“纸上谈兵”,还能真正去调用外部系统。
📊 MCP 的核心原理
MCP 主要定义了几个关键角色:
- 模型(Model)
- 就是大语言模型,比如 GPT、Claude。
- 负责接收用户指令,决定要不要调用外部工具。
- 服务器(Server)
- 就是 MCP 协议的提供者,里面挂载了各种“能力”,比如数据库查询、文件读取、调用 API。
- 它把这些能力以统一格式暴露出来。
- 客户端(Client)
- 在模型和服务器之间做桥梁。
- 负责把模型的请求翻译成 MCP 规范的调用,再把结果送回模型。
- 主机(MCP Hosts)
- 作为运行 MCP 的主应用程序,例如 Claude Desktop、Cursor、Cline 或 AI 工具。
- 为用户提供与LLM交互的接口,同时集成 MCP Client 以连接 MCP Server。
🖼️ 图解(简化版)
用户输入:给我查一下数据库里昨天的销售额
│
┌─────▼─────┐
│ 模型 GPT │
└─────▲─────┘
│ 需要外部数据
┌─────▼─────┐
│ MCP 客户端 │
└─────▲─────┘
│ 调用协议
┌─────▼─────┐
│ MCP 服务器 │───► 数据库 / API / 工具
└───────────┘
最后:模型得到外部数据 → 回复用户
📌 为什么要有 MCP?
在 MCP 出现之前:
- 每个模型厂商(OpenAI、Anthropic 等)调用工具的方式都不一样。
- 开发者需要为不同模型写不同的“插件适配”。
有了 MCP:
👉 不管是 GPT 还是 Claude,只要支持 MCP,就能通过 同一协议 调用同一套工具。
就像 USB 接口标准化之后,不管是键盘还是鼠标,都能插电脑用。
🔑 MCP 的好处
-
标准统一
- 开发者写一份 MCP 服务,所有支持 MCP 的模型都能用。
-
扩展性强
- 想加个功能(比如连接 Jira、数据库、天气 API) → 只要写个 MCP Server 就行。
-
安全可控
- MCP 通过权限控制,可以明确规定哪些数据能被访问,哪些不能。
📌 举个生活类比
想象你是一个会说中文的用户,GPT 会说“AI语”,数据库会说“SQL语”:
- 没有 MCP 的时候:GPT 得自己学会 SQL 才能查数据。
- 有 MCP 的时候:MCP 就像一个 翻译官,把 GPT 的意图翻译成 SQL 请求,再把结果翻译回来。
MCP交互时序图
🔑 使用 MCP 需要注意的点
1. MCP Client 和 Server 的职责分工
-
Client(客户端) 是模型和用户之间的中间层,负责:
- 连接 MCP Server
- 获取可用的工具列表(discovery)
- 把模型的调用请求转发给 Server
- 把结果返回给模型/用户
-
Server(服务端) 提供具体的“工具能力”,比如:
- 数据库查询
- 文件系统访问
- 外部 API 调用
-
模型(LLM)本身并不会直接操作工具,而是通过 MCP Client → MCP Server → 工具的链路。
👉 很多人刚开始会混淆 Client 和 Server 的角色,要注意 Client 只是“中间翻译官”,Server 才是工具的实际提供者。
2. 初始化阶段是必不可少的
-
在 MCP 中,模型在调用工具之前必须先经历 初始化阶段:
- 连接 Server
- 确认连接(握手)
- 获取工具列表及描述
👉 如果没有先走完这一步,模型就不知道 Server 里有哪些工具,也没法调用。
很多新手会直接跳到“调用工具”,结果就报错。
3. 工具调用是异步 & 循环的
-
模型可能需要 多次调用工具 才能完成任务,比如:
- 第一次调用:查数据库
- 第二次调用:再调用 API 取补充信息
- 第三次调用:合并结果输出
-
MCP 设计里工具调用是一个 loop 循环,直到模型觉得足够回答用户。
👉 所以在实现时要注意 调用链的幂等性(同一个工具可能会被多次调用,结果需要能安全处理)。
4. 错误处理(alt 分支)
-
工具可能调用失败,比如:
- 网络错误
- 参数格式不对
- Server 不支持某个功能
-
MCP 协议中一般用 alt 分支(Alternative Path) 来处理异常:
- 如果调用失败,Server 要返回错误信息
- Client 再把错误交给模型,模型可以选择重试或提示用户
👉 很多文档里没明确强调,容易被忽略。
5. 安全与权限控制
-
MCP 可以访问数据库、文件、外部 API,这涉及 安全风险:
- 模型可能无意间获取敏感信息
- Server 如果没设置权限,可能被滥用
👉 所以在设计 MCP Server 时一定要做:
- 权限控制(哪些工具可用,哪些目录可访问)
- 请求过滤(避免 SQL 注入/命令注入)
- 日志监控(记录调用轨迹,方便审计)
6. 跨模型复用的好处 & 陷阱
- 好处:一个 MCP Server 可以被多个不同的模型(GPT、Claude、Gemini 等)复用,因为协议是统一的。
- 陷阱:不同模型对工具的调用方式可能略有差异,比如有的 LLM 习惯“一次性调用多个工具”,有的则是“逐步调用”,要在 Server 端做好兼容。
7. MCP协议的范围
🌟MCP协议中,只规定了client和server的通讯标准,并没有规定client和大模型的通讯标准,所以MCP是与大模型无关的,其实名称是存在误导性的。模型上下文协议简单的理解就是它规定了模型上下文中可以调用的函数、工具的协议。
8.常见MCP市场的网站
更多推荐
所有评论(0)