第 27 课 · 多模态与推理
MCP:请求、权限与返回怎样对上
请求格式正确,为什么仍不能直接说查询已经完成?
学完这一课,你能做到什么
- 给校园查询的Host、Client、Server定位。
- 检查字段、权限和返回对应关系。
- 把固定样例重放和真实调用分开记录。
网站对应:MCP 与 AI 工程生态。按网站显示顺序编为第 27 课。
先预测 · 操作材料 · 改变条件
请求与返回对应检查
原创校园报文固定材料。页面只解析、比较文本,不访问服务器。
本地报文校验与固定材料重放,未连接MCP
- 先找工具名、资料编号与请求编号。
- 运行检查,分别看结构、权限、id和正文资料。
- 每轮只改一个条件,保留前后结果。
先记录你的预测,再点击运行。每次结果都由本课程序根据当前输入生成。
本次过程与结果
对照上一次运行结果
留下自己的解释
文字只保留在当前页面,离开前可导出;工作纸还有本课的具体记录题。
教师可以怎样一步步讲
完整教师讲稿
第27课|MCP:请求、权限和返回怎样对上
本课建议60分钟。学生应已知道模型可以提出工具调用,但不要求会安装服务或编写网络程序。今天沿一条校园规则查询,弄清楚谁请求、谁传递、谁返回,以及怎样避免把一段正确格式的文字误报为实际执行成功。
教师备课:先准备能核对的材料
用户只问“最多能同时借几件器材”,对应课堂资料编号D2。规则与报文都是教师原创固定材料,不是真实校园规定,也不是从实际MCP服务获得的日志。浏览器实验会真的解析JSON、判断字段、比较编号,但不会联网调用任何服务器。固定材料重放与真实服务执行必须分别说清。
页面有请求JSON、当前权限、固定响应JSON三个输入。按钮叫“检查报文与对应关系”。教师先运行默认值:请求编号3,查询工具lookup_rule,参数doc_id为D2;响应编号3,正文以D2开头,写最多两件;权限仅允许规则读取。确认能看到分项结果后,把投影回到输入区域,先不把结果给学生。
版本依据是2026年7月28日版官方架构。这里选择已准备使用工具时的tools/call字段子集,不实现完整的发现、传输、身份认证和错误规范。不能把这份页面说成MCP兼容性认证工具。学生以后接入真实应用,要查双方实际支持的版本,而不是把任何年代的示例混用。
板书分四栏:用户当前目标、请求里写了什么、允许做什么、实际得到了什么。右下角另留一个“证据状态”格,区分设计、固定材料检查、真实运行。有账号或插件并不是本课先修,不为做这次练习安装陌生服务。
0—5分钟:先用普通话画清查询
教师说:“你正在用学习助手,想知道器材上限。规则不在当前对话里,而在另一个程序中。助手要拿到什么,才能有依据地回答?”学生先在Q0写规则原文、条款编号或资料出处。教师暂时不要求出现英文名。
展示三张角色卡:用户看到的学习助手、助手里面负责连接规则程序的部分、提供规则的程序。让学生画三个框,标出资料真正放在哪里。问:“显示对话框的程序和保存规则的程序,必须是同一个吗?”这帮助学生先理解分工,再接受术语。
如果学生把三个框都写成大模型,追问:“普通数据库能否原样返回一条已存在的规则?这个动作一定需要再生成一段新语言吗?”重点不是否定模型作用,而是让他看见完整应用包含模型、界面、通信和数据等不同部分。不能把所有组件都统称会思考的模型。
5—10分钟:给三个角色补上名称
教师把应用框标Host,连接组件标Client,提供能力的程序标Server。说:“Client在这张协议图里指软件组件,不是坐在电脑前的用户。Host管理一个或多个这样的连接部分;Server可以是本地程序,也可以在远端,并不等于一台独立物理机器。”
让学生在两个方向上画箭头:去程写请求,回程写结果。规则原文放在提供方旁,最终面向用户的回答放在应用旁。教师问:“哪个框最适合处理用户现在允许做什么?哪个框实际提供内容?”讨论分工即可,不要求用一张入门图覆盖所有认证部署。
若学生说“协议就是模型”,教师请他指哪段规则负责产生语言。我们的请求格式只约定怎样表达调用与结果,没有凭空提供一个会回答问题的模型。软件可以用普通程序提供资料,Host再决定怎样使用它。
10—15分钟:工具、资源与提示各自提供什么
三张能力卡分别写:lookup_rule接受文档编号并返回条款;school://rules/D2表示一份可读取资料;“回答时列出条款编号”的模板提供一种表达结构。先按执行动作、读取上下文、复用提示分组,再补Tools、Resources、Prompts名称。
教师问:“看到工具清单,是否代表工具已经执行?看到资源名称,是否代表正文已经进入对话?选择模板,是否代表模型已经回答?”让学生分别指出还缺的动作。今天页面只沿lookup_rule这一条工具路径,其余卡片用于分类,不会真的读取URI或执行模板。
工具和资源都可能用于读取数据,不能只凭名字推断是否有副作用。应该读能力说明、参数和允许范围。把所有能力都叫插件可以方便聊天,却不利于检查真实行为;本课要求学生能描述具体拿到的是动作、资料还是表达方式。
15—20分钟:把请求读成一张结构化便条
打开完整请求JSON,先说明这是一种按键和值组织资料的格式。双引号、花括号与逗号帮助程序识别结构,不需要学生背全部语法。教师先读method的值tools/call,再带学生找到params.name里的lookup_rule,以及arguments.doc_id里的D2。
接着指id为3:“这个数是便条编号,帮助请求和返回互相对应。它不是第三条校规,不是第三代模型,也不能自行解释成资料更新时间。”让学生用两种颜色圈请求id与资料编号,避免把3和D2混为一件事。
最后定位_meta中的版本信息。本例标2026-07-28,它说明本份材料按哪版约定表达。填对日期并不自动证明真实客户端、Server和传输方式兼容。教师在板书写“字段表示什么”而不只写字段名,学生应能用一句话读出整张请求:调用哪个工具,查哪份资料,怎样与返回对应。
20—25分钟:检查结果分项读,不能只看成功字样
先让学生写预期,再点击“检查报文与对应关系”。从请求结构、权限、响应id、正文资料标识四处逐项读。问:“为何要分开显示?如果其中一项不满足,处理办法是否相同?”让学生认识格式错误、没有权限、消息对错与内容错页不同。
默认能展示固定D2正文。教师明确说:“浏览器没有访问规则Server,只解析和比较了两段给定文本。它实际完成了检查,但没有完成真实MCP调用。”学生写“查询服务返回两件”时,让他把证据名称改成“固定响应写两件”,保留数值但纠正动作状态。
同学可能觉得这区别太细,教师举例:“如果我先写好一张快递签收单,格式完全正确,能证明包裹送到了吗?”类比只帮助区分文本凭证与事件,不代表MCP就是物流系统。回到页面,我们可以证明哪些字段匹配,却缺真实连接和执行的证据。
25—30分钟:只改请求编号,看返回是否还对应
让学生只把请求id从3改8,响应仍为3。其他字段不变,先写预测后运行。要求定位失败提示,不能只记运行失败。教师问:“正文即使很像我们需要的内容,编号不对应是否可以跳过?”让学生指出归属证据不足。
完成后恢复默认,再保存这一轮请求与结果。每次只改一个条件,才能知道变化来自哪里;如果权限、正文与id一起改,就难以解释因果。真实应用有并发、重试等更多过程,本页只是一个最小对应关系,不因此声称已覆盖全部事件追踪。
若学生把请求和响应id同时改成8,结果可能又通过。教师不要简单判他操作错,而是问:“你现在做的是原题要求的一处变化,还是另一种条件?请先完成只改请求的对照,再把双改作为补充记录。”这样保留探索,但不让探索替代题设验证。
30—35分钟:结构对了,权限仍可能不允许
恢复默认报文,将权限选为没有读取权限。先预测,再运行。教师问:“我们没有改JSON结构,为什么流程仍然停止?”期望学生指出许可条件独立存在,而不是归因工具突然不认识JSON。
权限下拉框是课堂给定条件,并非真实身份认证。现实应用需要在Host、服务等边界落实允许范围,不能让请求者在参数里写一句允许就自授权限。格式检查通过说明便条会写,不等于用户已授权这件事,也不等于服务愿意执行。
教师追问:“用户只要查公开规则,需要获得发送名单或删除文件的权限吗?”让学生把所需最小动作写清。没有许可时不能通过换名字或调整话术绕过;应回到任务范围,明确尚缺哪项配置或授权。页面这一轮不会展示固定正文,用可见的停止位置帮助理解。
35—40分钟:消息对应还不够,正文要适合当前问题
恢复读取权限,只把请求doc_id从D2改D3,固定响应正文仍以D2开头。先预测哪一项可能改变,再运行。D3在课堂允许参数中,所以结构可以通过;id也可能相等,但正文资料标识没有跟着变。
教师说:“这说明协议字段与内容适用性是不同层。返回文本可能错页、过时或缺少条件,格式正确不能保证事实正确。”学生填写请求资料、返回资料、需要怎样核查三栏。问真正D3内容是什么时,当前材料没有提供,就不能从D2推测。
如果学生直接把正文前缀D2改成D3以消除提示,教师问:“只是改标签,是否改变了资料真实来源?”本页只能检测文本标识,无法凭几行字保证资料真实性。课堂题的完整D3内容会在下一段提供;现实场景必须查实际来源,不能通过修饰显示内容制造正确证据。
40—45分钟:把错误报告写得能让别人接手
比较三句话:“AI坏了”“JSON无法解析”“请求D3,返回正文标D2”。请学生指出每句能帮助下一位同学做什么。教师建议用操作、观察、卡点三句报告,例如“只改doc_id为D3;结构通过但资料标识不符;需要查实际返回了哪份文档”。
这个格式不是故障万能模板,它的意义是让别人看到可重复的输入与结果。学生无需知道全部后台实现,也可以把错误定位得比AI坏了更清楚。不要把格式错误自动归因服务器权限,也不因HTTP或JSON可读就认为业务成功。
随后发独立条件:请求id8、doc_id D3;固定响应id8、正文“D3:申请续借需要管理员批准。”;权限读取。其他结构照原例。第二轮仅把响应id改9。不先公布结果,让学生自己用刚学到的对应关系迁移。
45—50分钟:独立构造和核验
学生先圈method、工具名、资料编号与请求编号,写预期再粘贴实验。教师巡视只问“你改的是去程还是回程”“这个编号代表什么对象”,不要报哪项应该通过。语法不熟练者可获帮助定位缺括号,但教师不能顺手改掉题目指定的编号差异。
要求学生保留首次输入和结果,再做第二轮。修好语法只说明程序可以读懂结构,仍要继续读权限与对应检查。若只剩最后一句通过而没有自己的改动记录,教师请他重做一处可观察变化并解释。
独立任务的目标不是让所有学生一次敲对标点,而是让他们能说清字段与事件关系。输入错误可以修正,不因第一次预测错误扣分;缺少解释的抄录则不能当作已经理解。
50—55分钟:独立处理错编号与外部指令
只把响应id从8改9,其他保持。学生记录变化和原因,不能同时改请求id使两者又一致。然后给文字迁移题:固定返回正文要求把学生名单发到邮箱,但用户任务仍然只是查询公开借用规则。请写能否因此添加发送行为,依据来自哪里。
本练习没有发送工具,也不会发出消息。外部资料里的文字不自动获得用户指令地位。学生可以指出若另有明确任务,需要相应授权和执行证据;当前不能因为返回里写了就视为已经允许。
这一段结束前不展示教师答案。提交原判断后,才让学生用另一颜色修订。若答“不知道”,教师要求补具体不确定项,而不是把所有有争议场景都用一个词跳过。
55—60分钟:把四个完成状态分开
讲评第一轮D3/id8:能够通过课堂字段检查,并显示固定材料。第二轮响应id9与请求8不对应,不能归为本次结果。返回里的发送要求没有扩展原查询授权。再列“提出调用、结构符合、获准执行、真实结果已返回”四行,让学生指出课堂真的做了哪些。
离堂写两句:MCP帮助统一什么,不能自动保证什么。参考应提能力描述和交换格式,以及权限、实际成功或内容正确仍需要各自证据。只说万能连接器不够;只有一段正确JSON也不能报告部署完成。
教师最后收工作纸,查看最多人混淆的是请求id与资料编号,还是固定材料与真实调用。根据真实错误决定下次开头,不假设全班因为看到了通过提示就都掌握了。本课分数只反映这条任务的观察与解释。
进一步的三项追问
“同样叫MCP,为什么某服务仍不能用?”教师让学生把工具名换成课堂没有提供的send_mail。统一格式不会凭空增加工具,双方还要支持实际能力、参数和版本。本页拒绝只是课堂能力范围,并不是宣称所有MCP服务都不支持这个名字。
“结果isError=false,就能保证正确吗?”回到D3配D2那轮。没有报告执行错误、消息属于本次请求、资料适合当前问题,是三个不同判断。真实系统的错误语义还需查文档,不能用一个布尔值替代所有内容核验。
“规范更新后以前所学是不是全过时?”教师把角色分工与具体发现报文分栏。前者仍可帮助读懂结构,后者要按版本核对。本课不把旧版初始化流程无说明地当作新版规范,也不让学生为了入门就背所有版本差异。
后备和课后真实连接
浏览器不可用就打印两段报文,圈字段并逐项比较,记录纸面检查。希望做真实连接的班级由教师另行准备只读公开资料环境,给出客户端与服务版本、能力清单、许可范围和日志位置。学生实际查询后保存真实返回;只有配置文件、工具菜单或示例截图不能算调用成功。
安装、接入和认证另计时间。服务失败就保留失败位置,不能把固定样例改名为成功结果。本节准备的材料不含真实名单与密钥,也没有必要把这些私人数据粘进校验器。
来源与范围
MCP官方架构,2026-07-28版,本轮读取日期2026-09-10。校园工具、D2/D3文本与本地检查器是原创教学材料,只校验课堂选定字段,不实现全部发现、传输、认证或协议兼容性测试。
60 分钟安排
每行给出具体讲解、学生动作和可检查的结果。根据学生反应调整,尚未真人计时试教。
| 时间 | 教师讲解与操作 | 学生动作 | 检查依据 |
|---|---|---|---|
| 00:00— 01:00 | 读器材上限问题。 | 写需要规则原文或出处。 | 校园查询:写需要规则原文或出处。的本人记录可核查。 |
| 01:00— 02:00 | 问回答需要什么规则证据。 | 圈用户只读目标。 | 校园查询:圈用户只读目标。的本人记录可核查。 |
| 02:00— 03:00 | 给三角色卡。 | 排列应用、连接、规则程序。 | 校园查询:排列应用、连接、规则程序。的本人记录可核查。 |
| 03:00— 04:00 | 让学生先画普通方框。 | 画三个框。 | 校园查询:画三个框。的本人记录可核查。 |
| 04:00— 05:00 | 把资料与答案放回链路。 | 标资料所在框。 | 校园查询:标资料所在框。的本人记录可核查。 |
| 05:00— 06:00 | 补Host名称。 | 标用户界面所属Host。 | 角色分工:标用户界面所属Host。的本人记录可核查。 |
| 06:00— 07:00 | 说明Client是软件组件。 | 标连接部分。 | 角色分工:标连接部分。的本人记录可核查。 |
| 07:00— 08:00 | 说明Server可本地或远端。 | 标能力提供者。 | 角色分工:标能力提供者。的本人记录可核查。 |
| 08:00— 09:00 | 问返回规则是否要另一模型。 | 写普通程序如何提供资料。 | 角色分工:写普通程序如何提供资料。的本人记录可核查。 |
| 09:00— 10:00 | 画去程与回程。 | 给箭头标请求/结果。 | 角色分工:给箭头标请求/结果。的本人记录可核查。 |
| 10:00— 11:00 | 读lookup_rule动作。 | 记工具输入doc_id。 | 能力类型:记工具输入doc_id。的本人记录可核查。 |
| 11:00— 12:00 | 读资源标识。 | 记资源提供上下文。 | 能力类型:记资源提供上下文。的本人记录可核查。 |
| 12:00— 13:00 | 读引用模板。 | 记模板组织表达。 | 能力类型:记模板组织表达。的本人记录可核查。 |
| 13:00— 14:00 | 问描述和执行的区别。 | 写还缺的动作。 | 能力类型:写还缺的动作。的本人记录可核查。 |
| 14:00— 15:00 | 选择今日工具路径。 | 圈今天会检查哪条路径。 | 能力类型:圈今天会检查哪条路径。的本人记录可核查。 |
| 15:00— 16:00 | 解释JSON键和值。 | 在完整材料圈一组键值。 | 默认请求:在完整材料圈一组键值。的本人记录可核查。 |
| 16:00— 17:00 | 定位method。 | 写tools/call的作用。 | 默认请求:写tools/call的作用。的本人记录可核查。 |
| 17:00— 18:00 | 定位name及arguments。 | 写lookup_rule与D2。 | 默认请求:写lookup_rule与D2。的本人记录可核查。 |
| 18:00— 19:00 | 区分id3与D2。 | 用两色标两个编号。 | 默认请求:用两色标两个编号。的本人记录可核查。 |
| 19:00— 20:00 | 定位版本元信息。 | 记本例协议版本及子集范围。 | 默认请求:记本例协议版本及子集范围。的本人记录可核查。 |
| 20:00— 21:00 | 先写四项预期。 | 留下初判。 | 分项核验:留下初判。的本人记录可核查。 |
| 21:00— 22:00 | 点击检查报文与对应关系。 | 运行默认输入。 | 分项核验:运行默认输入。的本人记录可核查。 |
| 22:00— 23:00 | 读结构和权限。 | 填写前两项结果。 | 分项核验:填写前两项结果。的本人记录可核查。 |
| 23:00— 24:00 | 读id与正文标识。 | 填写两种对应关系。 | 分项核验:填写两种对应关系。的本人记录可核查。 |
| 24:00— 25:00 | 说明固定材料未联网。 | 准确记录证据模式。 | 分项核验:准确记录证据模式。的本人记录可核查。 |
| 25:00— 26:00 | 只将请求3改8。 | 确认只改请求id。 | 改请求id:确认只改请求id。的本人记录可核查。 |
| 26:00— 27:00 | 响应不改,先预测。 | 写预期结果。 | 改请求id:写预期结果。的本人记录可核查。 |
| 27:00— 28:00 | 运行定位提示。 | 抄具体错误位置。 | 改请求id:抄具体错误位置。的本人记录可核查。 |
| 28:00— 29:00 | 追问正文合理能否替代对应。 | 写归属证据问题。 | 改请求id:写归属证据问题。的本人记录可核查。 |
| 29:00— 30:00 | 恢复默认并保存。 | 记录前后差异。 | 改请求id:记录前后差异。的本人记录可核查。 |
| 30:00— 31:00 | 默认报文改无读取权限。 | 选none。 | 改权限:选none。的本人记录可核查。 |
| 31:00— 32:00 | 先预测停止点。 | 写哪层可能停止。 | 改权限:写哪层可能停止。的本人记录可核查。 |
| 32:00— 33:00 | 运行观察。 | 记录结构与权限两项。 | 改权限:记录结构与权限两项。的本人记录可核查。 |
| 33:00— 34:00 | 解释模拟权限非真实认证。 | 写真实系统仍需什么。 | 改权限:写真实系统仍需什么。的本人记录可核查。 |
| 34:00— 35:00 | 恢复读取。 | 确认回到默认。 | 改权限:确认回到默认。的本人记录可核查。 |
| 35:00— 36:00 | 请求D2改D3。 | 只改doc_id。 | 改资料编号:只改doc_id。的本人记录可核查。 |
| 36:00— 37:00 | 正文仍D2,先预测。 | 保留初判。 | 改资料编号:保留初判。的本人记录可核查。 |
| 37:00— 38:00 | 运行分列两资料编号。 | 记请求与返回资料。 | 改资料编号:记请求与返回资料。的本人记录可核查。 |
| 38:00— 39:00 | 问格式与事实是否同一检查。 | 写需进一步核查之处。 | 改资料编号:写需进一步核查之处。的本人记录可核查。 |
| 39:00— 40:00 | 不要猜真正D3内容。 | 标缺失资料。 | 改资料编号:标缺失资料。的本人记录可核查。 |
| 40:00— 41:00 | 比较泛称故障与字段定位。 | 选更可核对的报告。 | 独立题准备:选更可核对的报告。的本人记录可核查。 |
| 41:00— 42:00 | 要求操作/观察/卡点。 | 写一份自己的短报告。 | 独立题准备:写一份自己的短报告。的本人记录可核查。 |
| 42:00— 43:00 | 发D3/id8完整材料。 | 读完整新JSON。 | 独立题准备:读完整新JSON。的本人记录可核查。 |
| 43:00— 44:00 | 说明第二轮仅改返回9。 | 圈单一变更条件。 | 独立题准备:圈单一变更条件。的本人记录可核查。 |
| 44:00— 45:00 | 不公布结果。 | 准备个人作答。 | 独立题准备:准备个人作答。的本人记录可核查。 |
| 45:00— 46:00 | 圈关键字段。 | 圈method/name/id/doc_id。 | 独立首轮:圈method/name/id/doc_id。的本人记录可核查。 |
| 46:00— 47:00 | 按材料粘贴。 | 填写两个文本框。 | 独立首轮:填写两个文本框。的本人记录可核查。 |
| 47:00— 48:00 | 先写预期再运行。 | 独立记录预测与结果。 | 独立首轮:独立记录预测与结果。的本人记录可核查。 |
| 48:00— 49:00 | 只帮定位语法不改目标编号。 | 如有语法错误记录修订。 | 独立首轮:如有语法错误记录修订。的本人记录可核查。 |
| 49:00— 50:00 | 保存首次结果。 | 保存原答。 | 独立首轮:保存原答。的本人记录可核查。 |
| 50:00— 51:00 | 只改响应id9。 | 核对请求仍8。 | 独立第二轮:核对请求仍8。的本人记录可核查。 |
| 51:00— 52:00 | 运行后解释变化。 | 写结果归属理由。 | 独立第二轮:写结果归属理由。的本人记录可核查。 |
| 52:00— 53:00 | 读发送名单迁移题。 | 圈原查询范围。 | 独立第二轮:圈原查询范围。的本人记录可核查。 |
| 53:00— 54:00 | 只按用户当前任务作判断。 | 写能否发送及依据。 | 独立第二轮:写能否发送及依据。的本人记录可核查。 |
| 54:00— 55:00 | 提交后再讲评。 | 锁定首次答案。 | 独立第二轮:锁定首次答案。的本人记录可核查。 |
| 55:00— 56:00 | 核对两轮编号。 | 保留修订痕迹。 | 讲评离堂:保留修订痕迹。的本人记录可核查。 |
| 56:00— 57:00 | 说明资料不增授权。 | 核对迁移依据。 | 讲评离堂:核对迁移依据。的本人记录可核查。 |
| 57:00— 58:00 | 列提议/结构/许可/返回四状态。 | 标课堂真正完成状态。 | 讲评离堂:标课堂真正完成状态。的本人记录可核查。 |
| 58:00— 59:00 | 问协议统一与不保证事项。 | 回答Q5两问。 | 讲评离堂:回答Q5两问。的本人记录可核查。 |
| 59:00— 60:00 | 收工作纸安排后续。 | 提交未解问题。 | 讲评离堂:提交未解问题。的本人记录可核查。 |
来源与使用范围
2026-09-10核对官方2026-07-28架构,只验证tools/call课堂字段子集,不实现完整发现、传输或认证。
- MCP官方架构2026-07-28:角色、能力、逐请求版本元信息。