Files
AI-Profile-Router/platform/mcphub/README.md

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.