Skip to main content
Glama
README.md
# 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

B3.2/5.0

Scored across 25 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivityStale
ResponsivenessNo issues