# 🔗 Intégration MCP et n8n ## Vue d'ensemble Effi s'intègre avec plusieurs outils externes via : - **MCP** (Model Context Protocol) : Protocole d'outils pour l'IA - **n8n** : Plateforme d'automatisation de workflows - **CouchDB** : Synchronisation Obsidian LiveSync --- ## MCPO - Proxy MCP ### Rôle MCPO fait le pont entre OpenWebUI et les outils MCP (Obsidian, Leantime, etc.). ### Configuration **Fichier : `~/effi/mcpo-config/config.json`** ```json { "mcpServers": { "leantime": { "url": "http://leantime-mcp:8079/sse", "transport": "sse" } } } ``` **Important :** Le transport doit être `sse` (MCPO ne supporte pas StreamableHTTP). Le conteneur `leantime-mcp` doit aussi être configuré en mode SSE. ### Accès - URL MCPO : `http://192.168.1.27:8000` - Port : 8000 ### Vérification ```bash # Lister les outils MCP disponibles curl -s http://192.168.1.27:8000/v1/tools | jq '.[].name' # Vérifier la connexion MCPO docker logs mcpo --tail 20 ``` ### Dépannage **Problème : mcpo redémarre en boucle** **Cause** : Config `mcpo-config/config.json` vide ou inexistant **Solution** : ```bash cat > ~/effi/mcpo-config/config.json << 'EOF' {"mcpServers": {}} EOF docker compose restart mcpo ``` **Problème : Processus zombies** **Symptômes** : `[mcpo] ` dans `ps aux` **Solution** : ```bash docker restart mcpo ``` **Problème : Erreur 400 Bad Request entre MCPO et leantime-mcp** **Cause** : Incompatibilité de protocole (SSE vs StreamableHTTP) **Solution** : Vérifier que leantime-mcp est lancé avec `--transport sse` et que la config MCPO pointe vers `/sse` avec `"transport": "sse"`. --- ## leantime-mcp - Serveur MCP Leantime ### Rôle Serveur MCP dédié qui expose l'API Leantime via le protocole MCP, permettant à Effi de gérer les projets et tâches Leantime directement depuis Open WebUI. ### Architecture ``` Open WebUI → MCPO (port 8000) → leantime-mcp (port 8079, SSE) → Leantime API (port 8380, XPenology NAS) ``` ### Configuration **Docker Compose :** ```yaml leantime-mcp: build: context: ./leantime-mcp dockerfile: Dockerfile image: effi-leantime-mcp:latest container_name: effi-leantime-mcp restart: unless-stopped environment: - LEANTIME_URL=http://192.168.1.25:8380 - LEANTIME_API_KEY=${LEANTIME_API_KEY} - LEANTIME_USER_EMAIL=${LEANTIME_USER_EMAIL} ports: - "8079:8079" networks: - effi-net ``` **Variables d'environnement (`.env`) :** ```bash LEANTIME_URL=http://192.168.1.25:8380 LEANTIME_API_KEY=votre_cle_api_leantime LEANTIME_USER_EMAIL=votre_email@example.com ``` ### Outils MCP disponibles | Outil | Description | |-------|-------------| | `list_projects` | Lister les projets | | `create_project` | Créer un projet | | `get_project` | Détails d'un projet | | `list_tickets` | Lister les tickets/tâches | | `create_ticket` | Créer un ticket | | `update_ticket` | Modifier un ticket | | `get_ticket` | Détails d'un ticket | | `list_users` | Lister les utilisateurs | | `get_user` | Détails d'un utilisateur | | `add_comment` | Ajouter un commentaire | | `add_timesheet` | Ajouter une entrée timesheet | | `get_timesheets` | Consulter les timesheets | ### Clé API Leantime Pour générer la clé API : 1. Se connecter à `http://192.168.1.25:8380` 2. Aller dans **Company > API Keys** 3. Créer une nouvelle clé 4. Copier la clé dans `.env` sous `LEANTIME_API_KEY` ### Transport SSE **Important :** Leantime-mcp utilise le transport SSE (Server-Sent Events), pas StreamableHTTP. MCPO ne supporte que SSE. Le Dockerfile lance le serveur avec `--transport sse`. --- ### Rôle n8n permet de créer des workflows d'automatisation déclenchés par Effi ou des événements externes. ### Configuration **Variables d'environnement (dans `.env`) :** ```bash N8N_USER=master N8N_PASSWORD=mot_de_passe_securise ``` ### Accès - URL : `http://192.168.1.27:5678` - Authentification : Basic Auth ### Cas d'usage #### Exemple 1 : Webhook depuis Effi 1. Créer un workflow dans n8n avec un nœud **Webhook** 2. Configurer l'URL du webhook dans OpenWebUI 3. Effi peut déclencher des actions via ce webhook #### Exemple 2 : Intégration Home Assistant (futur) ``` [Commande vocale Effi] → OpenWebUI → n8n (webhook) → API Home Assistant → Action domotique ``` ### Sauvegarde des workflows Les workflows sont stockés dans `~/effi/n8n-data/` --- ## CouchDB - Obsidian LiveSync ### Rôle CouchDB sert de backend de synchronisation pour Obsidian LiveSync, permettant d'accéder aux notes depuis plusieurs appareils. ### Initialisation (premier démarrage) ```bash # Créer les bases système curl -X PUT http://master:MOT_DE_PASSE@192.168.1.27:5984/_users curl -X PUT http://master:MOT_DE_PASSE@192.168.1.27:5984/_replicator # Créer la base pour Obsidian curl -X PUT http://master:MOT_DE_PASSE@192.168.1.27:5984/obsidian-livesync ``` ### Configuration Obsidian Dans Obsidian (desktop ou mobile) : 1. Installer le plugin **Self-hosted LiveSync** 2. Configuration : - **URL** : `http://192.168.1.27:5984` - **Database** : `obsidian-livesync` - **Username** : `master` - **Password** : [mot de passe CouchDB] 3. Activer la synchronisation ### Accès - URL : `http://192.168.1.27:5984` - Interface Fauxton : `http://192.168.1.27:5984/_utils` --- ## Pipelines - Middleware mem0 ### Rôle Le service pipelines est un middleware pour OpenWebUI permettant d'utiliser des pipelines personnalisés, notamment mem0 pour la mémoire avancée. ### Accès - URL : `http://192.168.1.27:9099` --- ## Intégrations futures ### Home Assistant Voir le document dans les notes d'archive pour les idées d'intégration complète avec Home Assistant. ### Nextcloud Intégration possible pour : - Sauvegarde automatique des conversations - Accès aux fichiers pour le RAG - Synchronisation des tâches