Skip to content
Conduit

mcp server

lms-course-archiver

Agent-powered LMS course archiving through Chrome DevTools MCP, with Week-based organization, verification, and video link extraction.

y10reo/lms-course-archivercommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 22, 2026

LMS Course Archiver

Quality License: Apache-2.0

English · 中文

An experimental cross-LMS course-material archiving workflow powered by Chrome DevTools MCP. Moodle, Canvas, and Blackboard adapters are experimental until their read-only fixtures pass.

LMS Course Archiver is built on Chrome DevTools MCP. After you provide a destination and a bounded course/Week range, your AI agent uses the Chrome session you already logged into to discover, download, classify, hash, and verify non-video materials. Videos are intentionally listed for manual download.

Important: Chrome DevTools MCP is a required runtime dependency. This repository is the archive workflow and deterministic file layer; it is not a standalone browser downloader.

Why this exists

API downloaders are excellent when the required LMS API is enabled. University LMS instances often depend on browser SSO, Okta, MFA, custom plugins, or pages that are not represented consistently by an API. This Skill works through the authenticated Chrome page instead, while keeping the local archive deterministic and auditable.

What happens automatically

You answer two configuration questions:

  1. Where should the archive be saved?
  2. What course, inclusive Week range, and course entry URL should be scanned?

Then the agent automatically:

  • verifies the course identity before downloading;
  • scans only the selected Week range and directly linked resources;
  • downloads official non-video files one at a time;
  • classifies lectures, tutorials, solutions, data, readings, H5P, and teaching pages;
  • prevents overwrites, computes SHA-256 hashes, preserves versions, and resumes safely;
  • generates source, pending, movement, and video-link manifests.

Login, MFA, browser authorization, and filesystem permission dialogs remain user-controlled. Videos are never downloaded by this Skill: it records stable viewer links grouped by Week.

Architecture

User configuration
        |
AI agent + archive-course-materials Skill
        |  scope, discovery, classification, safety rules
Chrome DevTools MCP
        |  browser control and page inspection
Logged-in LMS (Moodle / Canvas / Blackboard)
        |
archive_course.py
        |  hashes, versions, manifests, resume, verification
Local Week archive

Requirements

  • An MCP-capable AI client such as Codex, Claude Code, or another compatible client.
  • Node.js LTS, npm, and current stable Google Chrome.
  • The chrome-devtools-mcp server installed and connected.
  • An active SSO/MFA session for the target LMS.
  • Python 3.10+ for the deterministic archive script.

Install Chrome DevTools MCP

For Codex on Windows:

codex mcp add chrome-devtools -- cmd /c npx -y chrome-devtools-mcp@latest --autoConnect --no-usage-statistics

If npx is not on PATH, replace it with the absolute path to npx.cmd. Set the server startup timeout to 20 seconds in the client configuration, then restart the client.

To connect to the Chrome session you already use, open chrome://inspect/#remote-debugging and enable Allow remote debugging for this browser instance. The official --autoConnect mode requires Chrome 144 or newer and this remote-debugging setting.

Verify with codex mcp list, then ask the client to list the current Chrome pages. Do not start an archive until list_pages works.

Chrome DevTools MCP can inspect and control data in the connected browser instance. Close email, banking, and other sensitive tabs, or use a dedicated Chrome instance/profile that is logged into the LMS only. See the official security disclaimer.

Install this Skill

npx skills add y10reo/lms-course-archiver --skill archive-course-materials

The Skill is stored in skills/archive-course-materials. See docs/chrome-devtools-mcp-setup.md for Codex, Claude Code, and generic MCP-client setup.

Moodle-DL comparison

The project commonly gets compared with Moodle-DL (not “Model DL”):

DimensionLMS Course ArchiverMoodle-DL
ArchitectureAI agent + Skill + Chrome DevTools MCPPython CLI/GUI
Access pathControls an already-authenticated browserMoodle Mobile API
Platform scopeMoodle, Canvas, Blackboard, and similar web LMSMoodle
AuthenticationBrowser SSO/Okta/MFA friendlyMobile API must be available
AutomationTwo answers, then automatic discovery, organization, and verificationConfigured course synchronization
ScopeSelected course and Week intervalSelected course, typically broader synchronization
OrganizationWeek, teaching type, sources, and audit manifestsMoodle course structure
IntegritySHA-256, version history, baseline protection, resumable stateIncremental download and offline retention
VideosLinks only; user downloads manuallyConfigurable handling of some external videos/resources
Sensitive areasExcludes grades, submissions, quiz answers, attendance, and messagesCan be configured for assignments, quizzes, forums, and more
Best fitBrowser-only access, complex SSO, precise and auditable archivesMoodle Mobile API available and maximum sync speed is the priority

Moodle-DL is the faster choice when its required API is available. LMS Course Archiver is designed for browser-only access, complex university authentication, bounded Week ranges, and verifiable local archives. Moodle-DL explicitly depends on the Moodle Mobile API; Monash states that the Moodle mobile app is not compatible with Monash Moodle, so the combination is a strong compatibility warning for Monash students. This is a likely incompatibility, not an untested absolute guarantee. See the Moodle-DL documentation and Monash guidance.

Safety boundaries

  • Uses only material visible to the current authenticated browser session.
  • Never bypasses authentication, DRM, signed access controls, or LMS restrictions.
  • Never downloads course videos or captures media streams.
  • Never visits grades, submissions, quiz answers, attendance, messages, or unrelated weeks.
  • Never stores LMS passwords, tokens, cookies, or real course data in this repository.
  • Never overwrites pre-existing files in the destination archive.

Status

v0.1.0 is a public beta. Moodle is the first validation target; Canvas and Blackboard remain experimental until their fixtures and read-only replays pass. Contributions that add anonymized LMS fixtures, adapter notes, or reproducible bug reports are welcome.

License

Apache-2.0. See LICENSE.

↑↓ navigate openesc close