# portainer-mcp (offiziell) — BF Überblick über die Docker-Landschaft via Portainer. Übersicht aller MCPs: [../INVENTORY.md](../INVENTORY.md). ## Ist-Stand (2026-06-09) - **Portainer-Server läuft** auf `https://10.40.41.126:9443`, **v2.40.0**, managed **5 Endpoints**: `pve` (lokal), `nas-bf (ds923+)`, `odroid-m1`, `macmini`, `nas-fm (ds415+)`. - **API-Token** vorhanden (admin) → in `.env` (gitignored). - **Blocker:** `portainer-mcp` gibt es nur als **2.41.x / 2.42.x**, jeweils = gleiche Portainer-Minor. **2.40 hat keinen passenden MCP** → Portainer auf `.126` auf **2.42.x** bumpen (sauberster Weg). ## Weg A — lokal stdio via uvx (least-invasive, kein Portainer-Touch nötig zum Probieren) Voraussetzung: `uv` installieren (`brew install uv` oder `curl -LsSf https://astral.sh/uv/install.sh | sh`). ``` # NACH Portainer-Bump auf 2.42 (oder Versuch 2.41 gegen 2.40): claude mcp add portainer -s user \ -e PORTAINER_URL=https://10.40.41.126:9443 \ -e PORTAINER_API_KEY=ptr_... \ -e PORTAINER_TLS_VERIFY=0 \ -- uvx --from "mcp-portainer~=2.42.0" mcp-portainer ``` Read-only erzwingen: über MCP-Config/Profil (siehe portainer-mcp `docs/configuration.md` → „read-only capabilities"). ## Weg B — Docker HTTP auf Mac mini (.167), zentral hinter FQDN (wie ha-mcp/MikroMCP-Ziel) ``` docker run -d --name portainer-mcp -p 17717:17717 \ -e PORTAINER_URL=https://10.40.41.126:9443 \ -e PORTAINER_API_KEY=ptr_... \ -e PORTAINER_TLS_VERIFY=0 \ -e PORTAINER_MCP_AUTH_TOKEN= \ -e PORTAINER_MCP_ALLOWED_HOSTS=:17717 \ portainer/portainer-mcp:2.42 # Client: claude mcp add portainer --transport http http://:17717/mcp \ --header "Authorization: Bearer " \ --header "X-Portainer-API-Key: ptr_..." ``` ## Versions-Policy (Doku) Match MCP-Minor = Portainer-Minor. Tabelle: nur 2.41.x↔2.41.x, 2.42.x↔2.42.x. Kein 2.40. TLS: self-signed → `PORTAINER_TLS_VERIFY=0`.