Portainer-Server (pve LXC 400): 2.40.0 → 2.42.0 via Image-Swap mit Volume-Erhalt.
Pre-Upgrade-Snapshot: docker commit :2.40.0-preupgrade-20260828 (Rollback 7 d
verfügbar) + Settings/Stacks/Endpoints-JSON-Dump (40 KB, 31 Stacks, 4 Endpoints).
Instance-ID + API-Token nach Bump identisch — kein Re-Auth, kein Settings-Verlust.
portainer-mcp: offizielles PyPI-Paket mcp-portainer~=2.42.0 (193 Tools), nur
in bf-infra/opencode.jsonc, via uvx-stdio. Tool-Gate: get_guidance() einmal pro
Session zwingend vor erstem Read. Andere Projekte unberührt.
Korrekturen ggü. Handoff 2026-08-28 README:
- mcp-portainer PyPI bis 2.42.6, Docker-Hub portainer/portainer-ce nur bis 2.42.0
(unterschiedliche Versionierungspfade).
- mcp/portainer/README.md ist auf 2.42.6 formuliert und sollte nachgezogen werden.
Bestand: mcp/INVENTORY.md portainer-mcp ⛔→🟢 + Header MCP-WARP-Direktive ergänzt.
.mcp.json (war getrackt aus Commit 3426366) entfernt: opencode nutzt opencode.jsonc,
nicht .mcp.json — Claude-Code-Konvention hier irrelevant.
59 lines
2.6 KiB
JSON
59 lines
2.6 KiB
JSON
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"instructions": ["CLAUDE.md"],
|
|
"permission": "allow",
|
|
"mcp": {
|
|
"gitea-mcp": {
|
|
"type": "remote",
|
|
"url": "https://gitea-mcp.emsenhuber.net/mcp",
|
|
"enabled": true
|
|
},
|
|
"mikromcp": {
|
|
"type": "local",
|
|
"command": ["npx", "-y", "mikromcp", "serve"],
|
|
"environment": {
|
|
"MIKROMCP_CONFIG_PATH": "/Users/christophemsenhuber/dev/bf-infra/mcp/mikromcp/config/routers.yaml",
|
|
"MIKROMCP_DEFAULT_ROUTER": "ap1"
|
|
},
|
|
"enabled": true,
|
|
"timeout": 30000
|
|
},
|
|
"pve-mcp": {
|
|
"type": "remote",
|
|
"url": "http://10.40.20.173:3000/",
|
|
"enabled": true,
|
|
"timeout": 15000
|
|
},
|
|
"home-assistant": {
|
|
"type": "remote",
|
|
"url": "http://10.40.20.105:9583/private_29X8x73taoNEq6gzmbVdyg",
|
|
"enabled": true,
|
|
"timeout": 15000
|
|
},
|
|
"cloudflare": {
|
|
"type": "remote",
|
|
"url": "https://mcp.cloudflare.com/mcp",
|
|
"enabled": true,
|
|
"timeout": 15000,
|
|
"oauth": {}
|
|
},
|
|
"portainer": {
|
|
"type": "local",
|
|
"command": ["uvx", "--from", "mcp-portainer~=2.42.0", "mcp-portainer"],
|
|
"environment": {
|
|
"PORTAINER_URL": "https://10.40.20.126:9443",
|
|
"PORTAINER_API_KEY": "{env:PORTAINER_API_KEY}",
|
|
"PORTAINER_TLS_VERIFY": "0"
|
|
},
|
|
"enabled": true,
|
|
"timeout": 15000
|
|
}
|
|
},
|
|
"command": {
|
|
"handoff": {
|
|
"description": "Session-Übergabe generieren oder laden",
|
|
"template": "Du bist das Handoff-Tool für das BF-Infra-Projekt.\n\n1. Ermittle, was zu tun ist:\n - Lese `docs/handoff-*.md` und finde die neueste Datei (nach Datum).\n - Wenn `$ARGUMENTS` \"resume\" oder einen Dateinamen enthält: lade die genannte oder neueste Handoff-Datei.\n - Wenn `$ARGUMENTS` leer ist oder \"generate\" enthält: generiere eine neue Handoff-Datei.\n\n2. Generieren (`/handoff`):\n - Lese `docs/teilprojekte.md` (Quick-Index-Block, Zeilen ~174-200) für den aktuellen TP-Status.\n - Prüfe offene Config-Transaktionen: `bash` mit `python3 nautobot/gc-transaktion.py status`.\n - Schreibe `docs/handoff-YYYYMMDD-thema.md` mit: Titel, Ausgangslage (was erledigt, was läuft), offene Schritte, Fallen/Gotchas, Einstieg für die nächste Session.\n - Sag dem User, welche Datei erstellt wurde.\n\n3. Laden (`/handoff resume`):\n - Lese die neueste Handoff-Datei vollständig.\n - Gib Zusammenfassung: Thema, Stand, offene Schritte.\n - Frage: \"Soll ich die Arbeit aus dieser Handoff-Datei fortsetzen?\"\n\nWichtig: Keine Secrets in die Handoff-Datei schreiben. Verweise auf existierende Doku statt zu duplizieren. Ziel < 200 Zeilen."
|
|
}
|
|
}
|
|
}
|