Files
Effi/docs/02-configuration/mcp-et-n8n.md
Folzo c4467d0da2 feat: integrate Leantime project management via MCP (leantime-mcp + MCPO)
- Add leantime-mcp Dockerfile (daniel-eder/leantime-mcp, SSE transport)
- Add leantime-mcp service to docker-compose.yml on effi-net
- Add Leantime env vars to .env.example (API_KEY, USER_EMAIL, URL)
- Update services.md: Leantime + leantime-mcp entries, dependency diagram, resource table
- Update mcp-et-n8n.md: MCPO config with leantime SSE server, new leantime-mcp section
- Add LEANTIME-INSTALLATION.md: full reinstall guide (XPenology + MCP)
2026-05-10 17:53:21 +02:00

254 lines
5.8 KiB
Markdown

# 🔗 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] <defunct>` 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