imscc-mcp
Repo: https://github.com/InquiryInstitute/imscc_mcp
MCP server that builds Canvas Common Cartridge (.imscc) packages using Instructure’s Ruby gem canvas_cc. Cartridges are Canvas-profile CC files; many LMSes (including Populi) can import valid Common Cartridge 1.x zip/imscc.
Populi: “webcontent … skipped”
Wiki/lesson pages from canvas_cc are type="webcontent" in imsmanifest.xml. Populi often skips them (you may see two errors for two pages). Assignments typically use associatedcontent/imscc_xmlv1p1/learning-application-resource and import more reliably. When authoring from imscc_template, run assemble-spec.mjs --populi to omit wiki pages and wiki module items; see docs/POPULI.md there.
Prerequisites
- Node.js ≥ 18
- Ruby + Bundler
- From this repo root:
bundle install(installs gems intovendor/bundleper.bundle/config)
Setup
cd ~/GitHub/imscc_mcp
bundle install
npm install
npm run build
Tests
bundle install
npm install
npm test
Runs integration checks on ruby/build_cartridge.rb: successful builds produce a ZIP with imsmanifest.xml; invalid specs are rejected.
Run
node dist/index.js
Cursor / MCP client
Point command at node and args at the absolute path to dist/index.js after npm run build. No env vars are required.
Tools
| Tool | Purpose |
|---|---|
imscc_build_cartridge | Build .imscc from structured input (course, pages, modules, assignments, …). |
imscc_example_spec | Minimal JSON example for imscc_build_cartridge. |
imscc_check_environment | Check ruby, bundle, and canvas_cc from this repo. |
imscc_canvas_cc_reference | Links to canvas_cc, Populi CC import, 1EdTech. |
Spec notes
output_directory: absolute path; created if missing.course.title: required.- Assignments — Supported: groups, points,
submission_types(e.g.online_text_entry,online_upload), due dates, HTML body. Link a rubric withrubric_identifier(must match arubrics[].identifier), plus optionalrubric_use_for_grading/rubric_hide_score_total. - Rubrics —
rubrics[]withidentifier,external_identifier(defaults toidentifier),title, optionalpoints_possible, andcriteria[]each withid,description,points, andratings[](id,description,points,criterion_idmatching the criterionid). - Slides / decks — There is no separate “slides” type. Package files (e.g.
.pptx,.pdf) underfiles[]withidentifier,file_path(path inside the course files tree), andfile_location(absolute path on the machine that runs the build). Optionally add a module item withcontent_typeAttachmentandidentifierrefset to the file’sidentifier(see canvas_cc module item types). - Module items — e.g.
WikiPage+identifierrefmatching a pageidentifier, orExternalUrl+url. - Assignments → groups —
assignment_group_identifier_refmust match an assignment groupidentifier.
Importer support (Canvas vs Populi vs others) varies; test imports on your LMS.
For types not yet mapped in ruby/build_cartridge.rb (quizzes, question banks, full LTI, etc.), extend the script using the canvas_cc README.
License
MIT