mcpField
C
canvas-course-builder

canvas-course-builder

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

关于 canvas-course-builder

canvas-course-builder 是通过自然语言、JSON 模板或现有课程结构,在 Canvas 中构建课程模块与内容的技能,适用于课程设计人员。它会先生成预览并等待确认,再创建并组织项目。

主要功能

  1. 01按描述构建课程结构
  2. 02从 JSON 模板生成结构
  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-course-builder

安装后在 Claude Code 中输入/canvas-course-builder确认已加载。

详细介绍

Canvas 课程构建器

根据自然语言描述、JSON 模板,或通过克隆现有课程,构建完整的 Canvas 课程结构。在一个工作流中创建包含页面、作业、讨论的模块,并做好组织安排。

前提条件

  • Canvas MCP 服务必须正在运行并已连接。
  • 已通过身份验证的用户必须在目标课程中拥有教师或设计师角色。
  • 目标课程必须已存在于 Canvas 中(此技能用于填充课程,不会创建课程本身)。

模式

此技能有三种模式:

模式 1:根据规范构建(默认)

用户用自然语言描述课程结构,或提供结构化规范。

模式 2:根据模板构建

加载保存的 JSON 模板来搭建课程框架。

模式 3:从现有课程克隆

读取课程 A 的结构,并将其复制到课程 B。

步骤

1. 确定模式并收集输入

询问用户希望如何构建课程:

您希望如何构建课程结构?

  1. 描述结构 —— 告诉我课程结构(例如:“15 周,每周包含概览页面、作业和讨论”)
  2. 使用模板 —— 加载已保存的模板文件
  3. 克隆其他课程 —— 从现有课程复制结构

**模式 1(规范):**询问以下信息:

  • 目标课程(课程代码或 ID)
  • 模块/周/单元的数量
  • 模块命名模式(例如:“第 N 周:[主题]”)
  • 每个模块的标准内容(概览页面、作业、讨论等)
  • 模块的任何特定变化(期中考试周、期末项目等)

**模式 2(模板):**询问模板文件路径。解析 JSON 模板。

**模式 3(克隆):**询问以下信息:

  • 源课程(课程代码或 ID)
  • 目标课程(课程代码或 ID)
  • 调用 get_course_structure(source_course) 读取完整结构
2. 生成结构预览

构建将要创建的内容预览,并展示给用户:

## Course Build Plan: [Course Name]

### Structure: 15 modules x 4 items each = 60 items total

| Module | Page | Assignment | Discussion | SubHeader |
|--------|------|------------|------------|-----------|
| Week 1: Introduction | Overview | HW 1 (10 pts) | Week 1 Forum | Materials |
| Week 2: Fundamentals | Overview | HW 2 (10 pts) | Week 2 Forum | Materials |
| ... | ... | ... | ... | ... |
| Week 14: Review | Overview | -- | Review Forum | Materials |
| Week 15: Final | Overview | Final Project (100 pts) | -- | Materials |

### Items to create:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 15 subheaders
- Total: 73 Canvas objects

Shall I proceed?
3. 由用户批准或修改

等待用户明确批准。用户可以:

  • 按原样批准
  • 请求修改(添加/删除内容、更改命名、调整分值)
  • 取消

未经批准不得继续。

4. 执行创建

按依赖顺序创建内容:

  1. 先创建模块: 对每个模块调用 create_module,并设置 published=false(模块默认已发布)
  2. 页面: 对每个概览页面调用 create_page,并设置 published=false(页面默认已发布)
  3. 作业: 对每项作业调用 create_assignment(未发布)
  4. 讨论: 对每个论坛调用 create_discussion_topic
  5. 模块内容项: 调用 add_module_item,将创建的每个内容项关联到对应模块

跟踪进度并及时汇报:

Creating modules... 15/15 done
Creating pages... 15/15 done
Creating assignments... 14/14 done
Creating discussions... 14/14 done
Linking items to modules... 58/58 done

如果创建任何内容失败,记录错误并继续创建其余内容。

5. 汇报结果
## Build Complete: [Course Name]

### Created:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 58 module items linked

### Failed (0):
None

### Next Steps:
- All items created **unpublished** -- publish when ready
- Add content to overview pages
- Set due dates on assignments
- Run `/canvas-course-qc` to verify structure
6. 保存为模板(可选)

构建完成后,提供将结构保存为可重复使用模板的选项:

您想将此结构保存为模板,以便用于后续课程吗?

如果用户同意,调用 get_course_structure(target_course) 并将输出保存为 JSON 文件。

使用的 MCP 工具

工具用途
list_courses查找可用课程
get_course_structure读取用于克隆的源课程;构建后进行验证
create_module创建每个模块
create_page创建概览/内容页面
create_assignment创建作业
create_discussion_topic创建讨论论坛
add_module_item将内容项关联到模块
update_module在适当时发布模块

模板格式

模板是采用以下结构的 JSON 文件:

{
  "template_name": "Standard 15-Week Semester",
  "modules": [
    {
      "name_pattern": "Week {n}: {topic}",
      "items": [
        {"type": "SubHeader", "title_pattern": "Week {n} Materials"},
        {"type": "Page", "title_pattern": "Week {n} Overview"},
        {"type": "Assignment", "title_pattern": "HW {n}", "points": 10},
        {"type": "Discussion", "title_pattern": "Week {n} Discussion"}
      ]
    }
  ],
  "special_modules": [
    {"position": 8, "name": "Midterm Review", "items": [{"type": "Page", "title": "Midterm Study Guide"}]},
    {"position": 15, "name": "Final Project", "items": [{"type": "Assignment", "title": "Final Project", "points": 100}]}
  ]
}

示例

用户:“为 BADM 350 构建一个 15 周的课程结构,每周包含概览页面、作业和讨论”

**Agent:**生成预览、征求批准,并创建 60 多项内容。

用户:“将 CS 101 的结构克隆到 CS 102”

**Agent:**读取 CS 101 的结构,为 CS 102 生成预览并征求批准,然后创建匹配的结构。

备注

  • 只有传入 published=false 时,模块和页面才会设为未发布(两者默认均为已发布)。create_assignment 默认设为未发布。create_discussion_topic 创建时始终会发布;如果暂时不希望学生看到讨论,请使用 delayed_post_at 安排发布时间,而不要现在创建。
  • 克隆时不会复制内容,只复制结构(模块名称、项目类型和组织方式)。
  • 若要在课程间复制内容(而不仅是结构),请使用 create_content_migration(预览 + 确认令牌),并轮询 get_content_migration_status;少量页面可通过 get_page_content + create_page 逐页复制。
  • 构建完成后运行 canvas-course-qc,以验证结构是否完整且一致。

评论

支持 Markdown