# Token MCP & API

Lesstime expose un serveur **MCP** (Model Context Protocol) qui permet à un assistant IA (Claude, Cursor, etc.) de piloter ton instance Lesstime — créer des tâches, lire des projets, démarrer un timer, etc.

## Générer ton token

1. Va sur **Profil** (avatar → Profil)
2. Section **Token MCP** → **Générer un token**
3. **Copie le token immédiatement** — il ne sera plus affiché ensuite

> 🔐 **Sécurité** : Le token donne accès à toutes les actions de ton compte. Ne le partage jamais. Tu peux le régénérer à tout moment (l'ancien sera révoqué).

## Configurer Claude Code

Dans `.mcp.json` (à la racine de ton projet) :

```json
{
    "mcpServers": {
        "lesstime": {
            "type": "http",
            "url": "https://ton-instance-lesstime/_mcp",
            "headers": {
                "Authorization": "Bearer TON_TOKEN_ICI"
            }
        }
    }
}
```

Pour une instance locale :

```json
{
    "mcpServers": {
        "lesstime-local": {
            "command": "docker",
            "args": ["exec", "-i", "php-lesstime-fpm", "php", "bin/console", "mcp:server"]
        }
    }
}
```

## Tools disponibles (27 au total)

### Projets

- `list-projects`, `get-project`, `create-project`, `update-project`

### Tâches

- `list-tasks` (avec filtres : projet, assigné, statut, archived…)
- `get-task`, `create-task`, `update-task`, `delete-task`

### Métadonnées

- `list-statuses` (param **`projectId`** optionnel — sans : tous les statuts ; avec : statuts du workflow du projet)
- `list-priorities`, `list-efforts`, `list-tags`

### Workflows ⭐ Nouveau

- `list-workflows` — liste tous les workflows avec leurs statuts groupés
- `switch-project-workflow` (ROLE_ADMIN) — change le workflow d'un projet avec mapping

### Time tracking

- `list-time-entries`, `create-time-entry`, `update-time-entry`, `delete-time-entry`

### Récurrence

- `create-task-recurrence`, `update-task-recurrence`, `delete-task-recurrence`

### Groupes / Users / Clients

- `list-groups`, `create-group`, `update-group`
- `list-users`, `list-clients`

## Règles importantes

> ⚠️ **Statut hors workflow rejeté** : si tu appelles `create-task` ou `update-task` avec un `status` qui n'appartient pas au workflow du projet, l'appel est rejeté avec **422 Validation error**. Utilise `list-statuses(projectId)` pour découvrir les statuts valides du projet.

## Exemples de prompts

```
"Crée une tâche dans Lesstime sur le projet SIRH avec le titre
'Ajouter l'export PDF' et la priorité Haute, assignée à alice"
```

```
"Liste mes tâches en cours dans le projet CRM"
```

```
"Démarre un timer sur la tâche SIRH-12 avec le tag Backend"
```

L'agent appelle les bons tools tout seul si la description est claire.
