Compiles structured specs into SCORM 1.2/2004 e-learning packages. 43 tools, quality gate, no LLM.
One address for any MCP client. You sign in at auth.edumints.com once, after adding it.

At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Mcp | Not stated: mcp | |
From the sign-in at auth.edumints.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
An MCP server that compiles interactive, standards-conformant e-learning courses. You (or an AI client like Claude) are the author; this server is the compiler. Describe a course as a structured spec — the server validates it, renders it, and packages it as a self-contained SCORM zip that runs in any LMS (Moodle, SCORM Cloud, Rustici Engine, …). Deterministic — no LLM runs on the server.
🌐 Languages: English · Türkçe · Español · Русский · 简体中文 · Azərbaycanca · Қазақша · Кыргызча
Four complete courses — four audiences, four visual identities — built entirely with this server and served from a live deploy. Click any screenshot to launch.
| Be a Password Hero! | Spot the Phish | The Ad Hominem Argument | Grafik Dedektifi |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Ages 9–13 · internet safety · style-playful + custom brand | Corporate onboarding · email security · style-minimal + corporate brand | Graduate level · argumentation theory · style-premium | Turkish · data literacy · inquiry-based (5E) · evidence-bound assessment |
Each demo features a narrative thread, realistic artifact-mockup SVGs, flag-hunting simulations, before/after comparisons, timelines, a case game, and adaptive feedback — with question-level SCORM reporting underneath.
E-learning is usually hand-crafted in heavy desktop authoring tools. This project treats course production as infrastructure for AI agents instead:
lint_course) whose error
tier blocks builds, and a CI proof chain (XSD + real SCORM Cloud imports + behavioral probe)
so that what ships actually works in an LMS — see Standards & evidence.Author = the MCP client · Compiler = this server.

Point any MCP client (Claude desktop/web/Code, Antigravity, …) at:
https://scorm.edumints.com/mcp
Sign in via OAuth or get an API key at the portal: https://mcp.edumints.com. Then ask: "Build a 6-minute interactive course on X with a quiz and a summary." — you get a downloadable SCORM zip back.
Works best together with the authoring skill (a Claude Agent Skill that teaches an AI client how to author high-quality courses with this server): https://github.com/kemalyy/edumints-scorm-skill
docker run -p 8000:8000 -v "$PWD/data:/data" ghcr.io/kemalyy/edumints-scorm-mcp:latest
# MCP endpoint: http://localhost:8000/mcp · health: http://localhost:8000/health
The image includes all optional features (ffmpeg, Node + HyperFrames for video, Piper TTS).
Apple Silicon + Docker Desktop: if the container crashes with
Illegal instruction(SIGILL), it is an upstream native-ARM64 issue incryptography's Rust bindings (pyca/cryptography#14733) — not this repo. Workaround: run with--platform linux/amd64(emulated).
python -m venv .venv && source .venv/bin/activate
pip install ".[tts]" # ".[tts]" adds offline Turkish TTS (Piper); drop it if unwanted
python server.py # serves MCP over HTTP
For video generation also install Node 22+ with HyperFrames (npm i -g hyperframes) plus ffmpeg.
Configuration: copy .env.example and adapt (data dir, quotas, base URL, TTLs). No secrets are
required to run locally.
A course is produced from a single build_from_spec call (this is examples/small.json, abridged):
{
"title": "Intro to SCORM",
"scorm_version": "1.2",
"language": "en",
"tracking": { "completion_rule": "viewed_all_and_passed", "passing_score": 50 },
"screens": [
{ "type": "title_slide", "id": "t1", "title": "Intro to SCORM", "subtitle": "Core concepts in 5 minutes" },
{ "type": "content_slide", "id": "c1", "title": "What is SCORM?", "body_html": "<p><strong>SCORM</strong> lets e-learning content talk to an LMS.</p>" },
{ "type": "mcq", "id": "q1", "title": "Mini quiz", "prompt_html": "<p>What is SCORM for?</p>",
"options": [
{ "id": "a", "text_html": "Content–LMS communication", "correct": true },
{ "id": "b", "text_html": "Video editing" }
], "points": 10 },
{ "type": "summary", "id": "s1", "title": "Well done", "body_html": "<p>You learned the basics.</p>" }
]
}
build_from_spec(spec) → { project_id, screens: 4, warnings: [] }
build_package(project_id) → downloadable SCORM zip
├─ imsmanifest.xml
├─ index.html (self-contained player + runtime)
└─ assets/
Full working specs live in examples/ (games, branching, themed and i18n courses).
build_from_spec (single-call path), granular editing
(create_project / add_screen / update_screen / …), set_theme / set_tracking,
add_asset (SSRF-guarded imports), synthesize_speech (offline Piper TTS), video tools
(ffmpeg / HyperFrames motion-graphics), preview / validate_package / build_package,
lint_course (quality gate), export_qti (QTI 2.1).game screen composes mechanic primitives
(score/lives/timer/hints) + declarative when event if condition then action rules + branching
nodes; adaptive_practice estimates proficiency (Elo or Bayesian Knowledge Tracing) and
calibrates difficulty per learner. See docs/GAME-PATTERNS.md.cmi.interactions (question-level reporting), cmi.objectives,
adlcp:masteryscore (1.2) / completionThreshold (2004), LOM metadata, and a compact
suspend-data v2 encoding for resume state.style-minimal / style-playful / style-premium, and more)
layered with brand tokens: one style, many brands. Light/neutral/high-contrast presets,
WCAG-aware, prefers-reduced-motion support.add_asset via data-URI or https), ffmpeg processing,
programmatic motion-graphic/data-viz video (HyperFrames), built-in offline Turkish TTS (Piper).cmi5.xml packaging yet). See docs/GAME-XAPI.md.assessmentItems for interop with assessment
platforms. See docs/QTI.md.Claims are cheap; this repo ships its proof chain in CI:
imsmanifest.xml files are validated against the official
ADL/IMS schemas for both SCORM 1.2 and 2004 (automated in tests/test_conformance.py).scorm-probe launches built courses in real Chromium against a fake
LMS and asserts runtime behavior (init, navigation, scoring, completion). Also blocking in CI;
a silent skip fails the build.Details, procedures and honest limits: docs/CONFORMANCE.md. Accessibility: WCAG 2.2 AA conformance statement with explicitly documented limitations — docs/ACCESSIBILITY-CONFORMANCE.md.
The only official distribution channels for this project are:
| Channel | URL |
|---|---|
| Source repository | https://github.com/kemalyy/edumints-scorm-mcp |
| Authoring skill | https://github.com/kemalyy/edumints-scorm-skill |
| Container image | ghcr.io/kemalyy/edumints-scorm-mcp |
| Hosted MCP endpoint | https://scorm.edumints.com/mcp |
| Account portal | https://mcp.edumints.com |
Anything else — mirror repos, re-uploaded zips, PyPI/npm packages, other registries or domains — is unofficial and unverified. We publish no PyPI or npm packages today. If you find a lookalike, please report it via SECURITY.md.
| Doc | Contents |
|---|---|
| docs/SCREEN_TYPES.md | All 31 screen types with fields and examples |
| docs/CONFORMANCE.md | SCORM conformance evidence & procedures |
| docs/ACCESSIBILITY-CONFORMANCE.md | WCAG 2.2 AA statement |
| docs/LMS-INTEGRATION.md | LMS-specific integration notes |
| docs/QTI.md | QTI 2.1 export |
| docs/GAME-PATTERNS.md | Game engine patterns |
| docs/GAME-ADAPTIVE.md | Adaptive practice (Elo/BKT) |
| docs/GAME-ANTISLOP.md | Anti-slop quality gate |
| docs/GAME-XAPI.md | xAPI/cmi5 telemetry |
| docs/GAME-A11Y.md | Game accessibility |
| docs/ARCHITECTURE.md | System architecture |
MCP client (author) ──► scorm-mcp (compiler)
├─ core/ models (Pydantic), packaging, storage
├─ components/ HTML renderer + runtime engine + video compiler
├─ auth/ API-key + OAuth, SSRF guards
├─ themes/ design tokens / presets
├─ runtime/ vendored SCORM runtime (scorm-again, MIT)
└─ server.py FastMCP tools (HTTP)
Output: self-contained index.html + imsmanifest.xml + assets + SCORM runtime, zipped.
Issues and PRs welcome. The codebase favors small focused modules, additive changes and backward
compatibility. See CONTRIBUTING.md. Tests: pytest.
Built by edumints.com. SCORM is a trademark of ADL; other product names mentioned are trademarks of their respective owners (nominative use only).