ML, **a Claude Design .dc bundle** or **a mobile-learning platform content export** (Excel activity templates + media) into a **SCORM 2004 (or 1.2)** package ready to import into any LMS — assets inlined for **100% offline**, completion / progress / **score** tracking injected, ADL schemas bundled.
scorm-mcp-server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> Turn self-contained HTML, **a Claude Design .dc bundle** or **a mobile-learning platform content export** (Excel activity templates + media) into a **SCORM 2004 (or 1.2)** package ready to import into any LMS — assets inlined for **100% offline**, completion / progress / **score** tracking injected, ADL schemas bundled.
*The bundled local harness (scorm-test-harness.html) playing a package: progress 0 → 100%, completion, and the live LMS API-call log (0 errors). Illustration.*
An **MCP server** exposing three tools: **scorm_package** converts a finished HTML learning module into a .zip (PIF) any SCORM-compliant LMS can import, **scorm_validate** checks any existing SCORM zip (made by any tool) and explains exactly why an LMS would reject it, and **scorm_selftest** is a 1-second health check.
**Principle: WRAP, don't rewrite.** Your HTML is preserved; the tool only:
1. **Inlines every asset** (CSS, @import, fonts, JS, images, srcset, favicons) as data URIs → runs **100% offline**.
2. **Injects a small runtime** that reports **completion**, **progress (%)** and **time spent**, with **resume** across sessions.
3. **Generates the manifest** and **bundles the 15 official ADL XSD schemas** — the manifest is validated against them (real conformance, not just "well-formed").
✅ Status — validated on a real LMS
- **325/325 automated checks** green: 23 converter · 15 runtime · 15 MCP · 1 schema conformance (xmllint) · 6 security · 11 features · 13 auto-milestones · 21 V2 (bundle / .dc / score) · 10 output-dir · 9 tracking-signal · 32 hardening · 29 SCORM 1.2 · 12 CLI/batch · 16 web UI · **44 mobile-learning migration** · **35 package validation** · **33 question-level interactions** — plus 6 bonus strict-runtime checks (scorm-again).
- **SCORM Cloud (real LMS):** imports cleanly (recognized as *SCORM 2004 4th Ed.*, "manifest looks great"), and the dashboard reports **completion = complete, success = passed, time tracked**.
Input formats
| Input (input_path or html) | Handling |
|---|---|
| A single self-contained .html (e.g. Claude Design "standalone HTML" export) | assets inlined, runtime injected — v1 path |
| A **folder or .zip** (multi-file module) | whole tree preserved; entry HTML inlined; manifest lists every file |
| A **Claude Design .dc bundle** (*.dc.html + support.js + _ds/) | auto-detected; CDN libs (React/Babel…) **vendored offline** via window.__resources (no source patch); runtime injected before support.js |
| A **mobile-learning platform content export** (Excel activity templates + media/) | auto-detected; an interactive HTML course is **rebuilt from the templates** — info / transition / flash cards, quiz questions, media codes ([media:…], [H1:…], [quote:…], !!), scored quizzes reporting cmi.score — then packaged. Course title derived from the template names; with --batch, a whole catalogue migrates in one run |
Pass a .dc bundle as its **folder or .zip** (not the lone .dc.html, which is inert without its siblings).
Scores & quizzes (optional)
Set **mastery_score** (0..1) to enable score-based success and add sequencing objectives to the manifest. Report the score from your content in one line — no SCORM knowledge required:
The runtime maps these to cmi.score.*, sets success_status = passed/failed against mastery_score, and reports completion/progress. (dc:* event names are accepted as aliases.)
**Question-level tracking (v2.3)** — report each answer as a cmi.interactions record, so the LMS gradebook shows *which* questions were missed, not just the total:
Dialect-aware (2004 learner_response/timestamp vs 1.2 student_response/time, incorrect vs wrong) and best-effort by design: an LMS that refuses interaction writes gets a logged warning and the session carries on. Quizzes generated by the mobile-learning migration report their interactions automatically — one record per question, with the question text, the learner's answer, the expected answer and the latency.