pylanis
Ein MCP-Server für das Schulportal Hessen (Lanis), der KI-Assistenten wie Claude ermöglicht, direkt auf Schulinformationen zuzugreifen – Vertretungsplan, Kalender, Hausaufgaben, Nachrichten und mehr.
Was ist pylanis?
pylanis verbindet deine KI (z. B. Claude) mit dem Schulportal Hessen. Sobald der Server eingerichtet ist, kannst du deiner KI ganz natürlich Fragen stellen wie:
„Was steht heute im Vertretungsplan?" „Welche Hausaufgaben habe ich diese Woche?" „Zeig mir alle Termine im April."
Der Server kommuniziert über das standardisierte MCP-Protokoll und ist ausschließlich lesend – er verändert keine Daten im Schulportal.
Das Paket wird auf PyPI als pylanis veröffentlicht. Bisher enthält es den MCP-Server (Befehl lanis-mcp). Ein Python-SDK und ein Kommandozeilenwerkzeug für das Schulportal sollen folgen.
Voraussetzungen
- Ein aktiver Lanis-Account (Schulportal Hessen)
- Die Schul-ID deiner Schule (siehe Schul-ID herausfinden)
uvinstalliert (modernes Python-Paketverwaltungstool)- Ein MCP-kompatibler Client, z. B. Claude Desktop
Einrichtung
Schul-ID herausfinden
Falls du deine Schul-ID nicht kennst, kannst du sie über das Tool get_schools ermitteln. Frage deine KI einfach:
„Suche die Schul-ID für die [Name deiner Schule] in [Stadt]."
Das Tool get_schools benötigt keine Anmeldung und listet alle Schulen im Schulportal Hessen mit ihrer ID auf.
Claude Desktop konfigurieren
Öffne die Konfigurationsdatei von Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Füge einen Eintrag unter mcpServers hinzu. Wähle einen der drei Authentifizierungsmodi:
Modus 1 – Benutzername & Passwort (empfohlen)
{
"mcpServers": {
"lanis": {
"command": "uvx",
"args": ["--from", "pylanis", "lanis-mcp"],
"env": {
"LANIS_SCHOOL_ID": "1234",
"LANIS_USERNAME": "vorname.nachname",
"LANIS_PASSWORD": "dein-passwort"
}
}
}
}
Modus 2 – Session-Cookie (schneller, kein Passwort)
{
"mcpServers": {
"lanis": {
"command": "uvx",
"args": ["--from", "pylanis", "lanis-mcp"],
"env": {
"LANIS_SCHOOL_ID": "1234",
"LANIS_SESSION_ID": "dein-session-cookie"
}
}
}
}
Hinweis: Der Session-Cookie läuft nach einiger Zeit ab. Bei Ablauf gibt der Server eine entsprechende Fehlermeldung zurück – einfach die Anfrage wiederholen oder auf Modus 1 wechseln.
Modus 3 – Schule nach Name & Stadt
{
"mcpServers": {
"lanis": {
"command": "uvx",
"args": ["--from", "pylanis", "lanis-mcp"],
"env": {
"LANIS_SCHOOL_NAME": "Mustergymnasium",
"LANIS_SCHOOL_CITY": "Musterstadt",
"LANIS_USERNAME": "vorname.nachname",
"LANIS_PASSWORD": "dein-passwort"
}
}
}
}
Nach dem Speichern Claude Desktop neu starten.
Docker MCP
Docker-Image bauen und registrieren
Voraussetzung: mise installiert.
# Nur bauen
mise run docker-build
# Nur im Docker MCP Katalog registrieren
mise run docker-register
# Beides nacheinander
mise run docker
Verfügbare Tools
Alle Tools sind nur lesend und verändern keine Daten. Die meisten Tools unterstützen die Ausgabeformate markdown (Standard, für Menschen lesbar) und json (maschinenlesbar).
Einrichtung
| Tool | Beschreibung | Auth erforderlich |
|---|---|---|
get_schools |
Listet alle Schulen im Schulportal Hessen mit ID, Name und Stadt | ❌ |
get_available_apps |
Zeigt, welche der unterstützten Apps an deiner Schule verfügbar sind | ✅ |
check_app_availability |
Prüft, ob eine bestimmte App an deiner Schule verfügbar ist | ✅ |
Stundenplan & Unterricht
| Tool | Beschreibung | Parameter | Auth erforderlich |
|---|---|---|---|
get_substitution_plan |
Heutiger Vertretungsplan (Klasse, Fach, Raum, Lehrer, Hinweise) | – | ✅ |
get_timetable |
Wöchentlicher Stundenplan (Fach, Raum, Lehrer je Stunde und Tag) | – | ✅ |
get_learning_groups |
Lerngruppen/Kurse, in denen du eingeschrieben bist, inkl. Lehrkraft | – | ✅ |
Kalender
| Tool | Beschreibung | Parameter | Auth erforderlich |
|---|---|---|---|
get_calendar |
Schulkalender für einen beliebigen Zeitraum | start, end (JJJJ-MM-TT), include_responsible |
✅ |
get_calendar_of_month |
Schulkalender für den aktuellen Monat (Kurzform) | include_responsible |
✅ |
Hinweis zu
include_responsible: Wenntrue, wird für jeden Termin eine zusätzliche API-Anfrage gestellt. Bei vielen Terminen kann dies langsam sein.
Hausaufgaben & Aufgaben
| Tool | Beschreibung | Auth erforderlich |
|---|---|---|
get_tasks |
Aufgaben und Hausaufgaben aus „Mein Unterricht" (Fach, Lehrer, Beschreibung, Anhänge) | ✅ |
Nachrichten
| Tool | Beschreibung | Parameter | Auth erforderlich |
|---|---|---|---|
get_conversations |
Nachrichten aus dem „Nachrichten"-Bereich | number (Standard: 10, -1 = alle) |
✅ |
Hinweis:
-1lädt alle Nachrichten und kann den Lanis-Server stark belasten. Bitte sparsam verwenden.
Dateien
| Tool | Beschreibung | Parameter | Auth erforderlich |
|---|---|---|---|
get_file_storage |
Inhalt des Schulischen Dateispeichers (Ordner & Dateien mit Download-Links) | folder_id (optional, für Unterordner) |
✅ |
get_file_distribution |
Verteilte Dateien und Ankündigungen (Dateiverteilung / GRB Infos) | – | ✅ |
Portal
| Tool | Beschreibung | Auth erforderlich |
|---|---|---|
get_apps |
Alle App-Kacheln auf dem Lanis-Dashboard (Name, Link, Kategorie) | ✅ |
get_folders |
Ordner/Kategorien auf dem Lanis-Dashboard | ✅ |
get_votes |
Aktive Abstimmungen und Wahlen (z. B. Schülerratswahl) | ✅ |
Beispiele
Hier sind typische Fragen, die du deiner KI stellen kannst:
Einrichtung & Überblick
Welche Schul-ID hat das Gymnasium Musterstadt?
Welche Lanis-Apps sind an meiner Schule verfügbar?
Stundenplan & Vertretung
Was steht heute im Vertretungsplan?
Zeig mir meinen Stundenplan für diese Woche.
In welchen Kursen bin ich eingeschrieben und wer sind meine Lehrkräfte?
Wer vertritt heute Herrn Müller in der 3. Stunde?
Kalender
Welche Schultermine gibt es im April?
Zeig mir alle Termine zwischen dem 1. und 15. März.
Was sind die nächsten Schulveranstaltungen diesen Monat?
Hausaufgaben & Aufgaben
Welche Hausaufgaben habe ich aktuell?
Gibt es Aufgaben mit Anhängen, die ich herunterladen kann?
Was muss ich für Mathematik vorbereiten?
Nachrichten
Zeig mir meine letzten 5 Nachrichten.
Habe ich ungelesene Nachrichten?
Was hat die Schule zuletzt kommuniziert?
Dateien
Was liegt im Schulischen Dateispeicher?
Gibt es neue verteilte Dateien oder Ankündigungen?
Ausgabeformate
Die meisten Tools unterstützen zwei Ausgabeformate:
markdown(Standard): Für Menschen lesbar, ideal für die direkte Anzeige in der KI-Konversationjson: Maschinenlesbar, nützlich wenn du die Daten weiterverarbeiten möchtest
Du kannst das Format in deiner Anfrage angeben:
Zeig mir den Vertretungsplan als JSON.
Hinweis: Antworten sind auf 25.000 Zeichen begrenzt. Bei sehr langen Ergebnissen wird die Ausgabe gekürzt und ein Hinweis angezeigt. Verwende in diesem Fall Filter (z. B. einen engeren Datumsbereich beim Kalender), um die Ergebnisse einzugrenzen.
Fehlerbehebung
„Session abgelaufen" / Session expired
Der Session-Cookie ist abgelaufen (nur bei Modus 2 relevant). Der Server setzt die Verbindung automatisch zurück. Einfach die Anfrage erneut stellen – beim nächsten Versuch wird eine neue Session aufgebaut.
„App nicht verfügbar an deiner Schule"
Nicht alle Schulen haben alle Lanis-Module aktiviert. Mit get_available_apps kannst du prüfen, welche der unterstützten Apps an deiner Schule freigeschaltet sind.
Kein Vertretungsplan verfügbar
Der Vertretungsplan ist nur an Schultagen verfügbar. An Wochenenden und Feiertagen gibt es keinen Plan.
Manche Schulen zeigen die App „Vertretungsplan“ an, nutzen sie aber nicht. Dann meldet get_substitution_plan, dass keine Vertretungsdaten vorliegen.
Keine Termine / Aufgaben gefunden
Prüfe, ob du den richtigen Zeitraum angegeben hast. Für den Kalender müssen start und end im Format JJJJ-MM-TT angegeben werden.
Verbindungsfehler
Stelle sicher, dass die Umgebungsvariablen in der Claude Desktop Konfiguration korrekt gesetzt sind und dass du Zugang zum Schulportal Hessen hast (ggf. VPN oder Schulnetzwerk erforderlich).
Metadata
Release files for pylanis 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pylanis-0.2.0.tar.gz | 25.8 kB | With provenance | Details for pylanis-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pylanis-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for pylanis-0.2.0-py3-none-any.whl |
Total release size: 46.2 kB
Release files / pylanis-0.2.0.tar.gz
| Download URL | pylanis-0.2.0.tar.gz |
|---|---|
| Size | 25.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b75f15c4a6b8090f7b92a546540018398c137d028938617537db20ea653e9aa2
|
|
BLAKE2b-256 checksum How to use checksums |
d4564836a3c96cf7625b796ceb0cc64f2a775104ddd1dc29662dae175b788c44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / pylanis-0.2.0-py3-none-any.whl
| Download URL | pylanis-0.2.0-py3-none-any.whl |
|---|---|
| Size | 20.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e7b5c59c60244ba8e2da490965b905d683605f1a45b1d1c35a8bb03a692fb339
|
|
BLAKE2b-256 checksum How to use checksums |
a3ab3dea3bd5ffd8f43e0209b7019141c4e8dbe74e3c9a53455d8b9471eeb2e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for pylanis 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pylanis-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.