第 27 课 · 多模态与推理

MCP:请求、权限与返回怎样对上

请求格式正确,为什么仍不能直接说查询已经完成?

建议 60 分钟先观察再解释本地报文校验与固定材料重放,未连接MCP

学完这一课,你能做到什么

  1. 给校园查询的Host、Client、Server定位。
  2. 检查字段、权限和返回对应关系。
  3. 把固定样例重放和真实调用分开记录。

网站对应:MCP 与 AI 工程生态。按网站显示顺序编为第 27 课。

先预测 · 操作材料 · 改变条件

请求与返回对应检查

原创校园报文固定材料。页面只解析、比较文本,不访问服务器。

本地报文校验与固定材料重放,未连接MCP

  1. 先找工具名、资料编号与请求编号。
  2. 运行检查,分别看结构、权限、id和正文资料。
  3. 每轮只改一个条件,保留前后结果。

先记录你的预测,再点击运行。每次结果都由本课程序根据当前输入生成。

留下自己的解释

文字只保留在当前页面,离开前可导出;工作纸还有本课的具体记录题。

教师可以怎样一步步讲

完整教师讲稿

第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课堂字段子集,不实现完整发现、传输或认证。