# 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. - 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//` (geprüfte portable MCP-Laufzeiten) - `work//` (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//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, Deemix, 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.