原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

SCORM Packager (HTML → SCORM 2004)

作者:giacomomaria81版本 2.3.0i★ –i在你的电脑上运行
注册名称io.github.giacomomaria81/scorm-mcp-server

安装

概览

作者提供的说明(英文原文)

Turn HTML or mobile-learning exports into SCORM 2004/1.2 packages, and validate any SCORM zip.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 网页与浏览器

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

下载作者的 .mcpb 文件

链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。

在终端中运行这条命令

claude mcp add scorm --env SCORM_OUTPUT_DIR=your-value -- npx -y scorm-mcp-server

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "scorm": {
      "command": "npx",
      "args": [
        "-y",
        "scorm-mcp-server"
      ],
      "env": {
        "SCORM_OUTPUT_DIR": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "scorm": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "scorm-mcp-server"
      ],
      "env": {
        "SCORM_OUTPUT_DIR": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • SCORM_OUTPUT_DIR env
    Absolute path of the folder where generated SCORM .zip packages are written. Defaults to the current working directory.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 giacomomaria81 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“网页与浏览器”中的其他服务器比较i

  • 星标数多于此分类中其他 1380 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 1380 个服务器的 26% 更新
  • 基础检查结果等于或优于此分类中其他 1380 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

SCORM Packager (HTML → SCORM 2004) 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(2.3.0)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, MCPB。

有什么可以替代它?

同一分类中有:Browser Use, Chrome DevTools MCP, MCP Server Browser

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Browser Use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

作者:browser-use广泛使用↓ 155.2万/周★ 12万18天前更新

电脑或云端✓ browser-use.com

Chrome DevTools MCP

MCP server for Chrome DevTools

作者:ChromeDevTools广泛使用↓ 188.4万/周★ 5.5万17天前更新

在你的电脑上运行

MCP Server Browser

MCP server for browser use access

作者:bytedance广泛使用↓ 792/周★ 4万14个月前更新

在你的电脑上运行

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

scorm-mcp-server

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:

window.SCORM2004.score(8, 0, 10);                                   // raw, min, max

window.dispatchEvent(new CustomEvent("scorm:score", { detail: { raw: 8, min: 0, max: 10 } })); window.dispatchEvent(new CustomEvent("scorm:progress", { detail: 0.5 })); // 0..1 window.dispatchEvent(new CustomEvent("scorm:complete"));

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:

window.SCORM2004.interaction({

id: "quiz1-q3", type: "choice", description: "Which colour is the brand?", learnerResponse: "Blue", correctResponse: "Red", result: false, latencyMs: 12000, }); // or, without touching the API: window.dispatchEvent(new CustomEvent("scorm:interaction", { detail: { id: "q3", result: true } }));

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.

SCORM 1.2, batch mode, CLI (v2.1)

SCORM 1.2 — pass scorm_version: "1.2" and you get a 1.2 manifest (validated against the bundled 1.2 XSDs, with adlcp:masteryscore when mastery_score is set). The injected runtime is *adaptive*: it speaks to whichever API the hosting LMS exposes (API_1484_11 or API), maps the data model (single lesson_status, 0-100 score, HH:MM:SS session time, 4096-char suspend data) and never downgrades a passed status.

Batch — batch: true treats input_path as a directory of courses (each sub-directory, .zip or .html = one course). One package per course, one consolidated batch-report.json, and a broken course never sinks the others.

CLI — no MCP client required:

npx -y scorm-mcp-server ui            # local drag & drop web UI

npx -y scorm-mcp-server pack course.html --title "My course" npx -y scorm-mcp-server pack ./courses --batch --scorm-version 1.2 npx -y scorm-mcp-server validate pkg.zip # conformance-check an existing package npx -y scorm-mcp-server selftest # 1-second health check

Web UI — ui opens a localhost page: drop an .html or .zip, pick the SCORM edition and an optional pass mark, download the package. Runs entirely on your machine; nothing is uploaded anywhere.

Library — buildPackage() is a public API for pipelines and SaaS backends:

import { buildPackage } from "scorm-mcp-server";

const r = await buildPackage({ html, title: "My course", scormVersion: "1.2", masteryScore: 0.6 }); // r.zip (Buffer) · r.fileName · r.warnings · r.milestoneIds …

Diagnostic — the scorm_selftest MCP tool packages a constant built-in HTML and reports version, duration and output path: it separates "server broken" from "input problem" in one second.

Validate any SCORM package (v2.3)

"Why does my LMS reject this zip?" — scorm_validate answers it for any SCORM package, not only those produced here, and the input is never modified:

npx -y scorm-mcp-server validate course.zip          # human-readable report

npx -y scorm-mcp-server validate course.zip --json # machine-readable

Checks: zip readability, imsmanifest.xml at the ROOT (detects the classic *"zipped the folder instead of its contents"* mistake and says how to fix it), well-formed manifest, SCORM edition detection (2004/1.2), launchable organization/item/resource chain, launch file and every present in the archive (case-only mismatches flagged — they work on Windows and fail on Linux LMS servers), and full XSD validation against the official ADL schemas — using the package's own XSDs first and falling back to the embedded copies, so packages that ship without schemas validate too. Exit code 0/1 for CI pipelines; also exposed as the scorm_validate MCP tool and the validatePackage() library API.

Install

Option 0 — try it online, no install

[https://scormpackager.vercel.app](https://scormpackager.vercel.app) — drop a course, pick the SCORM edition, download the package. Files are processed in memory and never stored, but they do travel to a server; for real work use the local options below, where nothing leaves your machine (and there is no 4 MB limit).

Option A — one-click (recommended)

Download `scorm-mcp-server-x.y.z.mcpb` from the Releases, then in Claude Desktop → Settings → Extensions, drag-drop the .mcpb, pick an output folder, and enable it.

Option B — npm (any MCP client)

No install step: add this to your client's MCP config (~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop):

{

"mcpServers": { "scorm": { "command": "npx", "args": ["-y", "scorm-mcp-server"], "env": { "SCORM_OUTPUT_DIR": "/ABSOLUTE/PATH/scorm-packages" } } } }

Registry name: **`io.github.giacomomaria81/scorm-mcp-server`** ([MCP registry](https://registry.modelcontextprotocol.io/v0/servers?search=scorm-mcp-server)).
Option C — from source (developer)
git clone <this-repo> && cd scorm-mcp-server

npm install # dist/ is prebuilt; npm run build is optional

Then point the config at `node /ABSOLUTE/PATH/scorm-mcp-server/dist/index.js`.

Restart Claude. The scorm_package tool is now available.

Usage

In a conversation: build your module with Claude Design, then say "package this module as SCORM." Claude calls scorm_package and returns the path to the .zip.

Progress & completion — it just works

You don't have to prepare anything: if your HTML declares no milestone, the packager auto-generates them from the document structure (sections → articles → headings, capped at 8, trigger view). Plain HTML gets meaningful progress out of the box. Disable with auto_milestones: false. Want success_status = passed on completion without touching the HTML? Pass success_on_completion: true.

Declarative milestones (recommended for fine control)

Mark the meaningful steps directly in your HTML — explicit milestones always take precedence over auto-generation. The runtime computes progress_measure = milestones_reached / total, and sets completion_status = "completed" once all are reached.

AttributeEffect
data-jalon="unique-id"declares a milestone
data-trigger="view"reached when scrolled into view (default)
data-trigger="click"reached on click
data-trigger="ended"reached when a video/audio ends
<section data-jalon="intro"       data-trigger="view">…</section>

I read it …

Recommended: 4–8 milestones per micro-module. Resume is automatic (cmi.suspend_data + cmi.location); progress never regresses.

Programmatic milestones — window.SCORM2004.reach("quiz-passed") works even if the id has no data-jalon element: unknown ids are declared on the fly and count in the total. To register one *before* it's reached (accurate denominator), use window.SCORM2004.declare("quiz-passed") early. Both survive resume.

Success status (opt-in) — add data-scorm-success="on-completion" on any element (e.g. ) and the runtime also sets cmi.success_status="passed" when the modul

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx