mcpField
C
canvas-discussion-facilitator

canvas-discussion-facilitator

github.com/vishalsachdev其他308225 次安装1 天前更新
代码仓库

关于 canvas-discussion-facilitator

Canvas Discussion Facilitator 是面向学生和教育者的技能,用于通过 Canvas 管理课程讨论。它支持浏览和阅读帖子、起草待确认的回复、创建讨论主题以及查看参与情况。

主要功能

  1. 01浏览课程和讨论主题
  2. 02阅读帖子、完整内容和回复
  3. 03起草待确认的回复和帖子
  4. 04创建并安排讨论主题
  5. 05汇总各讨论的参与情况

适用场景

  1. 01了解讨论帖及其主要观点
  2. 02起草对同学或学生帖子的回复
  3. 03找出尚未参与讨论的学生
  4. 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 ID
  • include_announcements——设为 false(默认值)时仅查看讨论;设为 true 时也包含公告

每个话题需展示的数据:

  • 话题 ID 和标题
  • 作者姓名
  • 发布日期
  • 条目数(如有)
  • 话题是否已置顶或锁定

展示列表,让用户选择要深入查看的话题。

3. 查看讨论中的帖子

用户选定话题后,调用 list_discussion_entries 获取帖子。

参数:

  • course_identifier——课程代码或 Canvas ID
  • topic_id——所选讨论话题的 ID
  • include_full_content——设为 true 以查看完整帖子正文
  • include_replies——设为 true 以查看串接回复

每个条目需展示的数据:

  • 作者姓名
  • 发布日期
  • 消息内容(或预览)
  • 回复数
  • 条目 ID(回复时需要)
4. 完整阅读特定帖子

如果帖子内容被截断,或用户想查看全文,请调用 get_discussion_entry_details。

参数:

  • course_identifier——课程代码或 Canvas ID
  • topic_id——讨论话题的 ID
  • entry_id——具体条目的 ID
  • include_replies——设为 true,同时获取该条目的所有回复

展示完整帖子内容,以及所有回复、时间戳和作者信息。

5. 回复帖子

用户想要回复某个帖子时,调用 reply_to_discussion_entry。

参数:

  • course_identifier——课程代码或 Canvas ID
  • topic_id——讨论话题的 ID
  • entry_id——要回复的条目
  • message——回复内容(支持 HTML)

发送前,务必:

  1. 向用户展示回复草稿以供确认
  2. 引用原帖,方便用户核对上下文
  3. 仅在获得明确批准后发送
6. 发布新的顶级条目

用户想要在现有讨论中发布新帖子(而非回复)时,调用 post_discussion_entry。

参数:

  • course_identifier——课程代码或 Canvas ID
  • topic_id——讨论话题的 ID
  • message——帖子内容(支持 HTML)

向用户展示草稿,并在发布前征求确认。

7. 创建新的讨论主题

当用户需要一个全新的讨论论坛时,调用 create_discussion_topic。

参数:

  • course_identifier -- 课程代码或 Canvas ID
  • title -- 讨论标题
  • message -- 讨论的开场帖/提示词
  • delayed_post_at -- (可选)ISO 8601 日期时间,用于安排讨论稍后显示
  • lock_at -- (可选)ISO 8601 日期时间,用于自动锁定讨论
  • require_initial_post -- 如果学生必须先发帖才能查看同学的回复,则设为 true
  • pinned -- 如果要将主题置顶于讨论列表顶部,则设为 true

创建前,请与用户确认标题、内容和任何排期选项。

教育工作者使用场景

监控参与情况
  1. 调用 list_discussion_topics 获取课程中的所有讨论论坛。
  2. 对每个主题,调用 list_discussion_entries 获取所有帖子。
  3. 将发帖者与班级名册交叉核对(使用 list_users 或 list_submissions 获取已注册的学生)。
  4. 找出尚未在任何进行中的讨论中发帖的学生。

以摘要形式呈现参与情况:

## 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
发送参与情况提醒

找出未参与的学生后,可以选择:

  1. 发布公告:使用 create_announcement 发布有关讨论截止日期的一般提醒。
  2. 联系特定学生:使用 send_conversation 联系参与情况落后的学生。
撰写有深度的回复

当教育工作者想要回复学生帖子时:

  1. 使用 get_discussion_entry_details 阅读完整帖子(包括回复,以了解上下文)。
  2. 撰写回复,认可学生提出的观点、提出后续问题,或将观点与课程材料联系起来。
  3. 在调用 reply_to_discussion_entry 前,将草稿交由教育工作者审核和修改。

学生使用场景

浏览讨论并了解进展
  1. 调用 list_discussion_topics 查看所有进行中的讨论。
  2. 调用 list_discussion_entries 并设置 include_full_content=true,阅读帖子。
  3. 总结各帖子的关键主题或论点,帮助学生快速了解讨论进展。
回复同学
  1. 使用 get_discussion_entry_details 阅读目标帖子。
  2. 帮助学生撰写能够切实回应原帖内容的回复。
  3. 确认后,通过 reply_to_discussion_entry 发送。
发布新帖子
  1. 使用 list_discussion_entries 查看现有帖子,避免重复已有观点。
  2. 帮助学生撰写能提出独特视角或推动讨论的帖子。
  3. 确认后,通过 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 权限决定每位用户可以执行的操作。除非课程允许,否则学生不能创建讨论主题。教育工作者拥有完整访问权限。
  • 对于讨论较多的课程,可建议按最新或置顶主题筛选,以便专注于当前工作流。

评论

支持 Markdown