MCP 解决的是什么问题
MCP 提供应用与外部资料、工具之间的协议契约。Host 是面向用户的应用,client 负责协议交互,server 暴露能力;连接成功不代表所有资料或操作都已获得授权,也不等于模型增加了新的权重知识。
必须掌握的模块
| 模块 | 核心知识点 |
|---|---|
| 角色 | host/client/server 的责任与信任边界 |
| 消息 | 请求、响应、通知、ID、错误和结构化结果 |
| 版本 | 精确协议 revision、SDK 支持范围和不兼容处理 |
| 能力 | resources、prompts、tools 等声明与发现 |
| 工具 | tools/list、tools/call、input/output schema、调用错误 |
| 授权 | 认证身份、scope、目标资源、token audience |
| 生命周期 | 超时、取消、连接与业务状态的区别 |
| 用户控制 | 操作可见性、拒绝能力、按动作风险设计控制 |
资源提供资料,prompt 提供可复用交互模板,tool 提供可执行操作;这些协议分类不能代替服务端业务鉴权。工具返回的描述和内容也不能被当成更高优先级指令。
新旧版本不要混用
本笔记固定核对 2026-07-28 规范。新版以每个请求的元数据传递协议版本、客户端身份信息和能力;更早版本采用基于初始化的流程。官方 versioning 章节有兼容矩阵。实现前应核对 client/server/SDK 的共同支持版本,不能把旧教程中的 initialize 示例无条件套到新版。
连接或进程本身不是用户会话。即使在同一个传输上处理多个请求,也要按实际身份、授权与业务上下文隔离。MCP 授权安全规范要求关注 token audience、权限范围和混淆代理等问题;本文只整理知识点,不提供认证实现。
练习与完成标准
为只读笔记查询写 client/server 的责任表,标明版本核验入口、工具 schema 与未授权时的行为。设计“连接已建立但无权限”“协议版本不兼容”“参数合法但对象越权”三条测试预期。本次未安装 MCP server 或执行协议实验。
复习问题
- 工具发现与工具授权有什么不同?
- 为什么连接身份不能直接当作业务用户身份?
- 旧初始化教程与 2026-07-28 规范冲突时,应该核对什么?
阅读依据与核验范围
2026-10-07:AI 助手协助原创整理,核对以上 GitHub 章节;示例与练习为本站设计,未执行的任务不作为实验结论。
原始资料与核验依据
- MCP 官方规范:版本、工具与授权modelcontextprotocol 及课程/项目贡献者 · 默认分支 main · commit 0a11bf68c7ec · 核验 2026-10-07 · 访问于 2026-10-07
继续探索
哪些笔记引用了这里
学习路径:Agent 工程进阶 从执行到持续改进
第 5 / 8 步 · 验证任务:区分发现与授权,列出当前接口版本、执行参数及权限检查。
学习路径:RAG 与智能体工程:从资料到可验证执行
第 10 / 14 步 · 验证任务:核对协议版本,设计版本不兼容和对象越权的测试预期。