关于 canvas-discussion-facilitator
Canvas Discussion Facilitator 是面向学生和教育者的技能,用于通过 Canvas 管理课程讨论。它支持浏览和阅读帖子、起草待确认的回复、创建讨论主题以及查看参与情况。
主要功能
- 01浏览课程和讨论主题
- 02阅读帖子、完整内容和回复
- 03起草待确认的回复和帖子
- 04创建并安排讨论主题
- 05汇总各讨论的参与情况
适用场景
- 01了解讨论帖及其主要观点
- 02起草对同学或学生帖子的回复
- 03找出尚未参与讨论的学生
- 04按发帖设置创建课程讨论
MCP 相关
需要连接 Canvas MCP 服务,并调用其工具读取课程、主题和帖子,以及创建讨论或回复。提交写入操作前须经用户确认。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vishalsachdev/ canvas-mcp --skill canvas-discussion-facilitator安装后在 Claude Code 中输入/canvas-discussion-facilitator确认已加载。
详细介绍
Canvas 讨论版引导助手
在 Canvas LMS 中协助开展讨论版活动——浏览话题、阅读帖子、回复学生、创建新讨论并监控参与情况。适用于学生和教育工作者。
前提条件
- Canvas MCP 服务必须正在运行,并已连接到 Agent 的 MCP 客户端。
- 通过身份验证的用户可以具有任何 Canvas 角色(学生、助教或讲师)。工具访问权限由 Canvas API 权限决定。
- 注意 FERPA 隐私保护(教育工作者):在 Canvas MCP 服务环境中设置
ENABLE_DATA_ANONYMIZATION=true,以匿名化输出中受支持的学生身份字段。此设置本身并不能确保合规。
步骤
1. 确定课程
询问用户要处理哪门课程。接受课程代码或 Canvas ID,也可以让用户从列表中选择。
如果用户未指定课程,请使用 list_courses 显示当前课程,并提示:
我应该查看哪门课程的讨论?
2. 浏览讨论话题
调用 MCP 工具 list_discussion_topics,并传入课程标识符,以获取所有讨论版话题。
参数:
course_identifier——课程代码或 Canvas IDinclude_announcements——设为false(默认值)时仅查看讨论;设为true时也包含公告
每个话题需展示的数据:
- 话题 ID 和标题
- 作者姓名
- 发布日期
- 条目数(如有)
- 话题是否已置顶或锁定
展示列表,让用户选择要深入查看的话题。
3. 查看讨论中的帖子
用户选定话题后,调用 list_discussion_entries 获取帖子。
参数:
course_identifier——课程代码或 Canvas IDtopic_id——所选讨论话题的 IDinclude_full_content——设为true以查看完整帖子正文include_replies——设为true以查看串接回复
每个条目需展示的数据:
- 作者姓名
- 发布日期
- 消息内容(或预览)
- 回复数
- 条目 ID(回复时需要)
4. 完整阅读特定帖子
如果帖子内容被截断,或用户想查看全文,请调用 get_discussion_entry_details。
参数:
course_identifier——课程代码或 Canvas IDtopic_id——讨论话题的 IDentry_id——具体条目的 IDinclude_replies——设为true,同时获取该条目的所有回复
展示完整帖子内容,以及所有回复、时间戳和作者信息。
5. 回复帖子
用户想要回复某个帖子时,调用 reply_to_discussion_entry。
参数:
course_identifier——课程代码或 Canvas IDtopic_id——讨论话题的 IDentry_id——要回复的条目message——回复内容(支持 HTML)
发送前,务必:
- 向用户展示回复草稿以供确认
- 引用原帖,方便用户核对上下文
- 仅在获得明确批准后发送
6. 发布新的顶级条目
用户想要在现有讨论中发布新帖子(而非回复)时,调用 post_discussion_entry。
参数:
course_identifier——课程代码或 Canvas IDtopic_id——讨论话题的 IDmessage——帖子内容(支持 HTML)
向用户展示草稿,并在发布前征求确认。
7. 创建新的讨论主题
当用户需要一个全新的讨论论坛时,调用 create_discussion_topic。
参数:
course_identifier-- 课程代码或 Canvas IDtitle-- 讨论标题message-- 讨论的开场帖/提示词delayed_post_at-- (可选)ISO 8601 日期时间,用于安排讨论稍后显示lock_at-- (可选)ISO 8601 日期时间,用于自动锁定讨论require_initial_post-- 如果学生必须先发帖才能查看同学的回复,则设为truepinned-- 如果要将主题置顶于讨论列表顶部,则设为true
创建前,请与用户确认标题、内容和任何排期选项。
教育工作者使用场景
监控参与情况
- 调用
list_discussion_topics获取课程中的所有讨论论坛。 - 对每个主题,调用
list_discussion_entries获取所有帖子。 - 将发帖者与班级名册交叉核对(使用
list_users或list_submissions获取已注册的学生)。 - 找出尚未在任何进行中的讨论中发帖的学生。
以摘要形式呈现参与情况:
## Discussion Participation: [Course Name]
### Topic: "Week 5 Reading Response" (due Mar 3)
- **Posted:** 28 / 32 students (88%)
- **Not posted:** Student_a1b2c3d, Student_e4f5g6h, Student_i7j8k9l, Student_m0n1o2p
### Topic: "Case Study Analysis" (due Mar 5)
- **Posted:** 15 / 32 students (47%)
- **Not posted:** [17 students listed]
### Students Missing Multiple Discussions
- Student_a1b2c3d -- missing 2 discussions
- Student_e4f5g6h -- missing 2 discussions
发送参与情况提醒
找出未参与的学生后,可以选择:
- 发布公告:使用
create_announcement发布有关讨论截止日期的一般提醒。 - 联系特定学生:使用
send_conversation联系参与情况落后的学生。
撰写有深度的回复
当教育工作者想要回复学生帖子时:
- 使用
get_discussion_entry_details阅读完整帖子(包括回复,以了解上下文)。 - 撰写回复,认可学生提出的观点、提出后续问题,或将观点与课程材料联系起来。
- 在调用
reply_to_discussion_entry前,将草稿交由教育工作者审核和修改。
学生使用场景
浏览讨论并了解进展
- 调用
list_discussion_topics查看所有进行中的讨论。 - 调用
list_discussion_entries并设置include_full_content=true,阅读帖子。 - 总结各帖子的关键主题或论点,帮助学生快速了解讨论进展。
回复同学
- 使用
get_discussion_entry_details阅读目标帖子。 - 帮助学生撰写能够切实回应原帖内容的回复。
- 确认后,通过
reply_to_discussion_entry发送。
发布新帖子
- 使用
list_discussion_entries查看现有帖子,避免重复已有观点。 - 帮助学生撰写能提出独特视角或推动讨论的帖子。
- 确认后,通过
post_discussion_entry发送。
使用的 MCP 工具
| 工具 | 用途 |
|---|---|
list_courses | 查找目标课程 |
list_discussion_topics | 浏览课程中的所有讨论论坛 |
list_discussion_entries | 查看讨论主题中的帖子 |
get_discussion_entry_details | 阅读单个帖子的完整内容和回复 |
get_discussion_topic_details | 获取讨论主题的元数据 |
reply_to_discussion_entry | 回复现有帖子 |
post_discussion_entry | 在讨论中添加新的顶层帖子 |
create_discussion_topic | 创建新的讨论论坛 |
create_announcement | 发布课程公告(教育工作者) |
send_conversation | 通过 Canvas 向特定学生发送消息(教育工作者) |
list_users | 获取已注册学生,以跟踪参与情况(教育工作者) |
最佳实践
- 回复前先阅读。 起草回复前,务必阅读帖子的全部内容及其回复。这样可以避免重复已有观点,也能体现你对讨论的投入。
- 检查是否有类似帖子。 发布新内容前,先浏览现有帖子,避免重复他人已经表达的观点。应在现有论点的基础上继续讨论,或以尊重的方式提出不同看法。
- 引用具体内容。 回复时,引用或转述原帖中的具体内容。这样能让回复更有实质内容,也能体现你认真阅读过原帖。
- 发送前确认。 调用任何写入工具(
reply_to_discussion_entry、post_discussion_entry、create_discussion_topic、create_announcement)前,务必先向用户展示草稿并征得批准。 - 遵守讨论设置。 某些讨论要求先发布初始帖子,才能查看其他帖子(
require_initial_post)。如果学生看不到其他帖,就需要先发帖。 - 留意时间安排。 检查主题的
delayed_post_at和lock_at日期。不要尝试在已锁定的讨论中发帖。 - 教育工作者应注意匿名化。 查看学生参与情况时,如果启用了匿名化,请使用匿名 ID。Canvas MCP 服务会为消息功能保留有效的用户 ID,同时对显示名称进行匿名化。
示例
用户(教育工作者):“告诉我谁还没有在 CS 101 的第 5 周讨论中发帖。”
**Agent:**调用 list_discussion_topics 查找第 5 周的主题,然后调用 list_discussion_entries 获取所有帖子,接着与已注册学生名单进行交叉比对。最后输出参与情况摘要,列出尚未发帖的学生。
用户:“给他们发个提醒。”
**Agent:**起草一则提及讨论截止日期的提醒消息,展示给用户确认,然后调用 send_conversation 向未参与的学生发送消息。
用户(学生):“我需要回复 Maria 在案例研究讨论中的帖子。”
**Agent:**调用 list_discussion_topics 查找案例研究主题,然后调用 list_discussion_entries 定位 Maria 的帖子,再调用 get_discussion_entry_details 阅读完整内容。接着协助起草一则回应 Maria 主要论点的回复,展示草稿并征求确认,然后调用 reply_to_discussion_entry。
备注
- 对于希望在深入讨论前全面了解课程状态的教育工作者,这项技能与
canvas-morning-check配合使用效果很好。 - 讨论帖子支持 HTML 内容。起草帖子时,可以使用段落标签提高可读性,但应避免过于复杂的标记。
- Canvas API 权限决定每位用户可以执行的操作。除非课程允许,否则学生不能创建讨论主题。教育工作者拥有完整访问权限。
- 对于讨论较多的课程,可建议按最新或置顶主题筛选,以便专注于当前工作流。