moodle-mcp
moodle-mcp
Model Context Protocol Server für Moodle LMS — verbinde Hermes, Claude Code und OpenCode mit deinem Moodle. Rufe Aufgaben, Noten und Fristen ab, synchronisiere mit Obsidian und erhalte WhatsApp-Benachrichtigungen.
Übersicht • Funktionen • Schnellstart • Konfiguration • Agenteneinrichtung • Werkzeuge • Obsidian-Synchronisation
Übersicht
moodle-mcp verbindet die Moodle-Webdienste-API mit dem Model Context Protocol, sodass KI-Agenten als dein akademischer Assistent fungieren können. Es wurde für die Polibatam (Multi-Klassen-Filterung) entwickelt, funktioniert aber mit jeder Moodle-Instanz, die Webdienste aktiviert hat.
Abspaltung von loyaniu/moodle-mcp — erweitert von 22 auf 40 Werkzeuge mit Obsidian-Synchronisation, Material-Downloads, Abgabe-Werkzeugen, Kalenderintegration, gleichzeitigem Abruf und automatischer Semesterarchivierung.
[!TIPP] Funktioniert mit jedem Moodle LMS — setze einfach
MOODLE_URLauf deine Instanz. Der Polibatam-Klassenfilter (MOODLE_MY_CLASS) ist optional.
Related MCP server: mcp-moodle
Funktionen
Aufgaben & Fristen — nach Klassenzeitslot gefiltert, nach Dringlichkeit sortiert, mit umsetzbaren Aufgabenlisten
Noten & Fortschritt — Kurs-Checks, Studienbelastung und Fortschrittsverfolgung
Kursinhalte & Suche — Abschnitte, Module, Materialien, Ankündigungen, aktuelle Aktivitäten
Obsidian-Synchronisation — Ein-Befehl-Export von Dashboards, Fristen und Kursnotizen (mit automatischer Semesterarchivierung)
Material-Downloads — Kursdateien und Aufgabenanhänge auflisten und herunterladen
Abgaben — Text einreichen, Status prüfen und Feedback lesen
Kalender — Bevorstehende Ereignisse, Erinnerungen erstellen (H-2), Aktivitäten als erledigt markieren
Agentenbereit — Einzelnes
install-mcp.shfür Hermes, Claude Code und OpenCode
Schnellstart
Einzeilige Installation
curl -fsSL https://raw.githubusercontent.com/zuckdorsey/moodle-mcp/main/scripts/install-mcp.sh | bashErkennt automatisch installierte Agenten und konfiguriert jeden. Für einen Probelauf:
bash scripts/install-mcp.sh --dry-runÜberprüfung
# Hermes (profile: akademik)
hermes --profile akademik mcp test moodle
# → ✓ Connected ✓ Tools discovered: 40
# Claude Code
claude mcp list
# Run tests
PYTHONPATH=src .venv/bin/python -m unittest discover -s tests -v[!HINWEIS] Bei der Entwicklung die lokale Quelle PyPI vorziehen – der Launcher setzt
PYTHONPATHautomatisch aufsrc/.
Konfiguration
1. Moodle-Token holen
Öffne
https://<dein-moodle>/user/managetoken.phpSuche die Zeile mit Moodle mobile web service unter
ServiceKopiere den Token
2. .env erstellen
cp .env.example .envMOODLE_URL=https://your-moodle.example.com/webservice/rest/server.php
MOODLE_TOKEN=your_token_here
# Optional — Polibatam class-slot filter (e.g. Pagi C, Siang A)
MOODLE_MY_CLASS=Pagi C
# Optional — custom vault path
OBSIDIAN_VAULT_PATH=/home/you/Obsidian VaultVariable | Erforderlich | Beschreibung |
| ja | Moodle-REST-Endpunkt ( |
| ja | Mobile-Webdienst-Token |
| nein | Regex-Filter für Multi-Klassen-Aufgabentitel |
| nein | Vault-Stammverzeichnis (Standard: |
3. Paket installieren
# with uv (recommended)
uv pip install -e .
# or pip
pip install -e .[!WARNUNG]
.envniemals committen – es enthält einen Token mit vollständigem API-Zugriff. Es ist bereits in.gitignore.
Agenteneinrichtung
Wähle deinen Agenten – alle verwenden denselben lokalen Launcher unter scripts/moodle_mcp_local_launch.py.
Hermes Agent (empfohlen)
bash scripts/install-mcp.sh --agent hermes --profile akademikManuell (~/.hermes/profiles/akademik/config.yaml):
mcp_servers:
moodle:
command: /home/you/Programming/Python/moodle-mcp/.venv/bin/python
args: [/home/you/Programming/Python/moodle-mcp/scripts/moodle_mcp_local_launch.py]
env:
MOODLE_URL: ${MOODLE_URL}
MOODLE_TOKEN: ${MOODLE_TOKEN}
MOODLE_MY_CLASS: "Pagi C"
OBSIDIAN_VAULT_PATH: "/home/you/Obsidian Vault"Claude Code
bash scripts/install-mcp.sh --agent claude-code
# or manually
claude mcp add -s user moodle-mcp -- python3 /path/to/moodle-mcp/scripts/moodle_mcp_local_launch.pyGlobales JSON (~/.claude/settings.json):
{
"mcpServers": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}OpenCode
bash scripts/install-mcp.sh --agent opencode~/.config/opencode/config.json:
{
"mcp": {
"moodle-mcp": {
"command": "python3",
"args": ["/path/to/moodle-mcp/scripts/moodle_mcp_local_launch.py"],
"environment": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}Claude Desktop / Cursor
Füge zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://your-moodle/webservice/rest/server.php",
"MOODLE_TOKEN": "your_token_here"
}
}
}
}Starte die Desktop-App neu – die Werkzeuge erscheinen im Auswahlmenü.
Werkzeuge
40 Werkzeuge in 7 Gruppen. Rufe sie beim Namen von einem verbundenen Agenten auf (z. B. "liste meine Moodle-Kurse auf" → get_my_courses).
Werkzeug | Beschreibung |
| Eingeschriebene Kurse |
| Abschnitte & Module für einen Kurs |
| Suche über alle Materialien |
| Ankündigungen im News-Forum |
| Aktuelle Aktivitäten seit Zeitstempel |
| Neue Materialien/Ankündigungen |
Werkzeug | Beschreibung |
| Aufgaben (Klassenzeitslot gefiltert) |
| Abgabe- & Bewertungsstatus |
| Fristen nach Fälligkeitsdatum sortiert |
| Überfällige, nicht eingereichte |
| Priorisierte Dringlichkeitsliste |
| Status + Anforderungen + Materialien |
| Leistungen & Kriterien |
| Für Aufgabe relevante Inhalte |
| Teilaufgaben mit kritischem Pfad |
| Zeitplan, Ressourcen, Meilensteine |
| Textantwort einreichen |
| Feedback & Rubrikergebnisse |
Werkzeug | Beschreibung |
| Übersicht oder kursweise Details |
| Fortschritt der Abschlussaktivitäten |
| Gesundheitscheck (Fortschritt + Noten + Überfälliges) |
| Aufgabenverteilung nach Woche |
| Detaillierte Abgabe- & Feedbackinformationen |
Werkzeug | Beschreibung |
| Bevorstehende Moodle-Ereignisse |
| H-2 Erinnerung erstellen |
| Abschlussstatus |
| Aktivität als erledigt markieren |
Werkzeug | Beschreibung |
| Kurse + Fristen + Noten |
| Überfälliges, Heute, aktuelle Noten |
| Eingereicht, bewertet, überfällig, Fortschritt |
| Natürlichsprachliche Weiterleitung |
| Änderungserkennung in Kursen |
Werkzeug | Beschreibung |
| Vollständige Vault-Synchronisation (Auto-Archiv bei Semesterwechsel) |
| Nur Fristen |
| Kursübersicht als Notiz |
| Herunterladbare Dateien auflisten |
| In |
| Aufgabendateien herunterladen |
[!TIPP] Versuche: "was ist diese Woche fällig?" →
get_upcoming_deadlines, "analysiere Aufgaben Basis Daten" →analyze_assignment, "synchronisiere mit Obsidian" →sync_moodle_to_obsidian.
Obsidian-Synchronisation
Die Synchronisation erstellt Notizen unter Academic/Moodle in deinem Vault:
Obsidian Vault/Academic/
Moodle/ ← current semester (always up-to-date)
.semester_courses.json ← hidden state (course IDs)
Dashboard.md
Deadlines.md
Grades.md
Courses/
Archive/
Semester-2026-07/ ← auto-created on rollover
Dashboard.md
Courses/
Archive-README.mdAutomatische Semesterarchivierung wird ausgelöst, wenn sich >50 % der Kurs-IDs ändern (oder alle neu sind). Ein einzelner Kurswechsel wird ignoriert.
PYTHONPATH=src python - <<'PY'
from moodle_mcp import api
print(api.sync_moodle_to_obsidian())
PYSicherheitshinweise
[!VORSICHT] Dein Moodle-Token gewährt als dein Benutzer vollen API-Zugriff. Behandle ihn wie ein Passwort.
Tokens werden serverseitig geladen und nie an das Modell gesendet.
Setze
MOODLE_URL/MOODLE_TOKENals Umgebungsgeheimnisse in CI ein.moodle.pyverwendet browserähnlichenUser-Agent+ POST für Cloudflare-Kompatibilität.
Danksagungen
Abspaltung von loyaniu/moodle-mcp — Dank an alle ursprünglichen Mitwirkenden:
Mitwirkender | Rolle |
Ursprünglicher Autor, Moodle-REST-Integration, Kernserver | |
Dashboard, Studienbelastung, Gesundheitschecks | |
Kursinhalte & Suchkorrekturen | |
Sicherheitsbewertungs-Badge |
Ergänzungen in dieser Abspaltung
Obsidian-Synchronisation + automatische Semesterarchivierung
Material-Downloads & Aufgabenanhänge
Abgabe- & Feedback-Werkzeuge, Kalender & Abschluss
Polibatam-Klassenzeitslot-Filter (
MOODLE_MY_CLASS)Gleichzeitiger Abruf (~10× schnellere umsetzbare Aufgaben)
Universelles
install-mcp.shfür Hermes / Claude Code / OpenCode
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
- WhatSyncOAuthapp.whatsync
WhatsApp for Claude, ChatGPT or any AI agent: search, reply and send. Personal or Business API.
Your own WhatsApp in Claude and ChatGPT: read chats, draft replies, send messages you approve.
AI-powered LMS course builder: 89 tools, 17 skills, SCORM/xAPI export, agentic UI
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides Claude with full access to Moodle learning management systems, enabling interaction with courses, files, assignments, grades, and calendar events. It also supports building Obsidian study vaults from course materials through automated knowledge graph creation.17 npm18MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.1033 PyPI4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- FlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server that connects AI coding agents to your Moodle LMS. Fetch assignments, grades, deadlines, and sync everything to Obsidian automatically.-