MCP(Model Context Protocol) ≠ API
但 MCP 是为“大模型”专门设计的一种 新一代协议层,包裹和协调 API 的安全调用、上下文共享与语义控制。
🧩 一句话区别
| 对比点 | API | MCP(Model Context Protocol) |
|---|---|---|
| 设计对象 | 给人类开发者或传统程序使用 | 给 AI 模型 / 智能体 使用 |
| 交互模式 | 命令式调用(request → response) | 语义式调用(context-aware) |
| 核心目标 | 功能访问(执行操作) | 语义对齐 + 权限控制 + 可解释执行 |
| 接口形式 | REST / GraphQL / RPC | 标准化上下文桥 + 工具注册表 + 语义协议层 |
| 调用粒度 | 每次手动指定 endpoint | 模型根据上下文自动选择 Tool |
| 安全控制 | 靠 Auth / Token / Role | 加上「人机裁决」「沙箱」「审计」机制 |
| 返回数据 | 一次返回完整结果 | 支持结构化、分片、流式上下文响应 |
| 用途 | 面向程序逻辑 | 面向 AI 决策与多步推理链 |
🧠 二、MCP 与 API 的关系
可以理解成:
MCP 是 AI 世界的“应用层协议”,
它 包装并协调底层 API 的调用,让大模型能理解、推理、授权地使用它们。
🔹传统 API 流程
1 | 客户端 → 调用接口 /api/v1/data → 返回 JSON |
开发者要写清楚:
- URL、参数格式、认证方式
- 处理异常、分页、结构等
AI 模型很难“理解”或“自发使用”这些 API,因为它没有固定 schema 绑定或上下文。
🔹MCP 流程(AI 调用场景)
1 | 大模型 (AI Client) |
特点:
模型只需说:“获取最近 10 个错误日志”
MCP Adapter 会:
- 选择正确的 API(/logs?type=error&limit=10)
- 验证安全范围
- 格式化结果为模型易解析的结构
✅ 这样模型可以在“自然语言 → 行为执行”之间无缝切换。
🧩 三、MCP 的核心组成(对比 API 架构)
| 模块 | 在 API 中的对应 | 在 MCP 中的扩展 |
|---|---|---|
| Endpoint | URL endpoint | Tool / Capability(语义注册) |
| Request | HTTP Request | MCP Message(含 context / intent) |
| Response | JSON / XML | Structured semantic result(含元信息) |
| Auth | Token / OAuth | 除 Auth 外还有人类确认(high-risk gating) |
| Log | Access log | 审计日志 + 行为追踪(Audit Trail) |
| Schema | OpenAPI / GraphQL SDL | Tool manifest + permission schema |
| Execution Context | 无状态 | 有状态(会话上下文、记忆、意图链) |
🧰 四、类比理解
| 类比角度 | 举例 |
|---|---|
| 🧩 API 是函数 | 提供一个函数库(你得手动调用) |
| 🧩 MCP 是操作系统 | 它帮模型决定该用哪个函数、以什么参数、安全执行 |
| 🧩 API 是数据库查询接口 | 直接返回数据 |
| 🧩 MCP 是 ORM + ACL + AI语义层 | 让模型“知道”数据代表什么、能否访问、如何安全执行 |
⚙️ 五、可视化结构(简化)
1 | ┌──────────────────────────────┐ |
MCP 让大模型“语义上”访问这些资源,而不是靠 prompt 胡乱猜 API。
🔒 六、安全与治理层(MCP 独有)
| 功能 | API 有吗 | MCP 改进点 |
|---|---|---|
| 权限认证 | ✅ | ✅ + 语义级别访问限制 |
| 人类确认 | ❌ | ✅(高风险操作确认) |
| 执行沙箱 | ❌ | ✅(限制资源访问范围) |
| 行为审计 | 部分 | ✅(模型请求全链记录) |
| 自动解释一致性 | ❌ | ✅(防止模型偷换概念) |
🧩 七、总结核心区别一句话
API 是命令接口,MCP 是语义协议。
API 告诉你“做什么”;
MCP 确保“模型为什么要做、能不能做、如何安全地做”。
非常精准的问题 ⚡
“MCP 为何附带了上下文(context)?”
这个其实是 Model Context Protocol 的根本设计哲学所在,
也是它区别于传统 API、RPC、GraphQL 的灵魂部分。
🧩 一句话回答
因为 AI 模型的行为不是“单次请求”,而是“连续推理”。
MCP 附带上下文,是为了让模型在多轮对话、工具调用、任务链中——
保持语义连续性、安全边界与决策可解释性。
🧠 一、为什么传统 API 没有“上下文”
| 特点 | 传统 API |
|---|---|
| 设计对象 | 程序员 / 服务调用 |
| 调用方式 | 无状态(stateless) |
| 每次请求 | 完全独立(不依赖之前对话) |
| 控制方式 | 依靠显式参数和 Token |
| 执行逻辑 | “一次请求 → 一次响应” |
传统 API 假设:
“调用者知道自己要什么,也能准确描述参数。”
但大模型不同:
- 它在推理中逐步形成意图;
- 可能会调用多个工具;
- 它的“目标”与“中间动作”是动态生成的;
- 而且模型没有持续的“内部记忆”。
所以,如果没有“上下文”,模型就会迷失在自己的调用里。
🧬 二、MCP 附带上下文的核心原因(3个层面)
1️⃣ 语义连续性
模型每一步调用,都建立在之前理解、用户目标、工具反馈之上。
MCP 通过上下文字段让每次调用都能继承这条语义链。
例如:
1 | { |
→ MCP Server 能理解:这是一次“同一任务链的下一步”,不是新的随机请求。
2️⃣ 安全与权限跟踪
MCP 的上下文不仅包括语义,也包括:
- 用户身份 / 授权
- 当前会话风险等级
- 操作范围限制(scope)
这样可以做到:
- “AI 调用文件系统”时,知道当前是谁授权的;
- “上一步批准删除 temp 文件”,本步不能突然删除
/root; - “任务处于高风险态”,需要再次确认。
→ 即 上下文 = 安全护栏。
3️⃣ 可解释性与审计
上下文让整个推理-执行链可追溯:
1 | User Intent → AI Reasoning → MCP Tool Calls → Responses → Final Action |
每个环节都记录在 context trace 里,
你可以事后回溯模型当时的想法、调用理由、执行内容。
这在 AI 安全和可信执行中极其重要。
⚙️ 三、MCP 上下文的结构(示例)
1 | { |
MCP Server 收到这个请求,可以:
- 判断是否越权;
- 在正确容器中执行;
- 返回结果并带上审计信息。
🔄 四、上下文如何影响模型行为(实际效果)
| 没有上下文 | 有上下文 (MCP) |
|---|---|
| 模型调用一次 API 后忘记目标 | 模型能连续执行多步推理 |
| 无法记住用户的授权范围 | 每步调用自动继承 scope |
| 容易重复或冲突执行 | 能自我协调、跳过已执行步骤 |
| 无法审计模型意图链 | 审计清晰,可解释与回溯 |
🧰 五、上下文的三大类型(在 MCP 中)
| 类型 | 内容 | 作用 |
|---|---|---|
| 语义上下文 (Semantic Context) | 用户意图、对话历史、前序工具调用 | 保证推理连续性 |
| 安全上下文 (Security Context) | 授权信息、风险等级、操作范围 | 防止越权、误操作 |
| 执行上下文 (Execution Context) | 工具状态、运行容器、缓存、锁 | 保证正确执行与复现性 |
🧩 六、类比帮助理解
| 类比 | MCP 上下文的作用 |
|---|---|
| 🧠 大脑记忆 | 让 AI 知道自己在干什么 |
| 🔒 权限令牌 | 限制 AI 行为的边界 |
| 📜 行动日志 | 保证后续步骤能被审计与解释 |
| 🧭 工作流上下文 | 让任务链能继续执行下去 |
🧠 七、总结一句话
MCP 附带上下文,是因为 AI 的调用不是一次请求,而是一次“语义任务链”。
上下文让 MCP 能做到:
- 让模型知道自己在哪个任务阶段(连续性);
- 让系统知道模型能做什么(安全性);
- 让开发者知道模型为何这样做(可解释性)。
“为了安全,可以考虑在 MCP 里支持 schema”
正是目前 MCP(Model Context Protocol)未来演进的关键方向之一。
我们可以这样理解:
Schema 是 MCP 安全与可信语义的“宪法”。
它不仅描述“能调用什么”,还定义“能怎么调用”“返回什么”“谁能调用”。
🧩 一、为什么 MCP 必须支持 Schema
传统 API 通过 OpenAPI / GraphQL SDL 等 schema
→ 约束人类开发者的调用方式。
但在 MCP 中,调用者是 AI 模型。
模型不会“遵守约定”,它会:
- 自动生成参数;
- 推理目标;
- 有时理解错误(或恶意提示攻击被诱导执行高危操作)。
👉 因此,我们不能只靠接口签名约束,而要靠 schema 层面的强验证 来:
- 防止模型生成不合规请求;
- 限定高风险字段、参数范围;
- 让主机能语义验证调用是否匹配意图。
🧠 二、MCP Schema 的三重作用
| 作用层 | 目的 | 示例 |
|---|---|---|
| ① 接口定义层 | 规范工具的输入输出结构 | 类似 OpenAPI / JSON Schema |
| ② 安全策略层 | 声明权限、风险等级、校验规则 | 限制模型可用参数范围 |
| ③ 语义绑定层 | 绑定自然语言意图 ↔ 操作定义 | 防止“偷换概念”式欺骗 |
⚙️ 三、MCP Schema 的可能结构设计(示例)
1 | tool: delete_files |
📍 功能说明:
schema.input:定义输入参数格式与正则约束。schema.output:定义返回值结构。schema.security:描述安全策略与执行条件。
🧰 四、在执行流程中的作用
1 | 大模型 → 生成 MCP 请求 |
这一步是 “语义级防火墙”:
- 模型说“删除无用文件”,系统检查路径
/home/user❌ 不在/tmp/内 → 拒绝执行。 - 模型参数不匹配 schema → 拒绝。
🔒 五、MCP Schema 的安全增益
| 风险类型 | Schema 防护方式 |
|---|---|
| 参数注入 / 越权 | 字段约束 + 正则匹配 |
| 高风险操作伪装 | 风险级别标签 + 人类确认机制 |
| 语义欺骗 | 意图 → 操作映射验证 |
| 数据泄露 | 输出字段过滤 |
| Prompt 注入 | 仅接受 schema 合规字段 |
🧩 六、MCP Schema ≠ OpenAPI
区别如下:
| 维度 | OpenAPI / REST | MCP Schema |
|---|---|---|
| 使用者 | 人类开发者 | AI 模型 |
| 验证目标 | 语法合法性 | 语义与安全一致性 |
| 安全模型 | Token / OAuth | 语义约束 + 风险控制 + 审计 |
| 表达能力 | HTTP 请求结构 | 工具意图、权限、执行沙箱等 |
| 调用上下文 | 无状态 | 继承上下文(Conversation + Intent) |
🧠 七、MCP Schema 与上下文结合
Schema 可以与 context 配合使用:
1 | { |
系统自动:
- 依据上下文检查权限;
- 依据 schema 校验参数;
- 审计执行。
最终 → 形成 安全上下文 + schema 双约束机制。
🧭 八、类比理解
| 类比 | 意义 |
|---|---|
| 🧩 Schema 是“合同” | 定义 AI 工具能干什么、怎么干 |
| 🔒 Context 是“执行现场” | 记录当时谁、为什么、在什么环境下执行 |
| 🧠 MCP 是“智能中枢” | 让模型基于这两者安全地调用外部世界 |
💡 九、可视化结构(逻辑层)
1 | ┌─────────────────────────────────────┐ |
🧠 十、总结一句话
Schema 是让 MCP 可验证、可控、可解释的关键机制。
它让大模型的“语义自由”
→ 被约束在安全、透明、可审计的框架之中。
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏