Serveur MCP (assistants IA)
Le serveur MCP de sol2flow permet aux assistants IA de travailler avec vos tableaux et vos tâches : « qu’est-ce que j’ai à faire aujourd’hui ? », « crée une tâche pour le bug de connexion et assigne-la à Ben », « déplace PRD-12 dans Terminé et enregistre 1 h 30 ». Il parle le Model Context Protocol, que comprennent Claude Desktop, Claude Code, Cursor, VS Code et bien d’autres assistants.
Le serveur utilise l’API REST avec votre clé d’API personnelle. L’assistant peut donc faire exactement ce que vous pouvez faire dans l’application, rien de plus : vos rôles, l’accès de la clé (Accès complet ou Lecture seule), le forfait de votre organisation et l’interrupteur API REST de l’espace s’appliquent exactement comme pour l’API.
Ce qu’il vous faut
- Une clé d’API : menu du compte (en bas à gauche) → Clés d’API → Créer une clé d’API (Clés d’API). Choisissez Accès complet si l’assistant doit modifier des choses, Lecture seule s’il doit seulement consulter. La clé n’est affichée qu’une fois : copiez-la.
- L’API REST doit être disponible : sur sol2flow cloud, le forfait de votre organisation l’inclut ; sur votre propre instance, un administrateur a activé Autoriser les clés d’API (Paramètres de l’instance) ; et l’espace a API REST activé (Paramètres → Espace de travail → Accès et intégrations, Espaces de travail).
- L’un de ces choix :
- sol2flow cloud : rien d’autre. Utilisez le serveur hébergé
https://mcp.sol2flow.com/mcp. - Sur votre ordinateur : Node.js 22 ou plus récent. Votre assistant démarre le serveur avec
npx -y @sol2flow/mcp; cela fonctionne pour sol2flow cloud et pour votre propre instance. - Votre propre instance : le serveur en conteneur Docker à côté de sol2flow (Auto-hébergement).
- sol2flow cloud : rien d’autre. Utilisez le serveur hébergé
Connecter votre assistant
Remplacez sf_… par votre clé. Pour votre propre instance, ajoutez SOL2FLOW_URL avec son adresse (par exemple
https://flow.example.com) ; sans elle, le serveur utilise sol2flow cloud.
Claude Code
# le serveur hébergé (sol2flow cloud)
claude mcp add --transport http sol2flow https://mcp.sol2flow.com/mcp --header "Authorization: Bearer sf_…"
# ou sur votre ordinateur, pour toute instance
claude mcp add sol2flow --env SOL2FLOW_URL=https://flow.example.com --env SOL2FLOW_API_KEY=sf_… -- npx -y @sol2flow/mcp
Claude Desktop
Settings → Developer → Edit Config ouvre claude_desktop_config.json. Ajoutez :
{
"mcpServers": {
"sol2flow": {
"command": "npx",
"args": ["-y", "@sol2flow/mcp"],
"env": { "SOL2FLOW_URL": "https://app.sol2flow.com", "SOL2FLOW_API_KEY": "sf_…" }
}
}
}
Redémarrez Claude Desktop. Les outils de sol2flow apparaissent dans le menu des outils d’une nouvelle conversation.
Cursor
Dans ~/.cursor/mcp.json (tous les projets) ou .cursor/mcp.json (un projet), soit la même entrée mcpServers que
pour Claude Desktop, soit le serveur hébergé :
{
"mcpServers": {
"sol2flow": { "url": "https://mcp.sol2flow.com/mcp", "headers": { "Authorization": "Bearer sf_…" } }
}
}
VS Code
Dans .vscode/mcp.json (ou MCP: Open User Configuration pour tous les espaces de travail). VS Code demande la clé une
fois et la garde dans son stockage de secrets, elle n’est donc pas écrite dans le fichier :
{
"inputs": [{ "type": "promptString", "id": "sol2flow-key", "description": "sol2flow API key", "password": true }],
"servers": {
"sol2flow": {
"type": "http",
"url": "https://mcp.sol2flow.com/mcp",
"headers": { "Authorization": "Bearer ${input:sol2flow-key}" }
}
}
}
Sur votre ordinateur à la place : "type": "stdio", "command": "npx", "args": ["-y", "@sol2flow/mcp"], "env": { "SOL2FLOW_URL": "https://flow.example.com", "SOL2FLOW_API_KEY": "${input:sol2flow-key}" }.
Autres assistants
Tout client MCP fonctionne : soit il démarre npx -y @sol2flow/mcp avec les variables d’environnement
SOL2FLOW_API_KEY (et SOL2FLOW_URL), soit il se connecte à un serveur HTTP (https://mcp.sol2flow.com/mcp ou le
vôtre) avec l’en-tête Authorization: Bearer sf_….
Les connecteurs de Claude.ai et ChatGPT (dans le navigateur) se connectent avec OAuth plutôt qu’avec une clé. Cela arrivera dans une version ultérieure ; d’ici là, utilisez l’un des assistants ci-dessus.
Auto-hébergement
Avec votre propre sol2flow, vous pouvez faire tourner le serveur HTTP à côté, pour que chacun sur votre instance se
connecte à une seule adresse avec sa propre clé. L’image est ghcr.io/sol2flow/mcp (amd64 et arm64). Par exemple dans le
fichier Docker Compose qui fait tourner sol2flow (dont le service s’appelle app) :
services:
mcp:
image: ghcr.io/sol2flow/mcp:latest
restart: unless-stopped
read_only: true
environment:
SOL2FLOW_URL: http://app:3000 # sol2flow tel que ce conteneur le joint
ALLOWED_HOSTS: mcp.example.com # le nom d’hôte auquel on se connecte
TRUST_PROXY_HOPS: '1' # un reverse proxy devant
FORWARD_CLIENT_IP: 'true'
ports: ['127.0.0.1:3005:3000']
Placez-le derrière votre reverse proxy en HTTPS (comme sol2flow lui-même, voir Reverse proxy) ;
chacun utilise alors https://mcp.example.com/mcp.
| Paramètre | Par défaut | Ce qu’il fait |
|---|---|---|
SOL2FLOW_URL | https://app.sol2flow.com | Votre sol2flow. Fixé par vous : personne ne peut diriger le serveur ailleurs |
ALLOWED_HOSTS | — | Les noms d’hôte (ou hôte:port) auxquels le serveur répond, séparés par des virgules. Définissez-les : ils protègent contre le DNS rebinding |
ALLOWED_ORIGINS | localhost uniquement | Assistants dans le navigateur : les origines autorisées à appeler le serveur (* pour toutes). Les assistants de bureau et en ligne de commande n’en ont pas besoin |
TRUST_PROXY_HOPS | 0 | Le nombre de proxys devant, pour trouver l’adresse IP de la personne dans X-Forwarded-For |
FORWARD_CLIENT_IP | false | Transmettre cette adresse IP à sol2flow, pour que ses limites et « Dernière utilisation depuis » voient la personne, pas le serveur |
SOL2FLOW_WORKSPACE | — | Un espace par défaut (son slug) |
READ_ONLY | false | Masquer tous les outils qui modifient quelque chose |
LOG_LEVEL | info | debug ajoute une ligne par requête à l’API |
LOG_FILE | — | Écrire aussi le journal dans des fichiers quotidiens à côté de ce chemin (p. ex. /data/logs/mcp.log ; monter /data/logs en écriture pour l’utilisateur 1001) |
SENTRY_DSN | — | Suivi des erreurs (Sentry, Bugsink ou GlitchTip) ; ou SENTRY_DSN_FILE |
Le conteneur tourne en tant qu’utilisateur 1001, fonctionne avec un système de fichiers en lecture seule, répond à
GET /healthz et a un contrôle de santé. Il ne garde aucune donnée : vous pouvez en faire tourner plusieurs, le
redémarrer ou le remplacer à tout moment.
Ce que l’assistant peut faire
| Outil | Ce qu’il fait |
|---|---|
whoami | Votre compte, la clé, la version de sol2flow et vos espaces |
list_workspaces, list_boards, get_board | Espaces, tableaux, et un tableau avec ses listes et ses tâches |
search | Tableaux et tâches par nom, clé (PRD-12) ou texte, comme la recherche de l’application |
list_tasks | Tâches par tableau, liste, responsable, étiquette, texte, échéance ou dernière modification |
get_task | Une tâche avec sa description, sa checklist, ses liens et ses derniers commentaires |
list_labels, list_people | Étiquettes et membres de l’espace |
list_time_entries, get_timer | Temps enregistré et votre minuteur en cours |
list_notifications, list_my_invitations | Vos notifications et invitations en attente |
create_task, update_task, move_task | Créer, modifier (champs, étiquettes, responsables, liste) et déplacer des tâches, aussi vers un autre tableau |
archive_task, unarchive_task | Archiver une tâche et la restaurer |
add_comment, add_checklist_items, update_checklist_item | Commentaires et checklists |
link_tasks, unlink_tasks | Bloque, est bloquée par, est liée à, duplique |
log_time, start_timer, stop_timer, update_time_entry | Suivi du temps |
mark_notifications_read, respond_to_invitation | Notifications et invitations |
create_board, create_list, create_label | Tableaux, listes et étiquettes |
Aucun outil ne supprime quoi que ce soit : archiver est la voie sûre, et elle se défait. Le partage, les membres, les webhooks, les imports et les pièces jointes restent dans l’application.
Deux prompts prêts à l’emploi sont inclus, que beaucoup d’assistants affichent comme commandes : plan_my_day (un plan de la journée à partir de vos tâches, échéances et notifications) et board_standup (ce qui a bougé sur un tableau, ce qui est en cours, bloqué ou en retard).
Désigner les choses : vous et l’assistant pouvez utiliser ce que vous voyez dans l’application. Les tâches par leur
clé (PRD-12, y compris l’ancienne clé d’une tâche déplacée vers un autre tableau) ou leur lien ; les tableaux par clé
ou par nom ; les listes et les étiquettes par nom ; les personnes comme « me », par nom d’utilisateur ou par nom. Les
descriptions et les commentaires sont en Markdown dans les deux sens.
L’espace par défaut : si vous êtes dans un seul espace, l’assistant utilise toujours celui-là. Avec plusieurs, il
les parcourt tous pour une clé de tâche et sinon demande lequel ; ou définissez un espace par défaut avec
SOL2FLOW_WORKSPACE (sur votre ordinateur) ou ?workspace=<slug> à la fin de l’adresse HTTP
(https://mcp.sol2flow.com/mcp?workspace=acme).
Mode lecture seule
Pour qu’un assistant se contente de consulter, utilisez une clé Lecture seule : chaque modification est refusée avec
un message clair. À partir de sol2flow 1.8, un serveur sur votre ordinateur reconnaît aussi la clé en lecture seule et
masque les outils qui modifient quelque chose, pour que l’assistant n’essaie même pas. Vous pouvez les masquer vous-même
pour n’importe quelle clé : READ_ONLY=true (sur votre ordinateur) ou ?read_only=1 à la fin de l’adresse HTTP.
Limites de l’API
Chaque appel d’outil correspond à une ou plusieurs requêtes à l’API, qui comptent comme toute autre utilisation de
l’API : 600 requêtes par 10 minutes par clé, dont au plus 120 modifications, et sur sol2flow cloud les requêtes
quotidiennes à l’API de votre forfait. La plupart des
outils prennent une requête ; get_task en prend trois (la tâche, ses liens et ses commentaires), get_board deux à
quatre, create_task et update_task quelques-unes de plus pour retrouver listes, étiquettes et personnes. Retrouver une
clé de tâche ou un nom de tableau coûte une recherche la première fois ; le résultat est gardé 10 minutes. Quand une
limite est atteinte, l’assistant apprend combien de temps attendre.
Dépannage
L’assistant reçoit un message exploitable et vous dit en général ce qui ne va pas. Les plus courants (les messages sont en anglais) :
| Le message dit | Que faire |
|---|---|
| « sol2flow refused the API key » | La clé est fausse, expirée ou révoquée. Créez-en une nouvelle et mettez-la à jour dans votre assistant |
| « No sol2flow API key is configured » | Définissez SOL2FLOW_API_KEY, ou l’en-tête Authorization: Bearer pour le serveur HTTP |
| « API keys are switched off on this sol2flow instance » | Un administrateur a désactivé Autoriser les clés d’API (Paramètres de l’instance) |
| « API access is switched off for this workspace » | Un administrateur de l’espace active API REST sous Accès et intégrations |
| « The organization's plan doesn't include the REST API » | Un propriétaire ou administrateur de l’organisation passe à un forfait supérieur |
| « The organization's workspaces are read-only » | L’abonnement est impayé ou terminé ; la lecture fonctionne toujours |
| « This API key is read-only » | Utilisez une clé avec Accès complet, ou gardez-la en lecture seule volontairement |
| « You don't have permission for this » | Votre rôle ne le permet pas, p. ex. les lecteurs et les invités ne peuvent pas modifier |
| « Not found, or you don't have access to it » | Vérifiez la clé ou le nom ; sol2flow ne dit jamais si quelque chose existe quand vous ne pouvez pas l’ouvrir |
| « The task is archived and read-only » | Restaurez-la d’abord (l’assistant le peut, avec unarchive_task) |
| « sol2flow's rate limit is reached » / « API requests per day » | Attendez le temps indiqué |
| « may or may not have been applied » | Une modification n’a pas reçu de réponse à temps. Vérifiez la tâche avant de redemander : les modifications ne sont jamais répétées automatiquement |
| « This sol2flow instance … is too old » | L’instance a besoin d’une mise à jour pour cet outil |
| Les outils n’apparaissent pas | Redémarrez l’assistant après avoir changé sa configuration ; vérifiez que npx (Node.js 22+) est installé |
Confidentialité
- Le serveur MCP ne stocke rien : ni clés, ni tâches, ni contenu. Chaque requête au serveur hébergé apporte sa propre clé et est oubliée une fois la réponse envoyée.
- Son journal contient le nom de l’outil, le résultat, la durée, l’adresse IP d’où vient la requête (serveur HTTP) et les 8 premiers caractères de la clé (la partie publique affichée dans la liste des clés d’API) — jamais la clé, ce que l’assistant a demandé ni ce que sol2flow a répondu.
- Ce que l’assistant envoie à son fournisseur d’IA ne regarde que vous et ce fournisseur : le serveur MCP ne fait que répondre aux questions de l’assistant, avec ce que votre clé peut voir. Utilisez une clé Lecture seule, ou limitez ce que vous demandez, si cela compte pour un espace.