canvas-discussion-facilitator
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCanvas Discussion Facilitator
Canvas讨论论坛助手
Facilitate discussion forum activity in Canvas LMS -- browse topics, read posts, reply to students, create new discussions, and monitor participation. Works for both students and educators.
为Canvas LMS中的讨论论坛活动提供支持——浏览话题、查看帖子、回复学生、创建新讨论以及参与度监控。适用于学生和教育工作者两类用户。
Prerequisites
前提条件
- Canvas MCP server must be running and connected to the agent's MCP client.
- The authenticated user can have any Canvas role (student, TA, or instructor). Tool access is governed by Canvas API permissions.
- FERPA compliance (educators): Set in the Canvas MCP server environment to anonymize student names in output.
ENABLE_DATA_ANONYMIZATION=true
- Canvas MCP server必须运行并连接至Agent的MCP客户端。
- 已认证用户可拥有任意Canvas角色(学生、助教或讲师)。工具访问权限由Canvas API权限管控。
- FERPA合规(教育工作者适用):在Canvas MCP server环境中设置,可在输出中匿名化学生姓名。
ENABLE_DATA_ANONYMIZATION=true
Steps
步骤
1. Identify the Course
1. 确定课程
Ask the user which course to work with. Accept a course code, Canvas ID, or ask them to pick from a list.
If the user does not specify, use to show active courses and prompt:
list_coursesWhich course should I look at discussions for?
询问用户要操作的课程,接受课程代码、Canvas ID,或让用户从列表中选择。
如果用户未指定,调用展示活跃课程并提示:
list_courses我应该查看哪门课程的讨论内容?
2. Browse Discussion Topics
2. 浏览讨论话题
Call the MCP tool with the course identifier to retrieve all discussion forums.
list_discussion_topicsParameters:
- -- course code or Canvas ID
course_identifier - -- set to
include_announcements(default) to see only discussions, orfalseto include announcementstrue
Data to surface per topic:
- Topic ID and title
- Author name
- Posted date
- Number of entries (if available)
- Whether the topic is pinned or locked
Present the list so the user can pick a topic to drill into.
调用MCP工具并传入课程标识符,获取所有讨论论坛。
list_discussion_topics参数:
- -- 课程代码或Canvas ID
course_identifier - -- 设置为
include_announcements(默认值)仅查看讨论内容,设置为false则包含公告true
需展示的话题信息:
- 话题ID与标题
- 作者姓名
- 发布日期
- 帖子数量(若有)
- 话题是否置顶或锁定
将列表展示给用户,供其选择要深入查看的话题。
3. View Posts in a Discussion
3. 查看讨论中的帖子
Once the user selects a topic, call to retrieve posts.
list_discussion_entriesParameters:
- -- course code or Canvas ID
course_identifier - -- the selected discussion topic ID
topic_id - -- set to
include_full_contentto see complete post bodiestrue - -- set to
include_repliesto see threaded repliestrue
Data to surface per entry:
- Author name
- Posted date
- Message content (or preview)
- Number of replies
- Entry ID (needed for replying)
用户选定话题后,调用获取帖子内容。
list_discussion_entries参数:
- -- 课程代码或Canvas ID
course_identifier - -- 选定的讨论话题ID
topic_id - -- 设置为
include_full_content可查看完整帖子内容true - -- 设置为
include_replies可查看嵌套回复true
需展示的帖子信息:
- 作者姓名
- 发布日期
- 消息内容(或预览)
- 回复数量
- 帖子ID(回复时需用到)
4. Read a Specific Post in Full
4. 查看单篇帖子的完整内容
If a post is truncated or the user wants the complete text, call .
get_discussion_entry_detailsParameters:
- -- course code or Canvas ID
course_identifier - -- the discussion topic ID
topic_id - -- the specific entry ID
entry_id - -- set to
include_repliesto also fetch all replies to this entrytrue
Present the full post content along with any replies, timestamps, and author information.
若帖子内容被截断,或用户需要完整文本,调用。
get_discussion_entry_details参数:
- -- 课程代码或Canvas ID
course_identifier - -- 讨论话题ID
topic_id - -- 目标帖子ID
entry_id - -- 设置为
include_replies可同时获取该帖子的所有回复true
展示完整的帖子内容及所有回复、时间戳和作者信息。
5. Reply to a Post
5. 回复帖子
When the user wants to respond to a specific post, call .
reply_to_discussion_entryParameters:
- -- course code or Canvas ID
course_identifier - -- the discussion topic ID
topic_id - -- the entry being replied to
entry_id - -- the reply content (HTML is supported)
message
Before sending, always:
- Show the draft reply to the user for confirmation
- Reference the original post so the user can verify context
- Only send after explicit approval
当用户需要回复特定帖子时,调用。
reply_to_discussion_entry参数:
- -- 课程代码或Canvas ID
course_identifier - -- 讨论话题ID
topic_id - -- 要回复的帖子ID
entry_id - -- 回复内容(支持HTML格式)
message
发送前需执行以下操作:
- 向用户展示回复草稿以确认
- 引用原帖内容,方便用户验证上下文
- 仅在用户明确批准后发送
6. Post a New Top-Level Entry
6. 发布新的顶层帖子
When the user wants to add a new post to an existing discussion (not a reply), call .
post_discussion_entryParameters:
- -- course code or Canvas ID
course_identifier - -- the discussion topic ID
topic_id - -- the post content (HTML is supported)
message
Show the draft to the user and confirm before posting.
当用户需要在现有讨论中添加新帖子(非回复)时,调用。
post_discussion_entry参数:
- -- 课程代码或Canvas ID
course_identifier - -- 讨论话题ID
topic_id - -- 帖子内容(支持HTML格式)
message
向用户展示草稿并确认后再发布。
7. Create a New Discussion Topic
7. 创建新讨论话题
When the user needs an entirely new discussion forum, call .
create_discussion_topicParameters:
- -- course code or Canvas ID
course_identifier - -- the discussion title
title - -- the opening post / prompt for the discussion
message - -- (optional) ISO 8601 datetime to schedule the discussion to appear later
delayed_post_at - -- (optional) ISO 8601 datetime to automatically lock the discussion
lock_at - -- set to
require_initial_postif students must post before seeing classmates' responsestrue - -- set to
pinnedto pin the topic to the top of the discussion listtrue
Confirm the title, content, and any scheduling options with the user before creating.
当用户需要创建全新的讨论论坛时,调用。
create_discussion_topic参数:
- -- 课程代码或Canvas ID
course_identifier - -- 讨论标题
title - -- 讨论的开篇帖子/提示内容
message - --(可选)ISO 8601格式的日期时间,用于设置讨论的延迟发布时间
delayed_post_at - --(可选)ISO 8601格式的日期时间,用于设置讨论的自动锁定时间
lock_at - -- 设置为
require_initial_post时,学生需先发布帖子才能查看同学的回复true - -- 设置为
pinned可将话题固定在讨论列表顶部true
创建前需与用户确认标题、内容及所有调度选项。
Educator Use Cases
教育工作者使用场景
Monitor Participation
监控参与度
- Call to get all discussion forums in the course.
list_discussion_topics - For each topic, call to retrieve all posts.
list_discussion_entries - Cross-reference posters against the class roster (use or
list_usersto get enrolled students).list_submissions - Identify students who have not posted in any active discussion.
Present participation as a summary:
undefined- 调用获取课程中的所有讨论论坛。
list_discussion_topics - 针对每个话题,调用获取所有帖子。
list_discussion_entries - 将发帖人与班级名册交叉比对(调用或
list_users获取已注册学生信息)。list_submissions - 识别未在任何活跃讨论中发帖的学生。
以摘要形式展示参与情况:
undefinedDiscussion Participation: [Course Name]
讨论参与情况:[课程名称]
Topic: "Week 5 Reading Response" (due Mar 3)
话题:“第5周阅读心得”(截止日期3月3日)
- Posted: 28 / 32 students (88%)
- Not posted: Student_a1b2c3d, Student_e4f5g6h, Student_i7j8k9l, Student_m0n1o2p
- 已发帖: 28/32名学生(88%)
- 未发帖: Student_a1b2c3d, Student_e4f5g6h, Student_i7j8k9l, Student_m0n1o2p
Topic: "Case Study Analysis" (due Mar 5)
话题:“案例分析”(截止日期3月5日)
- Posted: 15 / 32 students (47%)
- Not posted: [17 students listed]
- 已发帖: 15/32名学生(47%)
- 未发帖: [17名学生列表]
Students Missing Multiple Discussions
未参与多个讨论的学生
- Student_a1b2c3d -- missing 2 discussions
- Student_e4f5g6h -- missing 2 discussions
undefined- Student_a1b2c3d -- 未参与2个讨论
- Student_e4f5g6h -- 未参与2个讨论
undefinedSend Reminders About Participation
发送参与度提醒
After identifying non-participants, offer to:
- Post an announcement using with a general reminder about discussion deadlines.
create_announcement - Message specific students using to contact students who are behind on participation.
send_conversation
识别未参与的学生后,可提供以下操作:
- 发布公告:调用发布关于讨论截止日期的通用提醒。
create_announcement - 发送私信:调用联系参与度落后的学生。
send_conversation
Draft Thoughtful Replies
撰写有深度的回复
When an educator wants to reply to student posts:
- Read the full post with (include replies for context).
get_discussion_entry_details - Draft a reply that acknowledges the student's points, asks follow-up questions, or connects ideas to course material.
- Show the draft for educator review and revision before calling .
reply_to_discussion_entry
当教育工作者需要回复学生帖子时:
- 调用查看完整帖子(包含回复以了解上下文)。
get_discussion_entry_details - 撰写回复,认可学生的观点、提出跟进问题或关联课程内容。
- 向教育工作者展示草稿供其审阅和修改,之后再调用发送。
reply_to_discussion_entry
Student Use Cases
学生使用场景
Browse and Catch Up on Discussions
浏览并跟进讨论内容
- Call to see all active discussions.
list_discussion_topics - Call with
list_discussion_entriesto read posts.include_full_content=true - Summarize key themes or arguments across posts to help the student catch up quickly.
- 调用查看所有活跃讨论。
list_discussion_topics - 调用并设置
list_discussion_entries以查看帖子。include_full_content=true - 总结帖子中的关键主题或论点,帮助学生快速跟进讨论。
Reply to Classmates
回复同学
- Read the target post with .
get_discussion_entry_details - Help the student draft a reply that engages substantively with the original post.
- Confirm and send via .
reply_to_discussion_entry
- 调用查看目标帖子。
get_discussion_entry_details - 帮助学生撰写能切实回应原帖的回复。
- 确认后调用发送。
reply_to_discussion_entry
Post a New Entry
发布新帖子
- Review existing posts with to avoid duplicating points already made.
list_discussion_entries - Help the student draft a post that adds a distinct perspective or builds on the conversation.
- Confirm and send via .
post_discussion_entry
- 调用查看现有帖子,避免重复他人已提出的观点。
list_discussion_entries - 帮助学生撰写能提供独特视角或拓展讨论内容的帖子。
- 确认后调用发布。
post_discussion_entry
MCP Tools Used
用到的MCP工具
| Tool | Purpose |
|---|---|
| Find the target course |
| Browse all discussion forums in a course |
| View posts within a discussion topic |
| Read a single post with full content and replies |
| Get metadata about a discussion topic |
| Reply to an existing post |
| Add a new top-level post to a discussion |
| Create a new discussion forum |
| Post a course announcement (educator) |
| Message specific students through Canvas (educator) |
| Get enrolled students for participation tracking (educator) |
| 工具 | 用途 |
|---|---|
| 查找目标课程 |
| 浏览课程中的所有讨论论坛 |
| 查看讨论话题中的帖子 |
| 查看单篇帖子的完整内容及回复 |
| 获取讨论话题的元数据 |
| 回复现有帖子 |
| 在讨论中添加新的顶层帖子 |
| 创建新的讨论论坛 |
| 发布课程公告(教育工作者适用) |
| 通过Canvas向特定学生发送消息(教育工作者适用) |
| 获取已注册学生信息以跟踪参与度(教育工作者适用) |
Best Practices
最佳实践
- Read before replying. Always read the full post and its replies before drafting a response. This avoids repeating points and shows engagement with the conversation.
- Check for existing similar posts. Before posting a new entry, scan existing posts to avoid duplicating what others have already said. Build on or respectfully challenge existing arguments instead.
- Reference specific points. When replying, quote or paraphrase specific parts of the original post. This makes the reply more substantive and shows careful reading.
- Confirm before sending. Always show draft content to the user for approval before calling any write tool (,
reply_to_discussion_entry,post_discussion_entry,create_discussion_topic).create_announcement - Respect discussion settings. Some discussions require an initial post before viewing others (). If a student cannot see other posts, they need to post first.
require_initial_post - Mind the timing. Check and
delayed_post_atdates on topics. Do not attempt to post to locked discussions.lock_at - Anonymization for educators. When reviewing student participation, rely on anonymous IDs if anonymization is enabled. The Canvas MCP server preserves functional user IDs for messaging while anonymizing display names.
- 先读再回复:撰写回复前务必查看完整帖子及其回复,避免重复观点,体现对讨论的参与度。
- 检查重复内容:发布新帖子前,浏览现有帖子以避免重复他人已发表的内容,可选择拓展或理性反驳现有论点。
- 引用具体内容:回复时引用或转述原帖的特定部分,让回复更有针对性,体现认真阅读。
- 发送前确认:调用任何写入类工具(、
reply_to_discussion_entry、post_discussion_entry、create_discussion_topic)前,务必向用户展示草稿内容以获得批准。create_announcement - 遵守讨论设置:部分讨论要求用户先发布帖子才能查看他人内容()。若学生无法查看其他帖子,需先发布自己的帖子。
require_initial_post - 注意时间节点:查看话题的和
delayed_post_at日期,不要尝试向已锁定的讨论发布内容。lock_at - 教育工作者匿名化设置:查看学生参与度时,若启用了匿名化设置,请使用匿名ID。Canvas MCP server在匿名化显示姓名的同时,会保留用于消息发送的功能用户ID。
Example
示例
User (educator): "Show me who hasn't posted in the Week 5 discussion for CS 101."
Agent: Calls to find the Week 5 topic, then to get all posts, then cross-references with enrolled students. Outputs a participation summary listing students who have not posted.
list_discussion_topicslist_discussion_entriesUser: "Send them a reminder."
Agent: Drafts a reminder message referencing the discussion deadline, shows it for confirmation, then calls to message the non-participating students.
send_conversationUser (student): "I need to reply to Maria's post in the Case Study discussion."
Agent: Calls to find the Case Study topic, then to locate Maria's post, then to read the full content. Helps draft a reply that references Maria's key arguments, shows the draft for confirmation, then calls .
list_discussion_topicslist_discussion_entriesget_discussion_entry_detailsreply_to_discussion_entry用户(教育工作者):“帮我看看CS 101课程第5周讨论中谁还没发帖。”
**Agent:**调用找到第5周的话题,再调用获取所有帖子,随后与已注册学生信息交叉比对。输出参与度摘要,列出未发帖的学生。
list_discussion_topicslist_discussion_entries用户:“给他们发送提醒。”
**Agent:**撰写提及讨论截止日期的提醒消息,展示草稿供用户确认,之后调用向未参与的学生发送消息。
send_conversation用户(学生):“我需要回复案例分析讨论中Maria的帖子。”
**Agent:**调用找到案例分析话题,再调用定位Maria的帖子,随后调用查看完整内容。帮助学生撰写能引用Maria核心论点的回复,展示草稿供用户确认,之后调用发送。
list_discussion_topicslist_discussion_entriesget_discussion_entry_detailsreply_to_discussion_entryNotes
注意事项
- This skill pairs well with for educators who want a full course status before diving into discussions.
canvas-morning-check - Discussion entries support HTML content. When drafting posts, use paragraph tags for readability but avoid overly complex markup.
- Canvas API permissions determine what each user can do. Students cannot create discussion topics unless the course allows it. Educators have full access.
- For courses with many discussions, suggest filtering by recent or pinned topics to keep the workflow focused.
- 该技能与搭配使用效果更佳,适合需要先了解课程整体状态再处理讨论内容的教育工作者。
canvas-morning-check - 讨论帖子支持HTML内容。撰写帖子时,使用段落标签提升可读性,但避免过于复杂的标记。
- Canvas API权限决定了用户的操作范围。除非课程允许,否则学生无法创建讨论话题。教育工作者拥有完整权限。
- 对于包含大量讨论的课程,建议按近期或固定话题筛选,以保持工作流程的聚焦性。