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 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。

术语与运行合同

本页不变量是:协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致。任何“成功”结论都要保存以下证据:协议版本、能力协商、tools/list、调用请求、用户确认、结果与权限日志,模型生成的计划或自信不能替代环境事实。

关键机制与可推翻实验

MCP 标准化连接而非信任

协议统一发现和调用方式,但不会自动证明 server、工具或结果安全。

动手验证:接入同名恶意 server,确认 Host 仍执行来源和权限校验。

三类原语控制权不同

prompts 由用户选择,resources 由应用管理,tools 可由模型请求。

动手验证:为三类原语分别写 UI 与授权测试。

初始化先协商能力

客户端不能假设所有 server 都支持工具、订阅或列表变更通知。

动手验证:移除 tools capability,验证客户端隐藏相关操作。

工具调用需要可见确认

高风险操作应展示工具、参数和影响范围,允许用户拒绝。

动手验证:对写文件和发消息样本检查确认与取消路径。

先预测,再操作三类证据

分步1 / 3

1. 架构与复杂度边界

在“MCP:模型上下文协议”中切换简单基线、受控工作流与自主循环,先预测“按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作”在哪个阶段需要增加控制权,再比较延迟、成本、可观测性和自主性。

Architecture decision laboratory

MCP:模型上下文协议

按 MCP 的 host、client、server 与三类原语边界集成外部上下文和动作

复杂度档位

不变量:协商后的能力、原语控制权和用户确认策略必须在每次调用中保持一致

受控工作流:只激活能够由收益证明的阶段1连接初始化2能力协商3发现原语4用户确认5调用与结果蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:协议版本、能力协商…
自主性46
延迟52
成本48
可观测78

最小可运行实现

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、调用请求、用户确认、结果与权限日志。

阅读导航

← 设计好用的工具 · 工作流 vs 智能体:何时用哪个 →

讨论

评论区加载中…