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)
This commit is contained in:
+13
-1
@@ -51,7 +51,19 @@ N8N_PASSWORD=changez_moi_mot_de_passe_securise
|
||||
SEARXNG_SECRET_KEY=changez_moi_par_une_cle_longue_et_aleatoire
|
||||
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# 6. CONFIGURATION OPTIONNELLE
|
||||
# 6. LEANTIME MCP (Gestion de projet)
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# URL d'accès à Leantime (depuis le conteneur MCP)
|
||||
LEANTIME_URL=http://192.168.1.25:8380
|
||||
|
||||
# Clé API Leantime (Company > API Keys dans l'interface Leantime)
|
||||
LEANTIME_API_KEY=changez_moi_par_cle_api_leantime
|
||||
|
||||
# Email de l'utilisateur Leantime utilisé par le MCP
|
||||
LEANTIME_USER_EMAIL=votre_email@example.com
|
||||
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# 7. CONFIGURATION OPTIONNELLE
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# Fuseau horaire (déjà configuré dans docker-compose.yml)
|
||||
# TZ=Europe/Paris
|
||||
|
||||
@@ -86,6 +86,28 @@ services:
|
||||
- ./mcpo-config:/app/config:ro
|
||||
- ./mcpo-patch.sh:/mcpo-patch.sh:ro
|
||||
entrypoint: ["sh", "/mcpo-patch.sh"]
|
||||
networks:
|
||||
- effi-net
|
||||
|
||||
# ─────────────────────────────────────────────────────────
|
||||
# 3b. LEANTIME MCP - Serveur MCP pour gestion de projet
|
||||
# → http://192.168.1.27:8079/mcp
|
||||
# ─────────────────────────────────────────────────────────
|
||||
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
|
||||
|
||||
# ─────────────────────────────────────────────────────────
|
||||
# 4. QDRANT - Vector Store (RAG sémantique)
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
| **speaches** | folzo-Corp | 8200 | `speaches:rocm-ct2` (build local) | STT Whisper avec ROCm |
|
||||
| **openedai-speech** | folzo-Corp | 8100 | `ghcr.io/matatonic/openedai-speech` | TTS Piper/XTTS |
|
||||
| **Ollama** | folzo-Corp | 11434 | Installation native | LLM (qwen2.5:14b) |
|
||||
| **SearXNG** | effi-server | 11112 | `searxng/searxng:latest` | Meta-search Engine |
|
||||
| **Leantime** | XPenology NAS | 8380 | `leantime/leantime:latest` | Gestion de projet |
|
||||
| **leantime-mcp** | effi-server | 8079 | `effi-leantime-mcp:latest` (build local) | Serveur MCP Leantime |
|
||||
| **Obsidian** | effi-server | 3100 | `lscr.io/linuxserver/obsidian:latest` | Interface Obsidian web |
|
||||
|
||||
---
|
||||
@@ -200,6 +203,48 @@ curl http://localhost:11434/api/tags
|
||||
|
||||
---
|
||||
|
||||
### Leantime (Port 8380)
|
||||
|
||||
**Rôle** : Gestion de projet open-source (AGPL-3.0)
|
||||
|
||||
**Hôte** : XPenology NAS (192.168.1.25)
|
||||
|
||||
**Fonctionnalités :**
|
||||
- Tableaux Kanban, Gantt, Lean Canvas
|
||||
- Wiki intégré
|
||||
- Gestion des tickets / tâches
|
||||
- Timesheet / suivi du temps
|
||||
- API REST complète
|
||||
|
||||
**Configuration :**
|
||||
- MySQL 8.4 dédié (volume nommé `leantime-db-data`)
|
||||
- Port 8380 (évite conflits DSM)
|
||||
- URL d'accès : `http://192.168.1.25:8380`
|
||||
|
||||
**Clé API** : Company > API Keys dans l'interface Leantime
|
||||
|
||||
---
|
||||
|
||||
### leantime-mcp (Port 8079)
|
||||
|
||||
**Rôle** : Serveur MCP (Model Context Protocol) pour Leantime
|
||||
|
||||
**Image** : `effi-leantime-mcp:latest` (build local depuis `leantime-mcp/Dockerfile`)
|
||||
|
||||
**Fonctionnement :**
|
||||
- Proxy entre MCPO et l'API Leantime
|
||||
- Transport SSE (compatible MCPO)
|
||||
- Outils exposés : `list_projects`, `create_project`, `list_tickets`, `create_ticket`, `update_ticket`, `get_ticket`, `get_project`, `list_users`, `get_user`, `add_comment`, `add_timesheet`, `get_timesheets`
|
||||
|
||||
**Variables d'environnement :**
|
||||
- `LEANTIME_URL` : URL Leantime depuis le conteneur (`http://192.168.1.25:8380`)
|
||||
- `LEANTIME_API_KEY` : Clé API Leantime
|
||||
- `LEANTIME_USER_EMAIL` : Email utilisateur Leantime
|
||||
|
||||
**Note :** Utilise le projet [daniel-eder/leantime-mcp](https://github.com/daniel-eder/leantime-mcp) (standalone, pas le plugin payant Leantime)
|
||||
|
||||
---
|
||||
|
||||
## Dépendances entre services
|
||||
|
||||
```
|
||||
@@ -207,6 +252,8 @@ open-webui
|
||||
├──► qdrant (pour RAG)
|
||||
├──► wol-proxy (pour Ollama)
|
||||
└──► mcpo (pour outils externes)
|
||||
└──► leantime-mcp (pour gestion de projet)
|
||||
└──► Leantime API (sur XPenology NAS)
|
||||
|
||||
n8n
|
||||
└──► Peut appeler tous les services via API
|
||||
@@ -228,3 +275,6 @@ Obsidian (mobile/desktop)
|
||||
| speaches | Élevé (GPU) | ~4 GB VRAM | ~3 GB (modèles) |
|
||||
| openedai-speech | Moyen | ~2 GB VRAM | ~2 GB (voix) |
|
||||
| Ollama | Élevé (GPU) | ~10 GB VRAM | ~9 GB (qwen2.5:14b) |
|
||||
| leantime-mcp | Faible | ~200 MB | Négligeable |
|
||||
| Leantime | Faible-Moyen | ~512 MB | ~100 MB (app) |
|
||||
| Leantime MySQL | Faible | ~512 MB | Variable (données) |
|
||||
|
||||
@@ -13,7 +13,7 @@ Effi s'intègre avec plusieurs outils externes via :
|
||||
|
||||
### Rôle
|
||||
|
||||
MCPO fait le pont entre OpenWebUI et les outils MCP (Obsidian, système de fichiers, etc.).
|
||||
MCPO fait le pont entre OpenWebUI et les outils MCP (Obsidian, Leantime, etc.).
|
||||
|
||||
### Configuration
|
||||
|
||||
@@ -21,23 +21,32 @@ MCPO fait le pont entre OpenWebUI et les outils MCP (Obsidian, système de fichi
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {}
|
||||
"mcpServers": {
|
||||
"leantime": {
|
||||
"url": "http://leantime-mcp:8079/sse",
|
||||
"transport": "sse"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Au démarrage, créer ce fichier s'il n'existe pas :
|
||||
|
||||
```bash
|
||||
cat > ~/effi/mcpo-config/config.json << 'EOF'
|
||||
{"mcpServers": {}}
|
||||
EOF
|
||||
```
|
||||
**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 : `http://192.168.1.27:8000`
|
||||
- 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**
|
||||
@@ -61,9 +70,84 @@ docker compose restart mcpo
|
||||
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"`.
|
||||
|
||||
---
|
||||
|
||||
## n8n - Automatisation
|
||||
## 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
|
||||
|
||||
|
||||
@@ -0,0 +1,286 @@
|
||||
# Installation Leantime + MCP Integration
|
||||
|
||||
Ce document decrit l'installation complete de Leantime sur XPenology NAS et l'integration MCP avec Effi (Open WebUI via MCPO).
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Open WebUI (effi-server:3000)
|
||||
→ MCPO (effi-server:8000)
|
||||
→ leantime-mcp (effi-server:8079, SSE)
|
||||
→ Leantime API (XPenology NAS:8380)
|
||||
```
|
||||
|
||||
## Partie 1 : Installation Leantime sur XPenology NAS
|
||||
|
||||
### Prerequis
|
||||
|
||||
- XPenology NAS avec Docker (DSM 7.2+)
|
||||
- Acces SSH au NAS
|
||||
- Reseau local : XPenology sur `192.168.1.25`
|
||||
|
||||
### 1. Creer le repertoire de configuration
|
||||
|
||||
```bash
|
||||
ssh admin@192.168.1.25
|
||||
sudo mkdir -p /volume1/docker/leantime
|
||||
cd /volume1/docker/leantime
|
||||
```
|
||||
|
||||
### 2. Creer le fichier `.env`
|
||||
|
||||
```bash
|
||||
cat > .env << 'EOF'
|
||||
LEANTIME_HOST=http://leantime:8380
|
||||
LEAN_DB_HOST=mysql-leantime
|
||||
LEAN_DB_USER=leantime
|
||||
LEAN_DB_PASSWORD=CHANGEZ_MOI_mot_de_passe_securise
|
||||
LEAN_DB_DATABASE=leantime
|
||||
LEAN_DB_PORT=3306
|
||||
LEAN_DEFAULT_TIMEZONE=Europe/Paris
|
||||
MYSQL_ROOT_PASSWORD=CHANGEZ_MOI_mot_de_passe_root_securise
|
||||
MYSQL_DATABASE=leantime
|
||||
MYSQL_USER=leantime
|
||||
MYSQL_PASSWORD=CHANGEZ_MOI_mot_de_passe_securise
|
||||
EOF
|
||||
```
|
||||
|
||||
**Important :** `LEAN_DB_PASSWORD` et `MYSQL_PASSWORD` doivent etre identiques. `MYSQL_ROOT_PASSWORD` est distinct.
|
||||
|
||||
### 3. Creer le `docker-compose.yml`
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mysql-leantime:
|
||||
image: mysql:8.4
|
||||
container_name: mysql-leantime
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
volumes:
|
||||
- leantime-db-data:/var/lib/mysql
|
||||
networks:
|
||||
- leantime-net
|
||||
|
||||
leantime:
|
||||
image: leantime/leantime:latest
|
||||
container_name: leantime
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mysql-leantime
|
||||
environment:
|
||||
LEAN_DB_HOST: ${LEAN_DB_HOST}
|
||||
LEAN_DB_USER: ${LEAN_DB_USER}
|
||||
LEAN_DB_PASSWORD: ${LEAN_DB_PASSWORD}
|
||||
LEAN_DB_DATABASE: ${LEAN_DB_DATABASE}
|
||||
LEAN_DB_PORT: ${LEAN_DB_PORT}
|
||||
LEAN_DEFAULT_TIMEZONE: ${LEAN_DEFAULT_TIMEZONE}
|
||||
ports:
|
||||
- "8380:80"
|
||||
networks:
|
||||
- leantime-net
|
||||
|
||||
volumes:
|
||||
leantime-db-data:
|
||||
|
||||
networks:
|
||||
leantime-net:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
**Notes :**
|
||||
- Port 8380 pour eviter les conflits avec DSM (port 80/443)
|
||||
- Volume nomme `leantime-db-data` (pas bind mount) pour eviter les problemes de permissions Synology
|
||||
- Reseau interne `leantime-net` pour isolation
|
||||
|
||||
### 4. Lancer Leantime
|
||||
|
||||
```bash
|
||||
# Premier lancement (initialisation de la base)
|
||||
docker compose up -d
|
||||
|
||||
# Attendre ~30s que MySQL s'initialise, puis verifier :
|
||||
docker logs mysql-leantime --tail 5
|
||||
docker logs leantime --tail 10
|
||||
```
|
||||
|
||||
### 5. Creer le compte admin
|
||||
|
||||
1. Ouvrir `http://192.168.1.25:8380`
|
||||
2. Suivre l'assistant de premier lancement
|
||||
3. Creer le compte admin
|
||||
|
||||
### 6. Generer la cle API
|
||||
|
||||
1. Se connecter en admin
|
||||
2. Aller dans **Company > API Keys**
|
||||
3. Creer une nouvelle cle
|
||||
4. Noter la cle (elle sera utilisee dans `.env` d'Effi)
|
||||
|
||||
### Problemes connus (XPenology)
|
||||
|
||||
#### Erreur "Access denied for user"
|
||||
- Verifier que `MYSQL_PASSWORD` et `LEAN_DB_PASSWORD` sont identiques
|
||||
- Si la base existe deja, verifier les credentials : `docker exec -it mysql-leantime mysql -u leantime -p`
|
||||
|
||||
#### Erreur "data directory has files"
|
||||
- Utiliser un volume nomme Docker (`leantime-db-data`) au lieu d'un bind mount
|
||||
- Les permissions Synology sont incompatibles avec les bind mounts MySQL
|
||||
|
||||
---
|
||||
|
||||
## Partie 2 : Integration MCP sur effi-server
|
||||
|
||||
### Prerequis
|
||||
|
||||
- effi-server (192.168.1.27) avec docker-compose Effi operationnel
|
||||
- Leantime operationnel sur `http://192.168.1.25:8380`
|
||||
- Cle API Leantime generee
|
||||
|
||||
### 1. Ajouter les variables d'environnement
|
||||
|
||||
Sur effi-server, editer `~/effi/.env` :
|
||||
|
||||
```bash
|
||||
# Leantime MCP
|
||||
LEANTIME_URL=http://192.168.1.25:8380
|
||||
LEANTIME_API_KEY=votre_cle_api_leantime_ici
|
||||
LEANTIME_USER_EMAIL=votre_email@example.com
|
||||
```
|
||||
|
||||
### 2. Construire l'image leantime-mcp
|
||||
|
||||
Le Dockerfile est dans `leantime-mcp/Dockerfile` :
|
||||
|
||||
```dockerfile
|
||||
FROM python:3.12-slim
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN git clone https://github.com/daniel-eder/leantime-mcp.git && \
|
||||
cd leantime-mcp && \
|
||||
pip install --no-cache-dir fastmcp && \
|
||||
pip install --no-cache-dir -e .
|
||||
|
||||
WORKDIR /app/leantime-mcp
|
||||
|
||||
EXPOSE 8079
|
||||
|
||||
CMD ["fastmcp", "run", "src/leantime_mcp/server.py:app", "--transport", "sse", "--port", "8079", "--host", "0.0.0.0"]
|
||||
```
|
||||
|
||||
**Note :** Le transport SSE est obligatoire car MCPO ne supporte pas StreamableHTTP.
|
||||
|
||||
### 3. Configurer MCPO
|
||||
|
||||
Le fichier `mcpo-config/config.json` (sur le serveur, gitignore) :
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"leantime": {
|
||||
"url": "http://leantime-mcp:8079/sse",
|
||||
"transport": "sse"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Lancer les conteneurs
|
||||
|
||||
```bash
|
||||
cd ~/effi
|
||||
|
||||
# Construire leantime-mcp
|
||||
docker compose build leantime-mcp
|
||||
|
||||
# Lancer tout
|
||||
docker compose up -d leantime-mcp mcpo
|
||||
|
||||
# Verifier les logs
|
||||
docker logs effi-leantime-mcp --tail 10
|
||||
docker logs mcpo --tail 15
|
||||
```
|
||||
|
||||
### 5. Verifier la connexion
|
||||
|
||||
```bash
|
||||
# Tester l'endpoint MCPO
|
||||
curl -s http://192.168.1.27:8000/v1/tools | jq '.[].name'
|
||||
|
||||
# Doit retourner les outils Leantime :
|
||||
# list_projects, create_project, list_tickets, etc.
|
||||
```
|
||||
|
||||
### 6. Tester dans Open WebUI
|
||||
|
||||
Dans un chat avec Effi, demander :
|
||||
- "Liste mes projets Leantime"
|
||||
- "Cree un projet blablabla"
|
||||
- "Quelles sont les taches du projet X ?"
|
||||
|
||||
---
|
||||
|
||||
## Problemes connus (MCP)
|
||||
|
||||
#### Erreur 400 Bad Request entre MCPO et leantime-mcp
|
||||
- **Cause** : Incompatibilite de protocole (SSE vs StreamableHTTP)
|
||||
- **Solution** : Verifier que leantime-mcp utilise `--transport sse` dans le Dockerfile et que MCPO pointe vers `/sse`
|
||||
|
||||
#### mcpo-patch.sh est un dossier au lieu d'un fichier
|
||||
- **Cause** : Conflit Docker quand le fichier n'existe pas encore
|
||||
- **Solution** : `docker compose down`, supprimer le dossier, recreer le fichier, puis `docker compose up -d`
|
||||
|
||||
#### Module leantime_mcp introuvable
|
||||
- **Cause** : Mauvais WORKDIR ou mauvais chemin dans CMD
|
||||
- **Solution** : Verifier que WORKDIR est `/app/leantime-mcp` et que le module s'installe avec `pip install -e .`
|
||||
|
||||
---
|
||||
|
||||
## Ports recapitulatifs
|
||||
|
||||
| Service | Hote | Port | Protocole |
|
||||
|---------|------|------|-----------|
|
||||
| Leantime Web UI | XPenology NAS | 8380 | HTTP |
|
||||
| Leantime MySQL | XPenology NAS | 3306 (interne) | MySQL |
|
||||
| leantime-mcp | effi-server | 8079 | SSE (MCP) |
|
||||
| MCPO | effi-server | 8000 | HTTP (OpenAI-compatible) |
|
||||
|
||||
---
|
||||
|
||||
## Reinstallation rapide
|
||||
|
||||
Si vous devez tout reinstaller :
|
||||
|
||||
```bash
|
||||
# Sur effi-server
|
||||
cd ~/effi
|
||||
|
||||
# Arreter les conteneurs concernes
|
||||
docker compose down leantime-mcp mcpo
|
||||
|
||||
# Reconstruire leantime-mcp
|
||||
docker compose build leantime-mcp --no-cache
|
||||
|
||||
# Relancer
|
||||
docker compose up -d leantime-mcp mcpo
|
||||
|
||||
# Verifier
|
||||
docker logs mcpo -f --tail 20
|
||||
```
|
||||
|
||||
```bash
|
||||
# Sur XPenology (si reinstalle completement)
|
||||
cd /volume1/docker/leantime
|
||||
|
||||
# ATTENTION : detruit les donnees
|
||||
docker compose down -v
|
||||
docker compose up -d
|
||||
```
|
||||
@@ -0,0 +1,16 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN git clone https://github.com/daniel-eder/leantime-mcp.git && \
|
||||
cd leantime-mcp && \
|
||||
pip install --no-cache-dir fastmcp && \
|
||||
pip install --no-cache-dir -e .
|
||||
|
||||
WORKDIR /app/leantime-mcp
|
||||
|
||||
EXPOSE 8079
|
||||
|
||||
CMD ["fastmcp", "run", "src/leantime_mcp/server.py:app", "--transport", "sse", "--port", "8079", "--host", "0.0.0.0"]
|
||||
Reference in New Issue
Block a user