imscc-mcp MCP Server

Builds Canvas Common Cartridge (.imscc) packages from structured course data.

README.md

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 into vendor/bundle per .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 with rubric_identifier (must match a rubrics[].identifier), plus optional rubric_use_for_grading / rubric_hide_score_total.
  • Rubricsrubrics[] with identifier, external_identifier (defaults to identifier), title, optional points_possible, and criteria[] each with id, description, points, and ratings[] (id, description, points, criterion_id matching the criterion id).
  • Slides / decks — There is no separate “slides” type. Package files (e.g. .pptx, .pdf) under files[] with identifier, file_path (path inside the course files tree), and file_location (absolute path on the machine that runs the build). Optionally add a module item with content_type Attachment and identifierref set to the file’s identifier (see canvas_cc module item types).
  • Module items — e.g. WikiPage + identifierref matching a page identifier, or ExternalUrl + url.
  • Assignments → groupsassignment_group_identifier_ref must match an assignment group identifier.

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

Tools 4

imscc_build_cartridgeBuild .imscc from structured input including course, pages, modules, and assignments.
imscc_example_specProvides a minimal JSON example for the imscc_build_cartridge tool.
imscc_check_environmentVerifies that ruby, bundle, and canvas_cc are correctly configured.
imscc_canvas_cc_referenceProvides documentation links for canvas_cc, Populi CC import, and 1EdTech standards.

Try it

Generate a minimal JSON specification for a new course cartridge.
Build a course cartridge using the provided course structure and save it to the output directory.
Check if my environment is correctly set up to build Canvas Common Cartridge files.
Show me the reference documentation for importing Common Cartridge files into Populi.

Frequently Asked Questions

What are the key features of imscc-mcp?

Creates valid Canvas Common Cartridge (.imscc) packages.. Supports complex course structures including modules, assignments, and rubrics.. Integrates with the canvas_cc Ruby gem for reliable package generation.. Provides environment validation tools to ensure dependencies are met..

What can I use imscc-mcp for?

Programmatically generating course content for import into Canvas or Populi LMS.. Automating the creation of standardized course shells from structured JSON data.. Converting existing course materials into a portable format for cross-LMS migration.. Developing course templates that can be quickly assembled into deployable cartridges..

How do I install imscc-mcp?

Install imscc-mcp by running: cd ~/GitHub/imscc_mcp && bundle install && npm install && npm run build

What MCP clients work with imscc-mcp?

imscc-mcp works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep imscc-mcp docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Open Conare