- 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)
254 lines
5.8 KiB
Markdown
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
|