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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceProvides 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.1416MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with Moodle via web services, allowing tasks like listing courses, assignments, events, and downloading files.104MIT
- Alicense-qualityDmaintenanceEnables AI agents to interact with Moodle LMS via the Moodle REST API, supporting management of courses, users, enrollments, grades, and content.GPL 3.0
- Flicense-qualityCmaintenanceEnables AI assistants to automatically pull Canvas LMS course materials into Obsidian, syncing files, assignments, grades, and announcements organized by course and module.
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zuckdorsey/moodle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server