Aller au contenu principal

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).

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ètrePar défautCe qu’il fait
SOL2FLOW_URLhttps://app.sol2flow.comVotre 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_ORIGINSlocalhost uniquementAssistants 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_HOPS0Le nombre de proxys devant, pour trouver l’adresse IP de la personne dans X-Forwarded-For
FORWARD_CLIENT_IPfalseTransmettre 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_ONLYfalseMasquer tous les outils qui modifient quelque chose
LOG_LEVELinfodebug 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​

OutilCe qu’il fait
whoamiVotre compte, la clé, la version de sol2flow et vos espaces
list_workspaces, list_boards, get_boardEspaces, tableaux, et un tableau avec ses listes et ses tâches
searchTableaux et tâches par nom, clé (PRD-12) ou texte, comme la recherche de l’application
list_tasksTâches par tableau, liste, responsable, étiquette, texte, échéance ou dernière modification
get_taskUne 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_timerTemps enregistré et votre minuteur en cours
list_notifications, list_my_invitationsVos notifications et invitations en attente
create_task, update_task, move_taskCréer, modifier (champs, étiquettes, responsables, liste) et déplacer des tâches, aussi vers un autre tableau
archive_task, unarchive_taskArchiver une tâche et la restaurer
add_comment, add_checklist_items, update_checklist_itemCommentaires et checklists
link_tasks, unlink_tasksBloque, est bloquée par, est liée à, duplique
log_time, start_timer, stop_timer, update_time_entrySuivi du temps
mark_notifications_read, respond_to_invitationNotifications et invitations
create_board, create_list, create_labelTableaux, 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 ditQue 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 pasRedé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.