99 lines
4.8 KiB
Markdown
99 lines
4.8 KiB
Markdown
# CasaDeRoll MCPHub
|
|
|
|
MCPHub ist die zentrale Laufzeit und Verwaltungsoberfläche für portable
|
|
MCP-Server. Die einzelnen Server bleiben unter `/mcp/{server}` sichtbar, obwohl
|
|
sie sich einen Docker-Container und ein Appdata-Backup teilen.
|
|
|
|
## Was hier hinein gehört
|
|
|
|
- ARR, Navidrome und GitHub laufen als lokale stdio-Unterprozesse.
|
|
- Home Assistant und MUA/Unraid sind vorhandene HTTP-MCP-Endpunkte und werden
|
|
vom Hub direkt weitergereicht.
|
|
- Allgemeine Webrecherche bleibt ein eingebautes Hermes-Werkzeug. Hermes nutzt
|
|
den schlüssellosen Keenable-Provider für Suche und Seitenabruf. Der alte
|
|
Athena-Webadapter sowie SearXNG/TinySearch gehören nicht zum MCPHub-Image.
|
|
- Athenas administrativer Operator ist hostgebunden und bleibt auf Athena.
|
|
MCPHub reicht den vorhandenen, nur über WireGuard erreichbaren HTTP-Endpunkt
|
|
`http://192.168.1.212:8202/mcp` als `/mcp/athena-operator` weiter. Dadurch
|
|
bleibt genau eine Operator-Instanz bestehen; im Hub liegt weder ein zweiter
|
|
Operator noch ein SSH-Schlüssel für Athena.
|
|
|
|
## Dauerhafte Daten
|
|
|
|
`/mnt/nvme-storage/appdata/MCPHub` on Unraid contains:
|
|
|
|
- `mcp_settings.json` (produktive Serverliste, Benutzer und Tool-Schalter)
|
|
- `config/mcp-registry.json` (Seed und Extension-Metadaten für Recovery)
|
|
- `extensions/<id>/` (geprüfte portable MCP-Laufzeiten)
|
|
- `work/<id>/` (Manifest, Build- und Resume-Zwischenstand)
|
|
- `jwt-secret` (stable login sessions)
|
|
- `secrets/*.env` (local credentials, mode `0600`)
|
|
|
|
Das Verzeichnis wird vom normalen Unraid-Appdata-Backup erfasst. Das Image
|
|
enthält nur versionierten Code und keine Zugangsdaten.
|
|
|
|
## Unraid-Verwaltung
|
|
|
|
Der Produktionscontainer muss aus
|
|
`config/unraid-templates/my-MCPHub.xml` über Unraids Docker-Oberfläche erzeugt
|
|
oder mit DockerMans `update_container` neu aufgebaut werden. Ein direktes
|
|
`docker run` startet zwar denselben Dienst, setzt aber nicht die Labels
|
|
`net.unraid.docker.managed`, `net.unraid.docker.webui` und
|
|
`net.unraid.docker.icon`; Unraid zeigt ihn dann fälschlich als „3rd Party“ und
|
|
kann Bearbeiten sowie Updates einschränken.
|
|
|
|
Nach einem lokalen Image-Rebuild deshalb in der Unraid-Oberfläche beim
|
|
MCPHub-Template **Apply** wählen. Alternativ auf Unraid:
|
|
|
|
```bash
|
|
/usr/bin/php -q /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/update_container MCPHub
|
|
```
|
|
|
|
Appdata und Secrets bleiben bei dieser Neuerstellung erhalten.
|
|
|
|
Das Dashboard bleibt passwortgeschützt. MCP-Clients teilen sich einen
|
|
generierten Bearer-Schlüssel in `client-token`. Dadurch ist kein OAuth-Ablauf
|
|
pro Client nötig, ohne die MCP-Routen anonym zu öffnen. Port 8787 darf nicht ins
|
|
öffentliche Internet weitergeleitet werden.
|
|
|
|
`configure-settings.py` rendert die Registry ausschließlich bei einer frischen
|
|
Wiederherstellung. Danach sind MCPHubs eigene Oberfläche und offizielle API die
|
|
Quelle der Wahrheit; ein Image-Update überschreibt neue MCPs nicht.
|
|
`verify-hub.py` führt
|
|
Handshakes und Tool-Listen ohne Schreibzugriff aus. `probe-hub.py` führt genau
|
|
eine ausdrücklich benannte, begrenzte Funktionsprobe aus.
|
|
|
|
## Portable MCPs installieren
|
|
|
|
Hermes installiert portable MCPs ausschließlich mit den Werkzeugen des
|
|
`mcphub-admin`-Servers. HTTP-Endpunkte sowie veröffentlichte npm-/Python-Pakete
|
|
haben je ein direktes Installationswerkzeug. Für GitHub-Repositories übernimmt
|
|
`mcphub_admin_install_git` den kompletten Ablauf: klonen, einen festen Commit
|
|
auflösen, Python oder Node bauen, versioniert unter
|
|
`extensions/<id>/releases/` speichern und deaktiviert registrieren.
|
|
|
|
Danach prüft `mcphub_admin_git_status` ausschließlich, ob die namentlich
|
|
angegebenen Umgebungsvariablen vorhanden sind. Erst
|
|
`mcphub_admin_activate_git` aktiviert, veröffentlicht, lädt neu und liefert die
|
|
echte Tool-Liste. Updates benutzen denselben Installationsaufruf; die vorige
|
|
Version bleibt für `mcphub_admin_rollback_git` erhalten. Dafür sind weder
|
|
Terminal noch SSH, Docker-Befehle, ein Image-Neubau oder Änderungen am
|
|
Unraid-Template nötig.
|
|
|
|
Hermes verbindet sich nur mit der verwalteten Gruppe `/mcp/hermes`. Dadurch werden
|
|
neu aktivierte Server nach **MCP neu laden** sichtbar, ohne pro MCP eine weitere
|
|
Hermes-Konfiguration zu erzeugen. Der interne Server `mcphub-admin` stellt die
|
|
üblichen Installationswege für HTTP-, npm- und Python-MCPs als Werkzeuge bereit.
|
|
|
|
## Migrationsregel
|
|
|
|
Jeweils nur einen Server verschieben, seinen Handshake und einen begrenzten
|
|
read-only-Aufruf prüfen und erst danach Clients auf
|
|
`http://UNRAID-IP:8787/mcp/{server}` umstellen. Der alte Athena-Container wird
|
|
erst gestoppt, wenn Hermes und OpenWebUI nachweislich über MCPHub funktionieren.
|
|
|
|
Aktueller Stand: Athena Operator, ARR, Navidrome, GitHub, Home Assistant,
|
|
MUA/Unraid und FRITZ!Box sind auf MCPHub registriert. Alte portable
|
|
Athena-MCP-Container bleiben ausgeschaltet als kurzfristiges Rückfallnetz
|
|
bestehen. Der frühere Webadapter ist nicht mehr Bestandteil des Images.
|