Files
bf-infra/mcp/INVENTORY.md
Christoph Emsenhuber c5d4ee8bfa TP2 📋 Komodo-Migration geplant: Core/Periphery/MCP Compose + MIGRATION.md
Portainer CE 2.40 hat keinen passenden portainer-mcp (erst ab 2.41) → Entscheidung:
Ablösung durch Komodo + Samik081/mcp-komodo (selber Autor wie pve-mcp).

- mcp/komodo/MIGRATION.md       — 5-Phasen-Plan (Export → Core → Periphery → Stacks → MCP)
- mcp/komodo/core-compose.yml   — Komodo Core + MongoDB auf pve-LXC (.126:9120)
- mcp/komodo/periphery.compose.yml — Agent-Template für DS923/.10, odroid/.7, macmini/.167, nas-fm
- mcp/komodo/komodo-mcp-compose.yml — MCP-Adapter, macvlan .176, SSE :3000
- mcp/komodo/.env.example       — Secret-Vorlage
- mcp/INVENTORY.md              — portainer-mcp auf ⏳ retiring, komodo-mcp als 🟡 geplant eingetragen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 14:42:52 +02:00

3.7 KiB

MCP-Inventar — BF (Single Source of Truth gegen "1000 MCP-Leichen")

Regel: Jeder MCP-Server, der für BF läuft, steht hier — sonst existiert er nicht. Kein lokaler Ad-hoc-npx-Wildwuchs auf Laptops. Zentral = Docker auf einem Host, FQDN-adressiert. Wer einen MCP abschaltet, streicht die Zeile (oder setzt Status retired mit Datum).

Aktive / geplante MCPs

MCP Zweck / Geräte Host Transport / Endpoint Image Config Status
MikroMCP (AliKarami) MikroTik hAP ax² ap1/ap2 (RouterOS 7) — WLAN/CAPsMAN, später Router-Cutover jetzt: lokal (dieser Mac) / Ziel: Mac mini .167 Docker jetzt stdio (npx mikromcp serve) / Ziel HTTP :3000 ghcr.io/alikarami/mikromcp:latest (HTTP) bzw. npm mikromcp (stdio) mcp/mikromcp/ + Claude-Code user-config 🟢 live (stdio), doctor 12/12, in Claude Code ✓Connected
pve-mcp (samik081) Proxmox VE API (Host .100) DS923 (.10), macvlan-IP .173 SSE http://10.40.41.173:3000/sse ghcr.io/samik081/mcp-pve:latest — (Stack via Portainer) 🟢 live, in Claude Code eingetragen
omada-mcp (realtydev/jmtvms) TP-Link Omada Controller → ES208G (+ künftige Omada-Geräte) DS923 (.10), macvlan-IP .174 SSE http://10.40.41.174:3000/sse (MCP_TRANSPORT=sse) jmtvms/tplink-omada-mcp:latest mcp/omada/ ✓ (.env befüllt) 🔴 Container nicht deployed — nächster Schritt: Stack via Portainer endpointId=14
omada-controller Omada Software Controller (keine MCP) DS923 (.10), macvlan-IP .175 HTTPS https://10.40.41.175:8043 mbentley/omada-controller:6.2 omada/docker-compose.yml 🟢 live, configured, Wizard ✅
komodo-mcp (samik081) Docker-Management 5 Hosts via Komodo Core (ersetzt Portainer) DS923 (.10), macvlan-IP .176 SSE http://10.40.41.176:3000/sse ghcr.io/samik081/mcp-komodo:latest mcp/komodo/ ✓ (.env.example → .env nach Phase 1) 🟡 geplant — Migration: mcp/komodo/MIGRATION.md
portainer-mcp (offiziell) Docker-Überblick via Portainer CE 2.40.0 .126:9443 — portainer/portainer-mcp mcp/portainer/ (Token .env ✓) ⏳ retired nach Komodo-Migration — Token aufheben bis Phase 4
ALLNET-MCP ALLNET ALL-SG8316M Core-Switch — — — — ⛔ bewusst NICHT (Telnet/1-VTY/15-min-Lock auf Core = zu fragil). User-Entscheid: erst beschriebener Weg, sonst Omada-Core-Tausch.

Legende: 🟢 live · 🟡 staged (Config da, nicht deployed) · 🔴 blockiert · ⛔ bewusst nicht gemacht

Anti-Sprawl-Regeln

  1. Zentral statt lokal: MCPs laufen als Container auf einem festen Host, nicht als npx pro Laptop.
  2. Eine Zeile pro MCP in dieser Tabelle. Kein Eintrag → abschalten.
  3. Config im Git (mcp/<name>/), Secrets nur in .env (gitignored).
  4. FQDN statt IP, sobald eingerichtet (DNS-Rewrite) → Endpoint-Spalte updaten.
  5. Review-Datum: mind. halbjährlich diese Tabelle gegen tatsächlich laufende Container prüfen (docker ps auf den Hosts).

ALLNET — warum kein MCP

ALL-SG8316M (Core) nach FW-2.2.1-Flash: Web-UI tot, nur Telnet-CLI, kein SSH/REST/SNMP-Write, nur 1 VTY-Line, ~15 min Busy-Lock bei Stale-Sessions. Ein MCP darüber wäre auf dem Core-Switch (an dem alles hängt) fragil und lockout-gefährlich. → Management bleibt bei der bestehenden Telnet-CLI-Toolchain (switch/cli/). Strategische Option: Core-Switch (Methusalem, Bj. 2015) gegen einen Omada-Switch tauschen → fällt unter denselben Omada-Controller/omada-mcp. Das ist Hardware-Ausgabe + Core-Cutover → User-Entscheidung (offen).