pylanis 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,13 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ .ruff_cache/
6
+ dist/
7
+ *.egg-info/
8
+ .eggs/
9
+ html_logs.txt
10
+ .coverage
11
+ coverage.xml
12
+ htmlcov/
13
+ .vibe
pylanis-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Daniel Schroeder
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
pylanis-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,343 @@
1
+ Metadata-Version: 2.5
2
+ Name: pylanis
3
+ Version: 0.2.0
4
+ Summary: MCP server for Schulportal Hessen (Lanis), with SDK and CLI to follow
5
+ Project-URL: Repository, https://github.com/udondan/pylanis
6
+ Project-URL: Issues, https://github.com/udondan/pylanis/issues
7
+ Project-URL: Changelog, https://github.com/udondan/pylanis/blob/main/CHANGELOG.md
8
+ Author-email: Daniel Schroeder <deemes79@googlemail.com>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: hessen,lanis,mcp,mcp-server,school,schulportal,vertretungsplan
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: Natural Language :: German
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Topic :: Education
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: lanisapi==0.4.1
20
+ Requires-Dist: mcp[cli]==2.3.0
21
+ Requires-Dist: selectolax==0.4.13
22
+ Provides-Extra: dev
23
+ Requires-Dist: anyio==4.15.1; extra == 'dev'
24
+ Requires-Dist: build==1.6.1; extra == 'dev'
25
+ Requires-Dist: pytest-asyncio==1.4.1; extra == 'dev'
26
+ Requires-Dist: pytest-cov==7.1.0; extra == 'dev'
27
+ Requires-Dist: pytest==9.1.1; extra == 'dev'
28
+ Requires-Dist: ruff==0.17.2; extra == 'dev'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # pylanis
32
+
33
+ Ein [MCP-Server](https://modelcontextprotocol.io/) für das **Schulportal Hessen (Lanis)**, der KI-Assistenten wie Claude ermöglicht, direkt auf Schulinformationen zuzugreifen – Vertretungsplan, Kalender, Hausaufgaben, Nachrichten und mehr.
34
+
35
+ ---
36
+
37
+ ## Was ist pylanis?
38
+
39
+ `pylanis` verbindet deine KI (z. B. Claude) mit dem [Schulportal Hessen](https://start.schulportal.hessen.de/). Sobald der Server eingerichtet ist, kannst du deiner KI ganz natürlich Fragen stellen wie:
40
+
41
+ > „Was steht heute im Vertretungsplan?"
42
+ > „Welche Hausaufgaben habe ich diese Woche?"
43
+ > „Zeig mir alle Termine im April."
44
+
45
+ Der Server kommuniziert über das standardisierte MCP-Protokoll und ist **ausschließlich lesend** – er verändert keine Daten im Schulportal.
46
+
47
+ Das Paket wird auf [PyPI](https://pypi.org/project/pylanis/) 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.
48
+
49
+ ---
50
+
51
+ ## Voraussetzungen
52
+
53
+ - Ein aktiver **Lanis-Account** (Schulportal Hessen)
54
+ - Die **Schul-ID** deiner Schule (siehe [Schul-ID herausfinden](#schul-id-herausfinden))
55
+ - [`uv`](https://docs.astral.sh/uv/) installiert (modernes Python-Paketverwaltungstool)
56
+ - Ein MCP-kompatibler Client, z. B. [Claude Desktop](https://claude.ai/download)
57
+
58
+ ---
59
+
60
+ ## Einrichtung
61
+
62
+ ### Schul-ID herausfinden
63
+
64
+ Falls du deine Schul-ID nicht kennst, kannst du sie über das Tool `get_schools` ermitteln. Frage deine KI einfach:
65
+
66
+ > „Suche die Schul-ID für die [Name deiner Schule] in [Stadt]."
67
+
68
+ Das Tool `get_schools` benötigt **keine Anmeldung** und listet alle Schulen im Schulportal Hessen mit ihrer ID auf.
69
+
70
+ ### Claude Desktop konfigurieren
71
+
72
+ Öffne die Konfigurationsdatei von Claude Desktop:
73
+
74
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
75
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
76
+
77
+ Füge einen Eintrag unter `mcpServers` hinzu. Wähle einen der drei Authentifizierungsmodi:
78
+
79
+ #### Modus 1 – Benutzername & Passwort (empfohlen)
80
+
81
+ ```json
82
+ {
83
+ "mcpServers": {
84
+ "lanis": {
85
+ "command": "uvx",
86
+ "args": ["--from", "pylanis", "lanis-mcp"],
87
+ "env": {
88
+ "LANIS_SCHOOL_ID": "1234",
89
+ "LANIS_USERNAME": "vorname.nachname",
90
+ "LANIS_PASSWORD": "dein-passwort"
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ #### Modus 2 – Session-Cookie (schneller, kein Passwort)
98
+
99
+ ```json
100
+ {
101
+ "mcpServers": {
102
+ "lanis": {
103
+ "command": "uvx",
104
+ "args": ["--from", "pylanis", "lanis-mcp"],
105
+ "env": {
106
+ "LANIS_SCHOOL_ID": "1234",
107
+ "LANIS_SESSION_ID": "dein-session-cookie"
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ```
113
+
114
+ > **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.
115
+
116
+ #### Modus 3 – Schule nach Name & Stadt
117
+
118
+ ```json
119
+ {
120
+ "mcpServers": {
121
+ "lanis": {
122
+ "command": "uvx",
123
+ "args": ["--from", "pylanis", "lanis-mcp"],
124
+ "env": {
125
+ "LANIS_SCHOOL_NAME": "Mustergymnasium",
126
+ "LANIS_SCHOOL_CITY": "Musterstadt",
127
+ "LANIS_USERNAME": "vorname.nachname",
128
+ "LANIS_PASSWORD": "dein-passwort"
129
+ }
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
135
+ Nach dem Speichern Claude Desktop neu starten.
136
+
137
+ ---
138
+
139
+ ## Docker MCP
140
+
141
+ ### Docker-Image bauen und registrieren
142
+
143
+ Voraussetzung: [`mise`](https://mise.jdx.dev) installiert.
144
+
145
+ ```bash
146
+ # Nur bauen
147
+ mise run docker-build
148
+
149
+ # Nur im Docker MCP Katalog registrieren
150
+ mise run docker-register
151
+
152
+ # Beides nacheinander
153
+ mise run docker
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Verfügbare Tools
159
+
160
+ 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).
161
+
162
+ ### Einrichtung
163
+
164
+ | Tool | Beschreibung | Auth erforderlich |
165
+ | ------------------------ | -------------------------------------------------------------------- | :---------------: |
166
+ | `get_schools` | Listet alle Schulen im Schulportal Hessen mit ID, Name und Stadt | ❌ |
167
+ | `get_available_apps` | Zeigt, welche der unterstützten Apps an deiner Schule verfügbar sind | ✅ |
168
+ | `check_app_availability` | Prüft, ob eine bestimmte App an deiner Schule verfügbar ist | ✅ |
169
+
170
+ ### Stundenplan & Unterricht
171
+
172
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
173
+ | ----------------------- | ------------------------------------------------------------------- | --------- | :---------------: |
174
+ | `get_substitution_plan` | Heutiger Vertretungsplan (Klasse, Fach, Raum, Lehrer, Hinweise) | – | ✅ |
175
+ | `get_timetable` | Wöchentlicher Stundenplan (Fach, Raum, Lehrer je Stunde und Tag) | – | ✅ |
176
+ | `get_learning_groups` | Lerngruppen/Kurse, in denen du eingeschrieben bist, inkl. Lehrkraft | – | ✅ |
177
+
178
+ ### Kalender
179
+
180
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
181
+ | ----------------------- | ------------------------------------------------ | -------------------------------------------------- | :---------------: |
182
+ | `get_calendar` | Schulkalender für einen beliebigen Zeitraum | `start`, `end` (JJJJ-MM-TT), `include_responsible` | ✅ |
183
+ | `get_calendar_of_month` | Schulkalender für den aktuellen Monat (Kurzform) | `include_responsible` | ✅ |
184
+
185
+ > **Hinweis zu `include_responsible`:** Wenn `true`, wird für jeden Termin eine zusätzliche API-Anfrage gestellt. Bei vielen Terminen kann dies langsam sein.
186
+
187
+ ### Hausaufgaben & Aufgaben
188
+
189
+ | Tool | Beschreibung | Auth erforderlich |
190
+ | ----------- | ------------------------------------------------------------------------------------- | :---------------: |
191
+ | `get_tasks` | Aufgaben und Hausaufgaben aus „Mein Unterricht" (Fach, Lehrer, Beschreibung, Anhänge) | ✅ |
192
+
193
+ ### Nachrichten
194
+
195
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
196
+ | ------------------- | ----------------------------------------- | ------------------------------------ | :---------------: |
197
+ | `get_conversations` | Nachrichten aus dem „Nachrichten"-Bereich | `number` (Standard: 10, `-1` = alle) | ✅ |
198
+
199
+ > **Hinweis:** `-1` lädt alle Nachrichten und kann den Lanis-Server stark belasten. Bitte sparsam verwenden.
200
+
201
+ ### Dateien
202
+
203
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
204
+ | ----------------------- | --------------------------------------------------------------------------- | --------------------------------------- | :---------------: |
205
+ | `get_file_storage` | Inhalt des Schulischen Dateispeichers (Ordner & Dateien mit Download-Links) | `folder_id` (optional, für Unterordner) | ✅ |
206
+ | `get_file_distribution` | Verteilte Dateien und Ankündigungen (Dateiverteilung / GRB Infos) | – | ✅ |
207
+
208
+ ### Portal
209
+
210
+ | Tool | Beschreibung | Auth erforderlich |
211
+ | ------------- | ---------------------------------------------------------------- | :---------------: |
212
+ | `get_apps` | Alle App-Kacheln auf dem Lanis-Dashboard (Name, Link, Kategorie) | ✅ |
213
+ | `get_folders` | Ordner/Kategorien auf dem Lanis-Dashboard | ✅ |
214
+ | `get_votes` | Aktive Abstimmungen und Wahlen (z. B. Schülerratswahl) | ✅ |
215
+
216
+ ---
217
+
218
+ ## Beispiele
219
+
220
+ Hier sind typische Fragen, die du deiner KI stellen kannst:
221
+
222
+ ### Einrichtung & Überblick
223
+
224
+ ```
225
+ Welche Schul-ID hat das Gymnasium Musterstadt?
226
+ ```
227
+
228
+ ```
229
+ Welche Lanis-Apps sind an meiner Schule verfügbar?
230
+ ```
231
+
232
+ ### Stundenplan & Vertretung
233
+
234
+ ```
235
+ Was steht heute im Vertretungsplan?
236
+ ```
237
+
238
+ ```
239
+ Zeig mir meinen Stundenplan für diese Woche.
240
+ ```
241
+
242
+ ```
243
+ In welchen Kursen bin ich eingeschrieben und wer sind meine Lehrkräfte?
244
+ ```
245
+
246
+ ```
247
+ Wer vertritt heute Herrn Müller in der 3. Stunde?
248
+ ```
249
+
250
+ ### Kalender
251
+
252
+ ```
253
+ Welche Schultermine gibt es im April?
254
+ ```
255
+
256
+ ```
257
+ Zeig mir alle Termine zwischen dem 1. und 15. März.
258
+ ```
259
+
260
+ ```
261
+ Was sind die nächsten Schulveranstaltungen diesen Monat?
262
+ ```
263
+
264
+ ### Hausaufgaben & Aufgaben
265
+
266
+ ```
267
+ Welche Hausaufgaben habe ich aktuell?
268
+ ```
269
+
270
+ ```
271
+ Gibt es Aufgaben mit Anhängen, die ich herunterladen kann?
272
+ ```
273
+
274
+ ```
275
+ Was muss ich für Mathematik vorbereiten?
276
+ ```
277
+
278
+ ### Nachrichten
279
+
280
+ ```
281
+ Zeig mir meine letzten 5 Nachrichten.
282
+ ```
283
+
284
+ ```
285
+ Habe ich ungelesene Nachrichten?
286
+ ```
287
+
288
+ ```
289
+ Was hat die Schule zuletzt kommuniziert?
290
+ ```
291
+
292
+ ### Dateien
293
+
294
+ ```
295
+ Was liegt im Schulischen Dateispeicher?
296
+ ```
297
+
298
+ ```
299
+ Gibt es neue verteilte Dateien oder Ankündigungen?
300
+ ```
301
+
302
+ ---
303
+
304
+ ## Ausgabeformate
305
+
306
+ Die meisten Tools unterstützen zwei Ausgabeformate:
307
+
308
+ - **`markdown`** (Standard): Für Menschen lesbar, ideal für die direkte Anzeige in der KI-Konversation
309
+ - **`json`**: Maschinenlesbar, nützlich wenn du die Daten weiterverarbeiten möchtest
310
+
311
+ Du kannst das Format in deiner Anfrage angeben:
312
+
313
+ ```
314
+ Zeig mir den Vertretungsplan als JSON.
315
+ ```
316
+
317
+ > **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.
318
+
319
+ ---
320
+
321
+ ## Fehlerbehebung
322
+
323
+ ### „Session abgelaufen" / Session expired
324
+
325
+ 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.
326
+
327
+ ### „App nicht verfügbar an deiner Schule"
328
+
329
+ 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.
330
+
331
+ ### Kein Vertretungsplan verfügbar
332
+
333
+ Der Vertretungsplan ist nur an Schultagen verfügbar. An Wochenenden und Feiertagen gibt es keinen Plan.
334
+
335
+ Manche Schulen zeigen die App „Vertretungsplan“ an, nutzen sie aber nicht. Dann meldet `get_substitution_plan`, dass keine Vertretungsdaten vorliegen.
336
+
337
+ ### Keine Termine / Aufgaben gefunden
338
+
339
+ 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.
340
+
341
+ ### Verbindungsfehler
342
+
343
+ 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).
@@ -0,0 +1,313 @@
1
+ # pylanis
2
+
3
+ Ein [MCP-Server](https://modelcontextprotocol.io/) für das **Schulportal Hessen (Lanis)**, der KI-Assistenten wie Claude ermöglicht, direkt auf Schulinformationen zuzugreifen – Vertretungsplan, Kalender, Hausaufgaben, Nachrichten und mehr.
4
+
5
+ ---
6
+
7
+ ## Was ist pylanis?
8
+
9
+ `pylanis` verbindet deine KI (z. B. Claude) mit dem [Schulportal Hessen](https://start.schulportal.hessen.de/). Sobald der Server eingerichtet ist, kannst du deiner KI ganz natürlich Fragen stellen wie:
10
+
11
+ > „Was steht heute im Vertretungsplan?"
12
+ > „Welche Hausaufgaben habe ich diese Woche?"
13
+ > „Zeig mir alle Termine im April."
14
+
15
+ Der Server kommuniziert über das standardisierte MCP-Protokoll und ist **ausschließlich lesend** – er verändert keine Daten im Schulportal.
16
+
17
+ Das Paket wird auf [PyPI](https://pypi.org/project/pylanis/) 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.
18
+
19
+ ---
20
+
21
+ ## Voraussetzungen
22
+
23
+ - Ein aktiver **Lanis-Account** (Schulportal Hessen)
24
+ - Die **Schul-ID** deiner Schule (siehe [Schul-ID herausfinden](#schul-id-herausfinden))
25
+ - [`uv`](https://docs.astral.sh/uv/) installiert (modernes Python-Paketverwaltungstool)
26
+ - Ein MCP-kompatibler Client, z. B. [Claude Desktop](https://claude.ai/download)
27
+
28
+ ---
29
+
30
+ ## Einrichtung
31
+
32
+ ### Schul-ID herausfinden
33
+
34
+ Falls du deine Schul-ID nicht kennst, kannst du sie über das Tool `get_schools` ermitteln. Frage deine KI einfach:
35
+
36
+ > „Suche die Schul-ID für die [Name deiner Schule] in [Stadt]."
37
+
38
+ Das Tool `get_schools` benötigt **keine Anmeldung** und listet alle Schulen im Schulportal Hessen mit ihrer ID auf.
39
+
40
+ ### Claude Desktop konfigurieren
41
+
42
+ Öffne die Konfigurationsdatei von Claude Desktop:
43
+
44
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
45
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
46
+
47
+ Füge einen Eintrag unter `mcpServers` hinzu. Wähle einen der drei Authentifizierungsmodi:
48
+
49
+ #### Modus 1 – Benutzername & Passwort (empfohlen)
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "lanis": {
55
+ "command": "uvx",
56
+ "args": ["--from", "pylanis", "lanis-mcp"],
57
+ "env": {
58
+ "LANIS_SCHOOL_ID": "1234",
59
+ "LANIS_USERNAME": "vorname.nachname",
60
+ "LANIS_PASSWORD": "dein-passwort"
61
+ }
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ #### Modus 2 – Session-Cookie (schneller, kein Passwort)
68
+
69
+ ```json
70
+ {
71
+ "mcpServers": {
72
+ "lanis": {
73
+ "command": "uvx",
74
+ "args": ["--from", "pylanis", "lanis-mcp"],
75
+ "env": {
76
+ "LANIS_SCHOOL_ID": "1234",
77
+ "LANIS_SESSION_ID": "dein-session-cookie"
78
+ }
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ > **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.
85
+
86
+ #### Modus 3 – Schule nach Name & Stadt
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "lanis": {
92
+ "command": "uvx",
93
+ "args": ["--from", "pylanis", "lanis-mcp"],
94
+ "env": {
95
+ "LANIS_SCHOOL_NAME": "Mustergymnasium",
96
+ "LANIS_SCHOOL_CITY": "Musterstadt",
97
+ "LANIS_USERNAME": "vorname.nachname",
98
+ "LANIS_PASSWORD": "dein-passwort"
99
+ }
100
+ }
101
+ }
102
+ }
103
+ ```
104
+
105
+ Nach dem Speichern Claude Desktop neu starten.
106
+
107
+ ---
108
+
109
+ ## Docker MCP
110
+
111
+ ### Docker-Image bauen und registrieren
112
+
113
+ Voraussetzung: [`mise`](https://mise.jdx.dev) installiert.
114
+
115
+ ```bash
116
+ # Nur bauen
117
+ mise run docker-build
118
+
119
+ # Nur im Docker MCP Katalog registrieren
120
+ mise run docker-register
121
+
122
+ # Beides nacheinander
123
+ mise run docker
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Verfügbare Tools
129
+
130
+ 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).
131
+
132
+ ### Einrichtung
133
+
134
+ | Tool | Beschreibung | Auth erforderlich |
135
+ | ------------------------ | -------------------------------------------------------------------- | :---------------: |
136
+ | `get_schools` | Listet alle Schulen im Schulportal Hessen mit ID, Name und Stadt | ❌ |
137
+ | `get_available_apps` | Zeigt, welche der unterstützten Apps an deiner Schule verfügbar sind | ✅ |
138
+ | `check_app_availability` | Prüft, ob eine bestimmte App an deiner Schule verfügbar ist | ✅ |
139
+
140
+ ### Stundenplan & Unterricht
141
+
142
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
143
+ | ----------------------- | ------------------------------------------------------------------- | --------- | :---------------: |
144
+ | `get_substitution_plan` | Heutiger Vertretungsplan (Klasse, Fach, Raum, Lehrer, Hinweise) | – | ✅ |
145
+ | `get_timetable` | Wöchentlicher Stundenplan (Fach, Raum, Lehrer je Stunde und Tag) | – | ✅ |
146
+ | `get_learning_groups` | Lerngruppen/Kurse, in denen du eingeschrieben bist, inkl. Lehrkraft | – | ✅ |
147
+
148
+ ### Kalender
149
+
150
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
151
+ | ----------------------- | ------------------------------------------------ | -------------------------------------------------- | :---------------: |
152
+ | `get_calendar` | Schulkalender für einen beliebigen Zeitraum | `start`, `end` (JJJJ-MM-TT), `include_responsible` | ✅ |
153
+ | `get_calendar_of_month` | Schulkalender für den aktuellen Monat (Kurzform) | `include_responsible` | ✅ |
154
+
155
+ > **Hinweis zu `include_responsible`:** Wenn `true`, wird für jeden Termin eine zusätzliche API-Anfrage gestellt. Bei vielen Terminen kann dies langsam sein.
156
+
157
+ ### Hausaufgaben & Aufgaben
158
+
159
+ | Tool | Beschreibung | Auth erforderlich |
160
+ | ----------- | ------------------------------------------------------------------------------------- | :---------------: |
161
+ | `get_tasks` | Aufgaben und Hausaufgaben aus „Mein Unterricht" (Fach, Lehrer, Beschreibung, Anhänge) | ✅ |
162
+
163
+ ### Nachrichten
164
+
165
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
166
+ | ------------------- | ----------------------------------------- | ------------------------------------ | :---------------: |
167
+ | `get_conversations` | Nachrichten aus dem „Nachrichten"-Bereich | `number` (Standard: 10, `-1` = alle) | ✅ |
168
+
169
+ > **Hinweis:** `-1` lädt alle Nachrichten und kann den Lanis-Server stark belasten. Bitte sparsam verwenden.
170
+
171
+ ### Dateien
172
+
173
+ | Tool | Beschreibung | Parameter | Auth erforderlich |
174
+ | ----------------------- | --------------------------------------------------------------------------- | --------------------------------------- | :---------------: |
175
+ | `get_file_storage` | Inhalt des Schulischen Dateispeichers (Ordner & Dateien mit Download-Links) | `folder_id` (optional, für Unterordner) | ✅ |
176
+ | `get_file_distribution` | Verteilte Dateien und Ankündigungen (Dateiverteilung / GRB Infos) | – | ✅ |
177
+
178
+ ### Portal
179
+
180
+ | Tool | Beschreibung | Auth erforderlich |
181
+ | ------------- | ---------------------------------------------------------------- | :---------------: |
182
+ | `get_apps` | Alle App-Kacheln auf dem Lanis-Dashboard (Name, Link, Kategorie) | ✅ |
183
+ | `get_folders` | Ordner/Kategorien auf dem Lanis-Dashboard | ✅ |
184
+ | `get_votes` | Aktive Abstimmungen und Wahlen (z. B. Schülerratswahl) | ✅ |
185
+
186
+ ---
187
+
188
+ ## Beispiele
189
+
190
+ Hier sind typische Fragen, die du deiner KI stellen kannst:
191
+
192
+ ### Einrichtung & Überblick
193
+
194
+ ```
195
+ Welche Schul-ID hat das Gymnasium Musterstadt?
196
+ ```
197
+
198
+ ```
199
+ Welche Lanis-Apps sind an meiner Schule verfügbar?
200
+ ```
201
+
202
+ ### Stundenplan & Vertretung
203
+
204
+ ```
205
+ Was steht heute im Vertretungsplan?
206
+ ```
207
+
208
+ ```
209
+ Zeig mir meinen Stundenplan für diese Woche.
210
+ ```
211
+
212
+ ```
213
+ In welchen Kursen bin ich eingeschrieben und wer sind meine Lehrkräfte?
214
+ ```
215
+
216
+ ```
217
+ Wer vertritt heute Herrn Müller in der 3. Stunde?
218
+ ```
219
+
220
+ ### Kalender
221
+
222
+ ```
223
+ Welche Schultermine gibt es im April?
224
+ ```
225
+
226
+ ```
227
+ Zeig mir alle Termine zwischen dem 1. und 15. März.
228
+ ```
229
+
230
+ ```
231
+ Was sind die nächsten Schulveranstaltungen diesen Monat?
232
+ ```
233
+
234
+ ### Hausaufgaben & Aufgaben
235
+
236
+ ```
237
+ Welche Hausaufgaben habe ich aktuell?
238
+ ```
239
+
240
+ ```
241
+ Gibt es Aufgaben mit Anhängen, die ich herunterladen kann?
242
+ ```
243
+
244
+ ```
245
+ Was muss ich für Mathematik vorbereiten?
246
+ ```
247
+
248
+ ### Nachrichten
249
+
250
+ ```
251
+ Zeig mir meine letzten 5 Nachrichten.
252
+ ```
253
+
254
+ ```
255
+ Habe ich ungelesene Nachrichten?
256
+ ```
257
+
258
+ ```
259
+ Was hat die Schule zuletzt kommuniziert?
260
+ ```
261
+
262
+ ### Dateien
263
+
264
+ ```
265
+ Was liegt im Schulischen Dateispeicher?
266
+ ```
267
+
268
+ ```
269
+ Gibt es neue verteilte Dateien oder Ankündigungen?
270
+ ```
271
+
272
+ ---
273
+
274
+ ## Ausgabeformate
275
+
276
+ Die meisten Tools unterstützen zwei Ausgabeformate:
277
+
278
+ - **`markdown`** (Standard): Für Menschen lesbar, ideal für die direkte Anzeige in der KI-Konversation
279
+ - **`json`**: Maschinenlesbar, nützlich wenn du die Daten weiterverarbeiten möchtest
280
+
281
+ Du kannst das Format in deiner Anfrage angeben:
282
+
283
+ ```
284
+ Zeig mir den Vertretungsplan als JSON.
285
+ ```
286
+
287
+ > **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.
288
+
289
+ ---
290
+
291
+ ## Fehlerbehebung
292
+
293
+ ### „Session abgelaufen" / Session expired
294
+
295
+ 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.
296
+
297
+ ### „App nicht verfügbar an deiner Schule"
298
+
299
+ 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.
300
+
301
+ ### Kein Vertretungsplan verfügbar
302
+
303
+ Der Vertretungsplan ist nur an Schultagen verfügbar. An Wochenenden und Feiertagen gibt es keinen Plan.
304
+
305
+ Manche Schulen zeigen die App „Vertretungsplan“ an, nutzen sie aber nicht. Dann meldet `get_substitution_plan`, dass keine Vertretungsdaten vorliegen.
306
+
307
+ ### Keine Termine / Aufgaben gefunden
308
+
309
+ 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.
310
+
311
+ ### Verbindungsfehler
312
+
313
+ 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).