Retour à la topologie
DOCUMENTATION TECHNIQUE

Infra-Manager MCP Server

infra-manager-mcp.md

Infra-Manager MCP Server

Ce que fait ce service

Serveur MCP (Model Context Protocol) qui expose l'infrastructure Proxmox à des agents IA (Claude, etc.). Permet à un LLM de lister, créer, démarrer, arrêter ou inspecter des VMs et containers LXC Proxmox, ainsi que d'exécuter des commandes SSH sur les nœuds. Utilise le protocole SSE (Server-Sent Events) pour la communication MCP.

Où il est installé

  • Logs : /data/compose/logs/ (monté dans /var/log du container)
  • Image : ghcr.io/faton5/homelab-mcp-server:latest (image personnelle publiée sur GitHub Container Registry)
  • Nom du container : infra-manager-mcp
  • Géré via : Portainer (stack 2)
  • Démarré : il y a 6 semaines
  • Configuration actuelle

    docker-compose.yml (stack Portainer 2) :
    services:
      infra-manager-mcp:
        image: ghcr.io/faton5/homelab-mcp-server:latest
        container_name: infra-manager-mcp
        restart: unless-stopped
        ports:
          - "10850:10850"
        environment:
          - PROXMOX_HOST=192.168.1.12
          - PROXMOX_PORT=8006
          - PROXMOX_TOKEN_ID=root@pam!mcp
          - PROXMOX_TOKEN_SECRET=***
          - PROXMOX_VERIFY_SSL=false
          - PROXMOX_TIMEOUT=30
          - MCP_TRANSPORT=sse
          - MCP_HOST=0.0.0.0
          - MCP_PORT=10850
          - MCP_NAME=infra-manager
          - SSH_ENABLED=true
          - SSH_DEFAULT_USER=root
          - LOG_LEVEL=INFO
          - PYTHONUNBUFFERED=1
        volumes:
          - ./logs:/var/log
        networks:
          - infra-network
    
    networks:
      infra-network:
        driver: bridge
    Le container tourne tail -f /dev/null comme commande principale — le serveur MCP est probablement lancé différemment (entrypoint ou processus supervisé).

    Ports et réseau

    Port hôtePort containerUsage
    ---------
    1085010850API MCP via SSE (Server-Sent Events)
  • Accessible depuis : réseau local (et potentiellement via NPM si exposé)
  • Endpoint MCP : http://:10850
  • Transport : SSE (Server-Sent Events)
  • Variables d'environnement

    VariableValeur
    ------
    PROXMOX_HOST192.168.1.12
    PROXMOX_PORT8006
    PROXMOX_TOKEN_IDroot@pam!mcp
    PROXMOX_TOKEN_SECRET***
    PROXMOX_VERIFY_SSLfalse
    PROXMOX_TIMEOUT30
    MCP_TRANSPORTsse
    MCP_HOST0.0.0.0
    MCP_PORT10850
    MCP_NAMEinfra-manager
    SSH_ENABLEDtrue
    SSH_DEFAULT_USERroot
    LOG_LEVELINFO

    Dépendances

  • Dépend de : Proxmox API (192.168.1.12:8006), SSH sur les nœuds Proxmox
  • Est utilisé par : agents IA (Claude Code, Claude Desktop, etc.) configurés pour utiliser ce serveur MCP
  • Commandes

    Voir le statut

    docker ps --filter name=infra-manager-mcp

    Voir les logs

    ```bash docker logs infra-manager-mcp --tail 50

    Ou directement :

    ls /data/compose/logs/ ```

    Démarrer

    docker start infra-manager-mcp

    Arrêter

    docker stop infra-manager-mcp

    Redémarrer

    docker restart infra-manager-mcp

    Logs — Dernière activité

    Aucun log produit observé directement (container tourne avec tail -f /dev/null, logs éventuellement dans /data/compose/logs/).

    Points d'attention

  • • Le token Proxmox utilisé est root@pam!mcp — c'est un token root avec potentiellement tous les droits. Vérifier dans Proxmox quels droits sont effectivement associés à ce token (Datacenter → API Tokens).
  • SSH_ENABLED=true avec SSH_DEFAULT_USER=root signifie que le MCP peut exécuter des commandes SSH en tant que root sur les nœuds Proxmox — surface d'attaque importante si le port 10850 est exposé publiquement.
  • PROXMOX_VERIFY_SSL=false — les communications Proxmox ne vérifient pas le certificat TLS.
  • • Le port 10850 doit idéalement rester privé (réseau local uniquement ou accessible uniquement via tunnel/VPN), pas exposé sur Internet.
  • • Ce service est une image personnelle (ghcr.io/faton5/homelab-mcp-server) — si l'image est mise à jour sur GitHub, un docker pull + redémarrage met à jour le serveur.