本课重点
公开教程 · 无需登录

本课重点

本课要掌握六个知识点,落到两个交付上:一个能暴露工具的服务器,以及宿主里把它接进对话的那段编排。下面依次列出知识点、交付内容与验收口径。

1本课要掌握的六个知识点

六个知识点,前三个讲「工具怎么接上来」,后三个讲「接上来以后要补什么」。

  1. 协议分层。MCP 分能力、传输、报文三层:换掉其中一层,另外两层不必改动。这也是它把集成复杂度从乘积降为求和的原因。
  2. 工具声明。一个工具由名称、说明、输入结构三项描述,三项都来自发现结果。说明决定模型会不会选它,结构决定参数能不能被校验。
  3. 候选集与最小权限。一次请求只带必要的工具:先按用途划定上限,再让模型在上限之内自主决定。
  4. 调用循环。决策归模型、执行归宿主;结果作为工具消息回传后可再来一轮;必须有轮次与累计次数上限,超限后优雅降级而非报错。
  5. 信任边界。工具返回是数据不是指令,落在数据位;工具说明同样是攻击面。防线分软硬:位置与检查降低概率,授权与配额拦住动作。
  6. 可观测性。一次调用一条记录,要能回答五个问题;日志、指标、追踪三层各有分工,本课做到第一层。
登记服务器 名称 / 地址 令牌存服务端 连接并发现 握手 + 列工具 存下工具清单 技能划定 tool@server 保存前校验 工具声明 随提问发模型 三项来自发现 执行并回传 带令牌调用 可循环多轮 留下记录 成功/被拒/出错 可查可回放 前三步是教师的一次性配置;第四、五步随每次提问发生,且可能循环多轮;第六步由执行环节自动写入
前半段定的是「最多能用哪些工具」,后半段才是「这次到底调了什么」——前者由配置决定,后者由模型在候选集内决定、宿主执行。

2要交付什么

两端各一个:一个正确实现协议的服务器,一段实现编排的宿主代码。

交付物需包含什么完成后的可验证点
一个 MCP 工具服务初始化握手、列出工具、执行工具三个方法;至少两个可调用的工具;对令牌做校验带令牌能列出你写的工具名、能调用并返回文本;令牌错则被拒
宿主侧的登记与连接登记服务器、在连接时完成握手与发现、把清单整体替换后标记为已连接连上自建服务能看到它暴露的工具;失败时停在未连接并给出可读原因
宿主侧的调用编排生成工具声明、解析模型提出的调用、按结构校验后执行、结果检查后回传、循环与上限命中工具时回答明显用到了工具返回;两步任务能连续发起两轮
界面与记录调用事件先于正文;每次调用留一条记录回答开始前就能看到「用了哪个工具」;记录中三种结果各能看到一条
工具只给提示、不给最终答案,与第 5 课「解题引导」的口径一致。令牌只写在环境变量中,不写进代码、不进容器镜像。

3验收标准与验证方法

每条标准都配一个可当场完成的验证动作。

验收标准验证方法
服务器可登记且令牌不回传登记一台服务器:响应里只有「是否已配令牌」这个标记为真,没有令牌这一项
连接可发现工具点「连接并发现」,能看到它暴露的工具清单;把地址或令牌改错,连接失败且提示可读
断开后不可再调用断开后清单清空;用引用了它上面工具的技能提问,本次调用被记为「被拒」
引用在保存前校验写入一个不在清单中的工具名,或指向未连接的服务器,保存被拒并给出可读的错误提示
模型提出的调用被正确执行用适用条件里的词提问:调用事件里出现该引用与状态,回答明显用到了工具返回的提示;参数由模型填写、宿主按同一结构校验
循环有终止也有上限需要两步工具的问题能连续发起两轮调用;把轮次上限调小后,超限即停止调用,改用已有信息作答
越权调用不静默成功调用未连接服务器上的工具:记录里出现「被拒」;调用已被删除服务器上的工具:应答里该引用为「被拒」
调用可追溯记录含工具引用、服务器名、状态、用户与时间;三种结果各能看到一条