fix(mcp): intégration réelle passerelle MCP Portainer (image+auth) (v0.34.0)
Image portainer-mcp 0.6.0 (inexistant) -> 2.42.6. Passerelle HTTP :17717/mcp attend Bearer (secret passerelle) + X-Portainer-API-Key (clé API restreinte chlova) : ajout config.portainerApiKey + McpServerConfig.extraHeaders, backend envoie les deux. socket-proxy supprimé (plus de socket monté). Compose prod, .env.example, deploy.md à jour. Typecheck + 78 tests verts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016w5jRe87MGdd6AMvXQcHNi
This commit is contained in:
+9
-4
@@ -19,13 +19,18 @@ OLLAMA_MODEL=qwen3:cloud # modèle cloud (suffixe :cloud), tool-call
|
||||
MCP_N8N_URL=http://n8n:5678/mcp-server/http # ou https://<n8n-public>/mcp-server/http
|
||||
MCP_N8N_AUTH_TOKEN= # SECRET — "MCP Access Token" n8n (Bearer)
|
||||
|
||||
# ── MCP Portainer (portainer/portainer-mcp) ────────────────────────────
|
||||
PORTAINER_URL=https://portainer:9443 # interne uniquement
|
||||
PORTAINER_MCP_AUTH_TOKEN= # SECRET — token Portainer à portée RESTREINTE
|
||||
# ── MCP Portainer (passerelle HTTP portainer/portainer-mcp) ────────────
|
||||
PORTAINER_URL=http://portainer:9000 # API Portainer, interne (même hôte)
|
||||
# Secret de PASSERELLE (front-gate) : même valeur côté backend et côté serveur
|
||||
# MCP. Envoyé en Authorization: Bearer. N'autorise que l'accès à la passerelle.
|
||||
PORTAINER_MCP_AUTH_TOKEN= # SECRET — secret de passerelle (au choix)
|
||||
# Clé API Portainer de l'utilisateur `chlova` (RESTREINTE) : envoyée en header
|
||||
# X-Portainer-API-Key. C'est elle qui cloisonne l'accès réel de CHLOVA.
|
||||
PORTAINER_API_KEY= # SECRET — Access token Portainer de chlova
|
||||
# Phase 1 : DOIT rester true (le boot échoue sinon). Phase 2 : peut passer false
|
||||
# pour autoriser les écritures Portainer (sous gatekeeper + review).
|
||||
PORTAINER_READ_ONLY=true
|
||||
MCP_PORTAINER_URL=http://mcp-portainer:3000
|
||||
MCP_PORTAINER_URL=http://mcp-portainer:17717/mcp
|
||||
|
||||
# ── Surface Telegram (OPTIONNELLE) ─────────────────────────────────────
|
||||
# Si vide, la surface Telegram n'est pas démarrée. Le backend exige alors une
|
||||
|
||||
Reference in New Issue
Block a user