# 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, Deemix, Navidrome und GitHub laufen als lokale stdio-Unterprozesse. - Home Assistant und MUA/Unraid sind vorhandene HTTP-MCP-Endpunkte und werden vom Hub direkt weitergereicht. - Der Web-Adapter kann hier laufen; SearXNG/TinySearch dürfen getrennte Backend-Dienste bleiben. - 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` (users, server registrations and tool toggles) - `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` erhält bestehende MCPHub-Benutzer und ersetzt Demo-Server durch die deklarative Produktionsliste. `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. ## 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, Deemix, Navidrome, GitHub, Home Assistant und MUA/Unraid sind auf MCPHub registriert. Alte portable Athena-MCP-Container bleiben vorläufig als ausgeschaltetes Rückfallnetz bestehen. Der Web-Adapter ist der letzte noch offene Migrationspunkt.