mcp server
lms-course-archiver
Agent-powered LMS course archiving through Chrome DevTools MCP, with Week-based organization, verification, and video link extraction.
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, 2026LMS Course Archiver
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:
- Where should the archive be saved?
- 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-mcpserver 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”):
| Dimension | LMS Course Archiver | Moodle-DL |
|---|---|---|
| Architecture | AI agent + Skill + Chrome DevTools MCP | Python CLI/GUI |
| Access path | Controls an already-authenticated browser | Moodle Mobile API |
| Platform scope | Moodle, Canvas, Blackboard, and similar web LMS | Moodle |
| Authentication | Browser SSO/Okta/MFA friendly | Mobile API must be available |
| Automation | Two answers, then automatic discovery, organization, and verification | Configured course synchronization |
| Scope | Selected course and Week interval | Selected course, typically broader synchronization |
| Organization | Week, teaching type, sources, and audit manifests | Moodle course structure |
| Integrity | SHA-256, version history, baseline protection, resumable state | Incremental download and offline retention |
| Videos | Links only; user downloads manually | Configurable handling of some external videos/resources |
| Sensitive areas | Excludes grades, submissions, quiz answers, attendance, and messages | Can be configured for assignments, quizzes, forums, and more |
| Best fit | Browser-only access, complex SSO, precise and auditable archives | Moodle 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.