概览
公开教程 · 无需登录

实现教程

本课讲的是「工具调用」的通用做法:模型为什么需要工具、协议怎么把工具接上来、工具如何转换为模型可理解的工具声明、一次提问中的调用循环如何推进、风险面在哪,以及如何把发生过的调用看清楚。落到交付上,是两端各一个:一个能暴露工具的服务器,与宿主里把它接进对话的那段编排(orchestration,对话中的控制逻辑)。

1先记住三条结论

协议解决的是集成复杂度

MCP 让工具源与应用各自只实现一次:能力、传输、报文三层分开,替换一层,另外两层不必改动。通信的两端都是程序——宿主应用与工具服务器;模型不发报文,它只知道「有哪些工具可用」。

决策归模型,执行与收尾归宿主

工具声明来自发现结果,随提问发给模型;模型输出「工具名 + 参数」,宿主按同一份结构校验、携带令牌执行、把结果作为工具消息回传,可循环多轮。参数校验、逐工具授权、轮次与累计次数上限都由宿主决定——超限后是优雅降级,而非报错。

工具接进来,风险从「文字」升级为「动作」

工具返回与工具说明都会原样进入提示词,两者都是攻击面。位置与句式检查只降低概率,授权与配额才拦得住动作;令牌只在服务端出现,接口响应只回一个「是否已配令牌」的布尔值。

连接阶段:做一次 登记服务器 存下地址与令牌 连接并发现 存下工具清单 划定候选集 先按用途定范围 每次提问:走一遍 取候选工具 转成工具声明 执行调用 留一条调用记录 结果回传 当数据,不当指令 上排做一次,下排随每次提问自动走一遍;服务器断开后,下排的调用立即被拒
上排是配置、下排是运行:两者的频率不同,所以校验与记录的方式也不同。

2六个知识点,分别在哪一页

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

知识点在哪一页要点
协议分层协议的三层能力、传输、报文各管一段,换掉一层不动另外两层
工具声明工具声明与候选集名称、说明、输入结构三项,都来自发现结果而非手写
候选集与最小权限工具声明与候选集先按用途划定上限,再让模型在上限之内自主决定
调用循环调用循环决策归模型、执行归宿主,可多轮,须有轮次与次数上限
信任边界工具带来的风险面返回与说明都是攻击面,防线分软硬,令牌不出服务端
可观测性调用的可观测性一次调用一条记录,回答五个问题;本课做到日志这一层