MCP:模型上下文协议
MCP:模型上下文协议:按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作,通过架构、轨迹和故障重放完成验收。
学习目标
- 能解释“MCP:模型上下文协议”如何按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作
- 能区分Host、Client、Server、Resources、Tools,并指出控制权、数据与副作用边界
- 能固定输入与版本,沿以下证据定位首个分叉:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志
- 能注入“客户端把 server 暴露的模型控制工具当作自动可信操作,绕过用户确认直接写外部系统”,完成阻断、恢复、复位和同输入重放
来源、课程编排与适用边界
“MCP:模型上下文协议”以Anthropic 公开全文《Building effective agents》为总纲,并用MCP 2025-06-18 官方规范核对本单元机制;涉及 MCP 的控制权边界再由MCP 2025-06-18 官方规范交叉检查。
这不是 Anthropic 出版的“19 章教材”。平台把公开文章、官方工具文档与协议规范重组为 19 个应用单元;下列 152 个节点是站内课程地图,不冒充原文目录。正文、代码、图表、实验和练习均为独立教学重写;产品接口、模型行为或协议版本变化时必须重新验证。
本单元的八个课程坐标
- MCP:模型上下文协议:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 1 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 先打个比方:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 2 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第一个概念:MCP 是什么——「AI 接工具」的通用标准:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 3 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第二个概念:MCP 的三层架构——Host / Client / Server:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 4 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第三个概念:一个 Server 能暴露什么——三类能力:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 5 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 动手看:MCP 怎么把 N×M 的乱麻收成 M+N:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 6 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 用代码看一眼:一个 server 怎么声明一个 tool:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 7 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 容易踩的坑:这是“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的第 8 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
术语与运行合同
↡Host:承载模型体验、权限和多个 MCP client 的应用;在“MCP:模型上下文协议”中按以下证据核对:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。、↡Client:与一个 MCP server 维持协议连接的组件;在“MCP:模型上下文协议”中按以下证据核对:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。、↡Server:通过协议暴露 prompts、resources 或 tools 的服务;在“MCP:模型上下文协议”中按以下证据核对:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。、↡Resources:由应用控制并提供给模型的结构化上下文;在“MCP:模型上下文协议”中按以下证据核对:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。、↡Tools:由模型发现和请求调用的可执行函数;在“MCP:模型上下文协议”中按以下证据核对:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。。
本页不变量是:协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致。任何“成功”结论都要保存以下证据:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志,模型生成的计划或自信不能替代环境事实。
关键机制与可推翻实验
MCP 标准化连接而非信任
协议统一发现和调用方式,但不会自动证明 server、工具或结果安全。
动手验证:接入同名恶意 server,确认 Host 仍执行来源和权限校验。
三类原语控制权不同
prompts 由用户选择,resources 由应用管理,tools 可由模型请求。
动手验证:为三类原语分别写 UI 与授权测试。
初始化先协商能力
客户端不能假设所有 server 都支持工具、订阅或列表变更通知。
动手验证:移除 tools capability,验证客户端隐藏相关操作。
工具调用需要可见确认
高风险操作应展示工具、参数和影响范围,允许用户拒绝。
动手验证:对写文件和发消息样本检查确认与取消路径。
先预测,再操作三类证据
1. 架构与复杂度边界
在“MCP:模型上下文协议”中切换简单基线、受控工作流与自主循环,先预测“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”在哪个阶段需要增加控制权,再比较延迟、成本、可观测性和自主性。
Architecture decision laboratory
MCP:模型上下文协议
按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作
不变量:协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致
最小可运行实现
const session = await connect(serverUrl);
const initialized = await session.initialize({
protocolVersion: "2025-06-18",
capabilities: clientCapabilities,
});
if (!initialized.capabilities.tools) return { tools: [] };
const tools = await session.listTools();
return tools.filter((tool) => policy.allowsDiscovery(tool));这段切片只暴露“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”的最小运行合同。交付版本还要补齐超时、密钥隔离、结构化日志、幂等和批量评测;缺少协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志时,代码能运行也不代表本章结论成立。
练习与答案
练习
问题 1:最小证明。 怎样用最少样本证明“协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致”?
问题 2:课程覆盖。 MCP:模型上下文协议、先打个比方、第一个概念:MCP 是什么——「AI 接工具」的通用标准、第二个概念:MCP 的三层架构——Host / Client / Server、第三个概念:一个 Server 能暴露什么——三类能力、动手看:MCP 怎么把 N×M 的乱麻收成 M+N、用代码看一眼:一个 server 怎么声明一个 tool、容易踩的坑如何进入可操作验证?
问题 3:恢复闭环。 怎样证明“客户端把 server 暴露的模型控制工具当作自动可信操作,绕过用户确认直接写外部系统”已经修复?
本章回顾
- “MCP:模型上下文协议”的主问题是按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作。
- 核心不变量是协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致。
- 首要反例是客户端把 server 暴露的模型控制工具当作自动可信操作,绕过用户确认直接写外部系统。
- 最小证据包包含协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- Host
承载模型体验、权限和多个 MCP client 的应用。在“MCP:模型上下文协议”中必须能按以下证据重新定位:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。
- Client
与一个 MCP server 维持协议连接的组件。在“MCP:模型上下文协议”中必须能按以下证据重新定位:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。
- Server
通过协议暴露 prompts、resources 或 tools 的服务。在“MCP:模型上下文协议”中必须能按以下证据重新定位:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。
- Resources
由应用控制并提供给模型的结构化上下文。在“MCP:模型上下文协议”中必须能按以下证据重新定位:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。
- Tools
由模型发现和请求调用的可执行函数。在“MCP:模型上下文协议”中必须能按以下证据重新定位:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志。