# 第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版](https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture)，本轮读取日期2026-09-10。校园工具、D2/D3文本与本地检查器是原创教学材料，只校验课堂选定字段，不实现全部发现、传输、认证或协议兼容性测试。



## 逐分钟安排

| 时间 | 教师讲解与操作 | 学生活动 | 检查结果 |
|---|---|---|---|
| 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 | 收工作纸安排后续。 | 提交未解问题。 | 讲评离堂：提交未解问题。的本人记录可核查。 |

---

# 第27课答案与10分检查
Q0三角色与方向正确1分。Q1工具/资源/模板作用及描述不等于执行1分。
Q2共3分：lookup_rule查D2，id3用于对应请求（1）；权限与格式独立（1）；默认D2正文来自固定样例，未实际调用（1）。
Q3共2分：请求8配响应3不对应（1）；无权限应停止，D3请求配D2正文需核查内容（1）。
Q4共2分：第一轮D3/id8对应；第二轮返回id9不对应且说明原因（1）；资料文字不增加发送名单授权（1）。
Q5共1分：格式或能力交换与权限、运行成功或内容准确分开。
总10分。预测猜错不扣分；保留原判断与修订，给依据才能通过。未连接真实Server不得写部署或调用成功。字段子集通过不能称完整协议认证。

## 看报文时逐层说明

Q0 中，Host 是承载用户交互与模型使用的应用，Client 是它与一个 MCP Server 通信的协议组件，Server 提供约定的能力。不要把三个角色画成三个必然独立的物理电脑。箭头从应用中的客户端发出请求，再由服务端返回；本页只有这些报文的材料，没有建立实际连接。

Q1 的 lookup_rule 是工具名，表示可请求服务执行规则查询；school://rules/D2 是本课虚构资源标识，指向要提供的上下文资料；按条款引用模板是组织交互的可复用提示模板。看见工具描述不等于工具已执行，看见资源标识也不等于已经拿到正文。还需要合适的请求、允许的权限、实际处理和返回核验。这三类概念不能都写成“模型能调用的函数”。

Q2 请求的 method 是 tools/call，params.name 是 lookup_rule，doc_id 指 D2；顶层 id=3 用于关联这一次请求与返回，不是资料编号。默认响应也标 id=3，文本以 D2 开头，因此在题面的有限规则下对应。权限是单独的选择条件；一个 JSON 格式合法的请求，仍可能没有读取权限。版本元信息按本课核对的协议版本写明，但本页没有覆盖协商、传输、完整能力发现或认证流程。

Q3 第一轮仅把请求改为 id=8，固定响应仍为 3，所以不能把它当作这一请求的对应返回。第二轮请求结构可以通过，但没有读取权限，应在权限层停止。第三轮请求 D3，而固定正文仍写 D2，即便请求和响应的顶层 id 一致，也需要进一步核查资料对象。程序只检查了正文的标识前缀；就算前缀一致，也不证明正文里的借用规则真实有效。

Q4 第一轮请求和响应均为 id=8，内容是 D3 的续借条款，满足本题的对应条件。仅把响应改为 9 后，对应关系失败；不能通过同时改请求来掩盖原来的问题。资料正文里夹带“发送名单”只是资料中的文字，不构成用户对发送行为的授权；公开规则读取也不包含发送学生名单的权限。

Q5 合格总结应将通信约定与业务结果分开：MCP 为不同应用与能力提供者的交互提供共同约定，实际权限、服务可用性、返回内容正确性仍需分别验证。页面出现“通过”时应读完整限定语“课堂子集检查”，而不是改写成已连接 MCP 或整个服务符合协议。
