allinkl-mcp
# allinkl-mcp
MCP-Server für die **All-Inkl KAS-API** — DNS, Domains, Subdomains, Mail-Postfächer,
Mail-Weiterleitungen und Datenbanken verwalten, plus **DB-Dump via SSH+mysqldump**.
> Die KAS-API kann Datenbanken nur anlegen/löschen — **kein** Dump. Deshalb läuft
> `database_dump` über SSH auf dem KAS-Paket.
## Setup
```bash
cd ~/Projects/allinkl-mcp
pnpm install
cp .env.example .env # dann .env ausfüllen
pnpm build
```
`.env`:
- `KAS_LOGIN` — Account-Nummer, z.B. `wXXXXXX`
- `KAS_AUTH_DATA` — **API-Passwort** (KAS → Tools → API, nicht das Login-Passwort)
- `KAS_SSH_HOST` — Host-Alias aus `~/.ssh/config`, der auf die KAS-Shell führt
(für `database_dump`)
## Erstmal testen (ohne MCP)
```bash
pnpm kas get_databases
pnpm kas get_dns_settings '{"zone_host":"example.com"}'
```
Der erste Call ist der echte Test der SOAP-Signatur — falls KAS meckert, justieren
wir `src/kas/client.ts` (Param-Name / Response-Unwrap).
## In Claude Code einbinden
```json
{
"mcpServers": {
"allinkl": {
"command": "node",
"args": ["/path/to/allinkl-mcp/dist/index.js"]
}
}
}
```
## Sicherheit (wichtig — geteilter Produktiv-Account)
- **Read-only per Default.** add/update/delete sind gesperrt, bis `KAS_ALLOW_WRITES=1`
gesetzt ist (dann MCP neu starten). Reads + `database_dump` gehen immer.
- **`kas_raw`**: nur `get_*`-Actions ohne Flag; alles andere braucht Writes on.
- **DB-Passwörter** werden in `database_list` geschwärzt (opt-in via
`reveal_passwords: true`).
- **Calls werden serialisiert** (kein Flood-Race), Flood-Fehler werden einmal
automatisch wiederholt, SOAP-Calls haben Timeout.
> **Verifizierungs-Status der Schreib-Params:**
> - DNS `add`/`update`/`delete` — ✅ live verifiziert (add setzt automatisch den
> von KAS geforderten Trailing-Dot auf die Zone).
> - Übrige Writes (subdomain / mail / database / ftp / cronjob / domain / ssl)
> — ⚠️ **nicht live verifiziert**. Feldnamen sind an `hl9020/mcp-all-inkl`
> ausgerichtet (s.u.), aber ungetestet. Vor erstem Einsatz an einem
> unkritischen Objekt prüfen.
Alle Listen-Tools akzeptieren optional `pick` (nur diese Felder) und `filter`
(z.B. `{"record_type":"MX"}`) zum Token-Sparen.
## Tools (50)
| Bereich | Tools |
|---|---|
| DNS | `dns_list` `dns_add` `dns_update` `dns_delete` `dns_reset` |
| Domains | `domain_list` `domain_tld_list` `domain_add` `domain_update` `domain_delete` `domain_move` |
| Subdomains | `subdomain_list` `subdomain_add` `subdomain_update` `subdomain_delete` `subdomain_move` |
| Mail | `mail_list/add/update/delete`, `mailforward_list/add/update/delete`, `mailinglist_list/add/delete`, `mailfilter_list` |
| Datenbanken | `database_list` `database_add` `database_update` `database_delete` `database_dump` (SSH) |
| FTP | `ftp_list` `ftp_add` `ftp_update` `ftp_delete` |
| Cronjobs | `cronjob_list` `cronjob_add` `cronjob_update` `cronjob_delete` |
| SSL | `ssl_update` |
| Account/System (read) | `account_list` `account_resources` `account_settings` `server_info` `system_space` `system_space_usage` `system_traffic` |
| Escape | `kas_raw` (beliebige Action, inkl. Account-Writes; unter Write-Guard) |
## Credits
Param-Namen für die Write-Actions und die `pick`/`filter`-Idee sind
[`hl9020/mcp-all-inkl`](https://github.com/hl9020/mcp-all-inkl) (MIT) entlehnt.
Dieser Server ergänzt das um eine Safety-Schicht (read-only-Default, Delete-
Confirm, Zonen-Allowlist, Audit-Log, Passwort-Redaction) und den SSH-DB-Dump.
TDQS
Scored across 25 tools
Each tool targets a distinct resource-action pair (e.g., cronjob_add, database_delete). The resource prefix clearly separates domains, and actions are standard CRUD. There is no functional overlap between tools.
All tool names follow the consistent pattern 'resource_action' in snake_case (e.g., cronjob_add, ftp_list). The only exception is 'kas_raw', which is a special catch-all tool, but the overall pattern is uniform.
25 tools cover multiple domains (cron, database, DNS, FTP, mail, subdomains) with 3-4 operations each. This is slightly above the typical 3-15 range but still well-scoped for a hosting management server.
Missing operations include mailforward_delete, mail_update, subdomain_update, and database_update. The raw API tool can compensate, but the defined set has notable gaps in lifecycle coverage.