Module 6 — Brancher LibreChat
Les modules précédents ont validé le serveur MCP avec un client Python écrit à la main. Ce module montre comment brancher une vraie interface de chat, LibreChat, sur ce même serveur — sans réécrire de client : LibreChat embarque déjà un client MCP.
Principe
Section titled “Principe”LibreChat est une interface de chat open source qui peut se connecter à plusieurs fournisseurs de modèles (OpenAI, Google, Anthropic…) et, depuis les versions récentes, à des serveurs MCP externes déclarés dans sa configuration. Le modèle de langage choisi décide, tour après tour, s’il doit appeler un des tools exposés par le serveur MCP Odoo — exactement le même mécanisme que celui exercé manuellement au Module 3, mais piloté par un LLM plutôt que par un script.
Utilisateur <-> LibreChat (UI + LLM) <-- MCP --> Serveur MCP Odoo <-- XML-RPC --> OdooAjouter LibreChat à la stack
Section titled “Ajouter LibreChat à la stack”LibreChat nécessite MongoDB pour stocker conversations et utilisateurs. On ajoute ces deux services au docker-compose.yml du projet :
services: # ... db, odoo, mcp-server (modules precedents) ...
mongodb: image: mongo:7 volumes: - mongo-data:/data/db networks: - mcp-net
librechat: image: ghcr.io/danny-avila/librechat:latest depends_on: - mongodb - mcp-server ports: - "3080:3080" environment: - MONGO_URI=mongodb://mongodb:27017/LibreChat - CREDS_KEY=${LIBRECHAT_CREDS_KEY} - CREDS_IV=${LIBRECHAT_CREDS_IV} - JWT_SECRET=${LIBRECHAT_JWT_SECRET} - JWT_REFRESH_SECRET=${LIBRECHAT_JWT_REFRESH_SECRET} volumes: - ./librechat.yaml:/app/librechat.yaml:ro networks: - mcp-net
volumes: # ... odoo-web-data, odoo-db-data ... mongo-data:CREDS_KEY, CREDS_IV, JWT_SECRET et JWT_REFRESH_SECRET sont des secrets propres à votre déploiement (à générer, jamais à réutiliser d’un exemple trouvé en ligne) — voir la documentation LibreChat pour leur génération.
Déclarer le serveur MCP dans librechat.yaml
Section titled “Déclarer le serveur MCP dans librechat.yaml”C’est ici que LibreChat apprend l’existence du serveur MCP Odoo, à l’adresse interne au réseau Docker (mcp-server, le nom du service, pas localhost) :
mcpServers: odoo: type: streamable-http url: http://mcp-server:8000/mcp
endpoints: google: disabled: falseCe même fichier peut activer un ou plusieurs fournisseurs de LLM (ici Google/Gemini à titre d’exemple) : c’est ce modèle qui décidera d’appeler les tools MCP Odoo en fonction des questions posées par l’utilisateur.
Démarrer et vérifier
Section titled “Démarrer et vérifier”docker compose up -d mongodb librechatUne fois démarré, LibreChat est accessible sur http://localhost:3080. Dans l’interface, le serveur MCP odoo doit apparaître comme source d’outils disponible pour la conversation (selon la version de LibreChat, dans le sélecteur d’outils ou automatiquement pour les endpoints qui supportent les tools). Une question comme « Combien ai-je de contacts dans Odoo ? » devrait déclencher un appel à search_records ou aggregate_records côté serveur MCP, exactement comme au Module 3 — mais initié par le LLM plutôt que par un script Python.
Sécurité : quel mode choisir derrière LibreChat ?
Section titled “Sécurité : quel mode choisir derrière LibreChat ?”LibreChat expose le serveur MCP à un LLM qui peut, en théorie, formuler des requêtes non anticipées. C’est précisément le scénario où le mode sécurisé du Module 5 prend tout son sens : une liste blanche de modèles réduit la surface de ce qu’un modèle de langage peut lire ou modifier, même s’il se trompe ou est manipulé par une requête utilisateur malveillante (prompt injection). Le Module 7 détaille ce risque et les précautions à prendre.