@gnidreve/classic-imap-smtp-mcp 0.3.0

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gnidreve
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.
package/README.md ADDED
@@ -0,0 +1,341 @@
1
+ # classic-imap-smtp-mcp
2
+
3
+ > Ein vollständiger IMAP/SMTP-MCP-Server für AI-Assistenten. Alles, was ein guter Mailclient kann — und nichts darüber hinaus.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/classic-imap-smtp-mcp.svg?style=flat-square)](https://www.npmjs.com/package/classic-imap-smtp-mcp)
6
+ [![npm downloads](https://img.shields.io/npm/dm/classic-imap-smtp-mcp.svg?style=flat-square)](https://www.npmjs.com/package/classic-imap-smtp-mcp)
7
+ [![CI](https://img.shields.io/github/actions/workflow/status/Gnidreve/classic-imap-smtp-mcp/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/Gnidreve/classic-imap-smtp-mcp/actions)
8
+
9
+ ---
10
+
11
+ ## Was ist classic-imap-smtp-mcp?
12
+
13
+ classic-imap-smtp-mcp ist ein lokal laufender [MCP](https://modelcontextprotocol.io)-Server, der jeden IMAP/SMTP-Mail-Account an einen AI-Assistenten anbindet. Es macht *genau das*, was ein Mailclient macht — Mails lesen, suchen, senden, antworten, weiterleiten, verschieben, markieren, Folder verwalten — und nichts darüber hinaus.
14
+
15
+ **Was classic-imap-smtp-mcp nicht macht** (bewusst):
16
+ - Kein OAuth2 — dieser MCP implementiert klassisches IMAP/SMTP mit User/Pass-Authentifizierung (App-Passwords). Für OAuth-Provider wie Gmail-OAuth-only-Setups oder Microsoft 365 nutze einen dafür gebauten MCP daneben.
17
+ - Keine Kalender-Integration
18
+ - Keine AI-Triage oder Auto-Kategorisierung im Server
19
+ - Keine Webhooks, keine Desktop-Notifications
20
+ - Kein Scheduler für zukünftige Mails
21
+ - Kein eingebauter SMTP-Server, keine Mail-Speicherung
22
+
23
+ Wenn du sowas brauchst, kombiniere classic-imap-smtp-mcp mit anderen MCPs. Genau dafür wurde MCP gebaut.
24
+
25
+ ## Warum classic-imap-smtp-mcp?
26
+
27
+ Vergleich der relevanten IMAP/SMTP-MCPs am Markt:
28
+
29
+ | | classic-imap-smtp-mcp | ai-zerolab | AIWerk | codefuturist | yunfeizhu |
30
+ |---|---|---|---|---|---|
31
+ | Volle Mailclient-Tools | ✅ | ❌ | ⚠️ | ✅ | ❌ |
32
+ | Folder-Listing | ✅ | ❌ | ✅ | ✅ | ❌ |
33
+ | Folder-CRUD | ✅ | ❌ | ❌ | ✅ | ❌ |
34
+ | Move zwischen Foldern | ✅ | ❌ | ✅ | ✅ | ❌ |
35
+ | Flag-Management | ✅ | ❌ | ✅ | ✅ | ❌ |
36
+ | Dediziertes Reply-Tool | ✅ | ❌ | ✅ | ✅ | ✅ |
37
+ | APPEND (Drafts speichern) | ✅ | ❌ | ❌ | ✅ | ❌ |
38
+ | Multi-Account | ✅ | ✅ | ❌ | ✅ | ❌ |
39
+ | CLI-Feature-Toggles | ✅ | ❌ | ❌ | ❌ | ❌ |
40
+ | `npx`/`uvx` Distribution | ✅ | ✅ | ⚠️ | ✅ | ✅ |
41
+ | Permissive Lizenz | MIT | ✅ | ⚠️ | ❌ LGPL | ✅ |
42
+ | Scope nur Mail | ✅ | ✅ | ✅ | ❌ | ✅ |
43
+
44
+ ## Installation
45
+
46
+ In deiner MCP-Client-Config:
47
+
48
+ **Claude Desktop** — `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) bzw. `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
49
+
50
+ ```json
51
+ {
52
+ "mcpServers": {
53
+ "mail": {
54
+ "command": "npx",
55
+ "args": ["-y", "classic-imap-smtp-mcp"],
56
+ "env": {
57
+ "CLASSIC_IMAP_SMTP_IMAP_HOST": "imap.example.com",
58
+ "CLASSIC_IMAP_SMTP_IMAP_PORT": "993",
59
+ "CLASSIC_IMAP_SMTP_SMTP_HOST": "smtp.example.com",
60
+ "CLASSIC_IMAP_SMTP_SMTP_PORT": "465",
61
+ "CLASSIC_IMAP_SMTP_USER": "you@example.com",
62
+ "CLASSIC_IMAP_SMTP_PASS": "your-app-password"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ **Claude Code:**
70
+ ```bash
71
+ claude mcp add mail \
72
+ -e CLASSIC_IMAP_SMTP_IMAP_HOST=imap.example.com \
73
+ -e CLASSIC_IMAP_SMTP_SMTP_HOST=smtp.example.com \
74
+ -e CLASSIC_IMAP_SMTP_USER=you@example.com \
75
+ -e CLASSIC_IMAP_SMTP_PASS=your-app-password \
76
+ -- npx -y classic-imap-smtp-mcp
77
+ ```
78
+
79
+ **Cursor / Windsurf / VS Code**: analog. Snippets in [`docs/clients.md`](docs/clients.md).
80
+
81
+ Für Multi-Account-Setup siehe [Konfiguration](#konfiguration).
82
+
83
+ ## Tools
84
+
85
+ classic-imap-smtp-mcp registriert je nach Modus und Toggles zwischen 16 (`--readonly`) und 36 (Default) Tools.
86
+
87
+ ### IMAP — Lesen (12 Tools)
88
+
89
+ | Tool | Was es macht |
90
+ |---|---|
91
+ | `imap_list_mailboxes` | Folder enumerieren, mit Special-Use-Flags (RFC 6154) |
92
+ | `imap_status_mailbox` | Counts (unread, total, recent) ohne SELECT |
93
+ | `imap_list_messages` | Paginierte Liste in einem Folder (UID, Envelope, Flags, Size) |
94
+ | `imap_get_message` | Vollständige Mail inkl. geparsem Body + Attachment-Metadaten |
95
+ | `imap_get_message_headers` | Nur Header |
96
+ | `imap_get_message_raw` | RFC-822 raw source |
97
+ | `imap_get_messages_bulk` | Bis N UIDs in einem Call |
98
+ | `imap_search` | Vollständiger SEARCH-Builder (alle RFC-3501-Kriterien) |
99
+ | `imap_download_attachment` | Gezielt eine Attachment-Part extrahieren |
100
+ | `imap_get_thread` | Konversation via In-Reply-To/References rekonstruieren |
101
+ | `imap_get_quota` | RFC-2087 QUOTA |
102
+ | `imap_check_capabilities` | CAPABILITY-Liste des Servers |
103
+
104
+ ### IMAP — Schreiben (8 Tools)
105
+
106
+ | Tool | Was es macht |
107
+ |---|---|
108
+ | `imap_mark_message` | STORE Flags setzen/entfernen (\Seen, \Flagged, \Answered, \Deleted, Keywords) |
109
+ | `imap_bulk_mark` | Bulk-STORE |
110
+ | `imap_move_message` | MOVE (RFC 6851), Fallback COPY+EXPUNGE |
111
+ | `imap_copy_message` | COPY |
112
+ | `imap_bulk_move` | Bulk-MOVE |
113
+ | `imap_append_message` | APPEND (Drafts speichern, Mails importieren) |
114
+ | `imap_expunge` | EXPUNGE |
115
+ | `imap_delete_message` | STORE \Deleted + optional EXPUNGE |
116
+
117
+ ### IMAP — Folder-Management (5 Tools)
118
+
119
+ | Tool | Was es macht |
120
+ |---|---|
121
+ | `imap_create_mailbox` | Neuen Folder anlegen |
122
+ | `imap_delete_mailbox` | Folder löschen |
123
+ | `imap_rename_mailbox` | Folder umbenennen |
124
+ | `imap_subscribe_mailbox` | SUBSCRIBE |
125
+ | `imap_unsubscribe_mailbox` | UNSUBSCRIBE |
126
+
127
+ ### SMTP (5 Tools)
128
+
129
+ | Tool | Was es macht |
130
+ |---|---|
131
+ | `smtp_send` | Senden mit allen Optionen (to/cc/bcc, text+html, attachments, inline-images, custom headers). Legt nach Versand automatisch eine Kopie im Sent-Folder ab (`save_to_sent`, Default an). |
132
+ | `smtp_reply` | Senden mit korrekter In-Reply-To/References-Kette (nimmt Original-UID + Folder). Sent-Ablage wie `smtp_send`. |
133
+ | `smtp_forward` | Senden mit Original quoted oder als Attachment. Sent-Ablage wie `smtp_send`. |
134
+ | `smtp_verify_connection` | Connection-Health-Check |
135
+ | `smtp_send_raw` | Vor-formatierte RFC-822 senden (Power-User). Sent-Ablage wie `smtp_send`. |
136
+
137
+ **Sent-Ablage:** SMTP verschickt eine Mail nur — es legt nichts in deinem "Gesendet"-Ordner ab. Mailclients lösen das, indem sie nach dem Versand selbst eine Kopie per IMAP in den Sent-Folder schreiben. Genau das machen die Sende-Tools automatisch (`save_to_sent`, Default `true`). Der Sent-Folder wird über das IMAP-Special-Use-Flag `\Sent` gefunden (Fallback auf gängige Namen, oder explizit via `sent_mailbox`). Wichtig: Versand und Ablage sind getrennt — gelingt der Versand, aber die Ablage scheitert (z. B. Sent-Folder fehlt), ist die Mail trotzdem raus; das Tool meldet Erfolg mit `saved_to_sent: false` plus Hinweis. Einen **Postausgang/Outbox mit Retry gibt es bewusst nicht** — ein fehlgeschlagener Versand wird sofort als Fehler gemeldet, nicht in eine Warteschlange geparkt (siehe stateless-Designprinzip).
138
+
139
+ ### Account-Management (4 Tools)
140
+
141
+ | Tool | Was es macht |
142
+ |---|---|
143
+ | `account_list` | Konfigurierte Accounts auflisten (Credentials masked) |
144
+ | `account_add` | Neuen Account zur Config hinzufügen |
145
+ | `account_update` | Bestehenden Account modifizieren (z. B. neues App-Password) |
146
+ | `account_delete` | Account aus Config entfernen |
147
+
148
+ ### Meta — Server-Introspektion (2 Tools)
149
+
150
+ | Tool | Was es macht |
151
+ |---|---|
152
+ | `meta_health` | IMAP + SMTP Erreichbarkeit, Latenz, Capabilities |
153
+ | `meta_server_info` | Aktive Tools, aktiver Modus, Version |
154
+
155
+ **Gesamt: 36 Tools.** Für jeden bietet `classic-imap-smtp-mcp --help` und die JSON-Schemas im MCP-Inspector vollständige Param-Doku. Die Rückgabe-Struktur jedes Tools ist in [`output-shapes.md`](output-shapes.md) festgelegt, die abhakbare Implementierungs-Liste in [`tools-checklist.md`](tools-checklist.md).
156
+
157
+ ## Konfiguration
158
+
159
+ ### Methode 1: Env-Vars (Single Account)
160
+
161
+ Einfachster Weg. Reicht für 90 % der User.
162
+
163
+ | Variable | Pflicht | Default | Beschreibung |
164
+ |---|---|---|---|
165
+ | `CLASSIC_IMAP_SMTP_USER` | ✅ | — | Mail-Adresse / IMAP-Login |
166
+ | `CLASSIC_IMAP_SMTP_PASS` | ✅ | — | Passwort oder App-Password |
167
+ | `CLASSIC_IMAP_SMTP_IMAP_HOST` | ✅ | — | IMAP-Hostname |
168
+ | `CLASSIC_IMAP_SMTP_IMAP_PORT` | | `993` | IMAP-Port |
169
+ | `CLASSIC_IMAP_SMTP_IMAP_TLS` | | `true` | TLS (`true` = implicit, `starttls` = STARTTLS, `false` = plain) |
170
+ | `CLASSIC_IMAP_SMTP_SMTP_HOST` | ✅ | — | SMTP-Hostname |
171
+ | `CLASSIC_IMAP_SMTP_SMTP_PORT` | | `465` | SMTP-Port |
172
+ | `CLASSIC_IMAP_SMTP_SMTP_TLS` | | `true` | TLS-Mode (analog) |
173
+ | `CLASSIC_IMAP_SMTP_FROM_NAME` | | — | Display-Name beim Senden |
174
+ | `CLASSIC_IMAP_SMTP_VERIFY_TLS` | | `true` | Zertifikat verifizieren |
175
+
176
+ Für Gmail, Outlook, iCloud, Fastmail, Posteo, mailbox.org, GMX, web.de, Yahoo, ProtonMail-Bridge reicht es, `CLASSIC_IMAP_SMTP_USER` + `CLASSIC_IMAP_SMTP_PASS` zu setzen — Host/Port werden automatisch erkannt.
177
+
178
+ ### Methode 2: Config-File (Multi-Account)
179
+
180
+ Pfad (XDG-konform):
181
+ - Linux/macOS: `~/.config/classic-imap-smtp-mcp/config.toml`
182
+ - Windows: `%APPDATA%\classic-imap-smtp-mcp\config.toml`
183
+
184
+ ```toml
185
+ default_account = "personal"
186
+
187
+ [[accounts]]
188
+ name = "personal"
189
+ user = "you@gmail.com"
190
+ pass = "your-app-password"
191
+ from_name = "Your Name"
192
+ # Host/Port via Provider-Auto-Detect
193
+
194
+ [[accounts]]
195
+ name = "work"
196
+ user = "you@company.com"
197
+ pass = "another-app-password"
198
+ imap_host = "imap.company.com"
199
+ imap_port = 993
200
+ smtp_host = "smtp.company.com"
201
+ smtp_port = 587
202
+ smtp_tls = "starttls"
203
+ from_name = "You at Work"
204
+
205
+ [[accounts]]
206
+ name = "selfhosted"
207
+ user = "me@mybox.tld"
208
+ pass = "supersecret"
209
+ imap_host = "mail.mybox.tld"
210
+ smtp_host = "mail.mybox.tld"
211
+ verify_tls = false # selbst-signierte Zertifikate
212
+ ```
213
+
214
+ Bei mehreren Accounts akzeptiert jedes Tool einen optionalen `account`-Parameter. Ohne Parameter wird der Default genutzt.
215
+
216
+ ### Methode 3: Mischbetrieb
217
+
218
+ Env-Vars überschreiben Config-File-Werte. Praktisch für CI/Container-Umgebungen mit Basis-Config aus File + sensible Werte aus Env.
219
+
220
+ ## Feature-Flags & Tool-Auswahl
221
+
222
+ classic-imap-smtp-mcp registriert Tools **konditional zur Server-Start-Zeit**. Was nicht registriert ist, kann der Client nicht sehen — saubere Capability-Boundary. Alle Schalter sind **CLI-Args** (keine Env-Vars).
223
+
224
+ ### Die vier Feature-Flags (grob)
225
+
226
+ | Flag | Wirkung |
227
+ |---|---|
228
+ | `--safe` | Löschen aus: `imap_delete_message`, `imap_expunge`, `imap_delete_mailbox` weg. Senden, Verschieben, Markieren, Drafts bleiben. |
229
+ | `--readonly` | Nur Lesezugriffe: alle schreibenden IMAP-Operationen (STORE, MOVE, COPY, APPEND, Folder-CRUD) **und** SMTP-Send weg. `smtp_verify_connection` und `account_list` bleiben. |
230
+ | `--no-imap` | Alle IMAP-Tools weg. |
231
+ | `--no-smtp` | Alle SMTP-Tools weg. |
232
+
233
+ `--safe` und `--readonly` sind kombinierbar (`--readonly` ist strenger und gewinnt). `--no-imap` **und** `--no-smtp` zusammen ergeben einen leeren Server — das bricht beim Start mit Fehler ab (fast sicher ein Konfig-Versehen).
234
+
235
+ ### Feingranulare Auswahl (Expertenmodus)
236
+
237
+ Zwei Flags mit **Präfix-Wildcards** für chirurgische Kontrolle:
238
+
239
+ | Flag | Wirkung |
240
+ |---|---|
241
+ | `--allow-tools=<csv>` | Tools explizit freigeben — **überschreibt die Feature-Flags**. Holt gezielt zurück, was eine grobe Geste weggeschaltet hat. |
242
+ | `--deny-tools=<csv>` | Tools explizit wegnehmen — **gewinnt über alles**, auch über `--allow-tools`. |
243
+
244
+ Wildcards matchen per Präfix: `imap_*`, `smtp_*`, `account_*`, `meta_*`, oder feiner `imap_delete_*`, `imap_bulk_*`, `imap_get_*`.
245
+
246
+ **Kaskade (grob → fein, fein gewinnt):**
247
+
248
+ ```
249
+ 1. Feature-Flags bilden die Basis-Menge
250
+ 2. --allow-tools überschreibt sie (kann Tools zurückholen)
251
+ 3. --deny-tools hat das letzte Wort
252
+ ```
253
+
254
+ Beispiele:
255
+
256
+ ```bash
257
+ # Nur lesen, aber Senden trotzdem erlauben
258
+ npx classic-imap-smtp-mcp --readonly --allow-tools=smtp_send
259
+
260
+ # SMTP komplett aus, nur smtp_send zurückholen
261
+ npx classic-imap-smtp-mcp --no-smtp --allow-tools=smtp_send
262
+
263
+ # Alles, aber kein Account-Management
264
+ npx classic-imap-smtp-mcp --deny-tools=account_*
265
+
266
+ # Alle IMAP-Tools außer den Lösch-Varianten
267
+ npx classic-imap-smtp-mcp --allow-tools=imap_* --deny-tools=imap_delete_*
268
+ ```
269
+
270
+ ## CLI
271
+
272
+ ```
273
+ classic-imap-smtp-mcp [options]
274
+
275
+ Run as MCP server over stdio (default subcommand).
276
+
277
+ Options:
278
+ --safe Lösch-Tools deaktivieren (delete/expunge/delete-mailbox)
279
+ --readonly Nur Lesezugriffe (kein Schreiben, kein SMTP-Send)
280
+ --no-imap Alle IMAP-Tools deaktivieren
281
+ --no-smtp Alle SMTP-Tools deaktivieren
282
+ --allow-tools=<list> Tools explizit freigeben, überschreibt Feature-Flags (CSV, Präfix-Wildcards)
283
+ --deny-tools=<list> Tools explizit wegnehmen, gewinnt über alles (CSV, Präfix-Wildcards)
284
+ --account=<name> Default-Account-Override
285
+ --config=<path> Alternativer Config-Pfad
286
+ --log-level=<level> trace|debug|info|warn|error (default: info)
287
+ --log-format=<fmt> json|pretty (default: json)
288
+ -h, --help Hilfe anzeigen
289
+ -V, --version Version anzeigen
290
+
291
+ Subcommands:
292
+ init Template-Config nach XDG-Pfad schreiben
293
+ test [account] IMAP+SMTP-Verbindung testen
294
+ list-tools Welche Tools würden mit den aktuellen Flags registriert? (Dry-Run)
295
+ ```
296
+
297
+ ## Sicherheit
298
+
299
+ - Alle Verbindungen via TLS (implicit oder STARTTLS, je Config)
300
+ - Passwörter werden niemals geloggt
301
+ - Empfehlung: **App-Passwords** statt Account-Passwörter (Gmail, Outlook, iCloud unterstützen das)
302
+ - Config-File sollte `0600` permission haben (classic-imap-smtp-mcp warnt bei zu offenen Permissions)
303
+ - Attachment-Downloads sind auf eine konfigurierbare Maximalgröße begrenzt
304
+ - `CLASSIC_IMAP_SMTP_VERIFY_TLS=false` ist nur für selbst-signierte interne Server gedacht — wird im Log markiert
305
+
306
+ ## Roadmap
307
+
308
+ Siehe [`phases.md`](phases.md) für den vollständigen Phasen-Plan.
309
+
310
+ - **v1.0** — Stable IMAP/SMTP mit allen 36 Tools, klassische Auth
311
+ - **v1.x** — OS-Keychain-Integration für Credentials
312
+ - **v2.0** — IMAP IDLE als streaming long-running tool (falls Client-Support reift)
313
+ - **v2.x** — Docker-First-Distribution
314
+
315
+ **Out of scope — permanent:** OAuth2, Calendar/ICS, AI-Triage, Scheduling, Notifications (siehe ["Was classic-imap-smtp-mcp nicht macht"](#was-ist-classic-imap-smtp-mcp) oben). Diese Grenzen sind bewusst und bleiben über alle Versionen bestehen.
316
+
317
+ ## Mitwirken
318
+
319
+ PRs willkommen. Siehe [`AGENTS.md`](AGENTS.md) für Architektur und Konventionen (gilt für menschliche Contributors gleichermaßen), [`CONTRIBUTING.md`](CONTRIBUTING.md) für Workflow.
320
+
321
+ Wenn du an classic-imap-smtp-mcp **mit** einem AI-Assistenten arbeitest, lade `AGENTS.md` als erstes in den Context — das Repo ist darauf ausgelegt.
322
+
323
+ ## Dokumentation in diesem Repo
324
+
325
+ | Datei | Zielgruppe | Inhalt |
326
+ |---|---|---|
327
+ | `README.md` (diese Datei) | Menschen | Übersicht, Install, Tool-Katalog, Config |
328
+ | [`llms.txt`](llms.txt) | Konsumierende LLMs | Maschinenoptimierte Install-/Setup-/Tool-Doku |
329
+ | [`AGENTS.md`](AGENTS.md) | Coding-Agents (Claude Code, Cursor, Codex) | Architektur, Konventionen, Build, Vorgaben |
330
+ | [`tools-checklist.md`](tools-checklist.md) | Implementierer | Abhakbare Liste aller 36 Tools mit Status, RFC-Refs, Definition of Done |
331
+ | [`output-shapes.md`](output-shapes.md) | Implementierer | Verbindliche Output-Struktur jedes Tools |
332
+ | [`phases.md`](phases.md) | Projekt-Mitwirkende | Entwicklungsphasen 0–5 |
333
+ | [`phase-0-marktanalyse.md`](phase-0-marktanalyse.md) | Projekt-Mitwirkende | Warum dieses Projekt existiert |
334
+ | [`phase-1-fragerunde.md`](phase-1-fragerunde.md) | Projekt-Mitwirkende | Designentscheidungen Phase 1 |
335
+ | `CONTRIBUTING.md` | Contributors | Dev-Workflow, Branching, PR-Regeln |
336
+ | `SECURITY.md` | Security-Reporter | Vulnerability-Reporting |
337
+ | `CHANGELOG.md` | Alle | Release-Notes |
338
+
339
+ ## Lizenz
340
+
341
+ MIT License — siehe [`LICENSE`](LICENSE).