canvas-discussion-facilitator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Canvas 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
    ENABLE_DATA_ANONYMIZATION=true
    in the Canvas MCP server environment to anonymize student names in output.
  • 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
list_courses
to show active courses and prompt:
Which course should I look at discussions for?
询问用户要操作的课程,接受课程代码、Canvas ID,或让用户从列表中选择。
如果用户未指定,调用
list_courses
展示活跃课程并提示:
我应该查看哪门课程的讨论内容?

2. Browse Discussion Topics

2. 浏览讨论话题

Call the MCP tool
list_discussion_topics
with the course identifier to retrieve all discussion forums.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • include_announcements
    -- set to
    false
    (default) to see only discussions, or
    true
    to include announcements
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
并传入课程标识符,获取所有讨论论坛。
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • include_announcements
    -- 设置为
    false
    (默认值)仅查看讨论内容,设置为
    true
    则包含公告
需展示的话题信息:
  • 话题ID与标题
  • 作者姓名
  • 发布日期
  • 帖子数量(若有)
  • 话题是否置顶或锁定
将列表展示给用户,供其选择要深入查看的话题。

3. View Posts in a Discussion

3. 查看讨论中的帖子

Once the user selects a topic, call
list_discussion_entries
to retrieve posts.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • topic_id
    -- the selected discussion topic ID
  • include_full_content
    -- set to
    true
    to see complete post bodies
  • include_replies
    -- set to
    true
    to see threaded replies
Data to surface per entry:
  • Author name
  • Posted date
  • Message content (or preview)
  • Number of replies
  • Entry ID (needed for replying)
用户选定话题后,调用
list_discussion_entries
获取帖子内容。
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • topic_id
    -- 选定的讨论话题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_details
.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • topic_id
    -- the discussion topic ID
  • entry_id
    -- the specific entry ID
  • include_replies
    -- set to
    true
    to also fetch all replies to this entry
Present the full post content along with any replies, timestamps, and author information.
若帖子内容被截断,或用户需要完整文本,调用
get_discussion_entry_details
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • topic_id
    -- 讨论话题ID
  • entry_id
    -- 目标帖子ID
  • include_replies
    -- 设置为
    true
    可同时获取该帖子的所有回复
展示完整的帖子内容及所有回复、时间戳和作者信息。

5. Reply to a Post

5. 回复帖子

When the user wants to respond to a specific post, call
reply_to_discussion_entry
.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • topic_id
    -- the discussion topic ID
  • entry_id
    -- the entry being replied to
  • message
    -- the reply content (HTML is supported)
Before sending, always:
  1. Show the draft reply to the user for confirmation
  2. Reference the original post so the user can verify context
  3. Only send after explicit approval
当用户需要回复特定帖子时,调用
reply_to_discussion_entry
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • topic_id
    -- 讨论话题ID
  • entry_id
    -- 要回复的帖子ID
  • message
    -- 回复内容(支持HTML格式)
发送前需执行以下操作:
  1. 向用户展示回复草稿以确认
  2. 引用原帖内容,方便用户验证上下文
  3. 仅在用户明确批准后发送

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_entry
.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • topic_id
    -- the discussion topic ID
  • message
    -- the post content (HTML is supported)
Show the draft to the user and confirm before posting.
当用户需要在现有讨论中添加新帖子(非回复)时,调用
post_discussion_entry
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • topic_id
    -- 讨论话题ID
  • message
    -- 帖子内容(支持HTML格式)
向用户展示草稿并确认后再发布。

7. Create a New Discussion Topic

7. 创建新讨论话题

When the user needs an entirely new discussion forum, call
create_discussion_topic
.
Parameters:
  • course_identifier
    -- course code or Canvas ID
  • title
    -- the discussion title
  • message
    -- the opening post / prompt for the discussion
  • delayed_post_at
    -- (optional) ISO 8601 datetime to schedule the discussion to appear later
  • lock_at
    -- (optional) ISO 8601 datetime to automatically lock the discussion
  • require_initial_post
    -- set to
    true
    if students must post before seeing classmates' responses
  • pinned
    -- set to
    true
    to pin the topic to the top of the discussion list
Confirm the title, content, and any scheduling options with the user before creating.
当用户需要创建全新的讨论论坛时,调用
create_discussion_topic
参数:
  • course_identifier
    -- 课程代码或Canvas ID
  • title
    -- 讨论标题
  • message
    -- 讨论的开篇帖子/提示内容
  • delayed_post_at
    --(可选)ISO 8601格式的日期时间,用于设置讨论的延迟发布时间
  • lock_at
    --(可选)ISO 8601格式的日期时间,用于设置讨论的自动锁定时间
  • require_initial_post
    -- 设置为
    true
    时,学生需先发布帖子才能查看同学的回复
  • pinned
    -- 设置为
    true
    可将话题固定在讨论列表顶部
创建前需与用户确认标题、内容及所有调度选项。

Educator Use Cases

教育工作者使用场景

Monitor Participation

监控参与度

  1. Call
    list_discussion_topics
    to get all discussion forums in the course.
  2. For each topic, call
    list_discussion_entries
    to retrieve all posts.
  3. Cross-reference posters against the class roster (use
    list_users
    or
    list_submissions
    to get enrolled students).
  4. Identify students who have not posted in any active discussion.
Present participation as a summary:
undefined
  1. 调用
    list_discussion_topics
    获取课程中的所有讨论论坛。
  2. 针对每个话题,调用
    list_discussion_entries
    获取所有帖子。
  3. 将发帖人与班级名册交叉比对(调用
    list_users
    list_submissions
    获取已注册学生信息)。
  4. 识别未在任何活跃讨论中发帖的学生。
以摘要形式展示参与情况:
undefined

Discussion 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个讨论
undefined

Send Reminders About Participation

发送参与度提醒

After identifying non-participants, offer to:
  1. Post an announcement using
    create_announcement
    with a general reminder about discussion deadlines.
  2. Message specific students using
    send_conversation
    to contact students who are behind on participation.
识别未参与的学生后,可提供以下操作:
  1. 发布公告:调用
    create_announcement
    发布关于讨论截止日期的通用提醒。
  2. 发送私信:调用
    send_conversation
    联系参与度落后的学生。

Draft Thoughtful Replies

撰写有深度的回复

When an educator wants to reply to student posts:
  1. Read the full post with
    get_discussion_entry_details
    (include replies for context).
  2. Draft a reply that acknowledges the student's points, asks follow-up questions, or connects ideas to course material.
  3. Show the draft for educator review and revision before calling
    reply_to_discussion_entry
    .
当教育工作者需要回复学生帖子时:
  1. 调用
    get_discussion_entry_details
    查看完整帖子(包含回复以了解上下文)。
  2. 撰写回复,认可学生的观点、提出跟进问题或关联课程内容。
  3. 向教育工作者展示草稿供其审阅和修改,之后再调用
    reply_to_discussion_entry
    发送。

Student Use Cases

学生使用场景

Browse and Catch Up on Discussions

浏览并跟进讨论内容

  1. Call
    list_discussion_topics
    to see all active discussions.
  2. Call
    list_discussion_entries
    with
    include_full_content=true
    to read posts.
  3. Summarize key themes or arguments across posts to help the student catch up quickly.
  1. 调用
    list_discussion_topics
    查看所有活跃讨论。
  2. 调用
    list_discussion_entries
    并设置
    include_full_content=true
    以查看帖子。
  3. 总结帖子中的关键主题或论点,帮助学生快速跟进讨论。

Reply to Classmates

回复同学

  1. Read the target post with
    get_discussion_entry_details
    .
  2. Help the student draft a reply that engages substantively with the original post.
  3. Confirm and send via
    reply_to_discussion_entry
    .
  1. 调用
    get_discussion_entry_details
    查看目标帖子。
  2. 帮助学生撰写能切实回应原帖的回复。
  3. 确认后调用
    reply_to_discussion_entry
    发送。

Post a New Entry

发布新帖子

  1. Review existing posts with
    list_discussion_entries
    to avoid duplicating points already made.
  2. Help the student draft a post that adds a distinct perspective or builds on the conversation.
  3. Confirm and send via
    post_discussion_entry
    .
  1. 调用
    list_discussion_entries
    查看现有帖子,避免重复他人已提出的观点。
  2. 帮助学生撰写能提供独特视角或拓展讨论内容的帖子。
  3. 确认后调用
    post_discussion_entry
    发布。

MCP Tools Used

用到的MCP工具

ToolPurpose
list_courses
Find the target course
list_discussion_topics
Browse all discussion forums in a course
list_discussion_entries
View posts within a discussion topic
get_discussion_entry_details
Read a single post with full content and replies
get_discussion_topic_details
Get metadata about a discussion topic
reply_to_discussion_entry
Reply to an existing post
post_discussion_entry
Add a new top-level post to a discussion
create_discussion_topic
Create a new discussion forum
create_announcement
Post a course announcement (educator)
send_conversation
Message specific students through Canvas (educator)
list_users
Get enrolled students for participation tracking (educator)
工具用途
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
获取已注册学生信息以跟踪参与度(教育工作者适用)

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 (
    require_initial_post
    ). If a student cannot see other posts, they need to post first.
  • Mind the timing. Check
    delayed_post_at
    and
    lock_at
    dates on topics. Do not attempt to post to locked discussions.
  • 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
list_discussion_topics
to find the Week 5 topic, then
list_discussion_entries
to get all posts, then cross-references with enrolled students. Outputs a participation summary listing students who have not posted.
User: "Send them a reminder."
Agent: Drafts a reminder message referencing the discussion deadline, shows it for confirmation, then calls
send_conversation
to message the non-participating students.

User (student): "I need to reply to Maria's post in the Case Study discussion."
Agent: Calls
list_discussion_topics
to find the Case Study topic, then
list_discussion_entries
to locate Maria's post, then
get_discussion_entry_details
to read the full content. Helps draft a reply that references Maria's key arguments, shows the draft for confirmation, then calls
reply_to_discussion_entry
.
用户(教育工作者):“帮我看看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
发送。

Notes

注意事项

  • This skill pairs well with
    canvas-morning-check
    for educators who want a full course status before diving into discussions.
  • 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权限决定了用户的操作范围。除非课程允许,否则学生无法创建讨论话题。教育工作者拥有完整权限。
  • 对于包含大量讨论的课程,建议按近期或固定话题筛选,以保持工作流程的聚焦性。