Sillon
Sillon
Lecture seule

Connecter une IA

Branche ton assistant IA sur tes fiches Sillon et pose-lui tes questions : ce qui a été décidé chez un client, ce qui reste ouvert, ce qu'il faut préparer avant un call. L'IA lit tes fiches — elle n'y écrit jamais. Le branchement se fait une fois, en quelques minutes, avec n'importe quel outil qui parle MCP : il lui faut juste une adresse et ton jeton.

Sous le capot, c'est le standard MCP (Model Context Protocol) — le branchement normalisé entre une IA et tes données. Tu n'as pas besoin d'en savoir plus pour suivre ce guide.

Ce que tu peux demander Ce qu'il te faut 1 · Ton jeton 2 · Ton outil Révoquer Dépannage Pour les développeurs

Ce que tu peux demander

Une fois branchée, ton IA ne répond plus de mémoire : elle va lire la fiche du client — la vraie, à jour — et cite sa source.

Quelques questions qui marchent bien :

Ce qu'il te faut

Étape 1 · Ton jeton

Le jeton est une clé qui prouve à ton outil qu'il a le droit de lire tes fiches — les tiennes, pas celles d'un autre. Dans l'app : Réglages → Connecter une IA. Donne un nom à l'outil (ex. « Claude ») puis Générer.

À noter — le jeton n'est affiché qu'une seule fois, à la création. Si tu le perds, tu n'en récupères pas la valeur : génère-en simplement un nouveau.

L'amener sur ton ordinateur

Le jeton naît sur ton iPhone, mais c'est sur ton ordinateur qu'on le colle. Pas question de le recopier à la main : dans l'app, touche « Envoyer vers mon ordinateur » — AirDrop l'envoie sur ton Mac en un geste, ou passe par Messages / Notes vers toi-même. Sur l'ordinateur, garde-le sous la main pour l'étape 2.

Étape 2 · Ton outil

Quel que soit ton outil, il lui faut deux choses : cette adresse, et le jeton de l'étape 1.

https://api.sillon.eu/mcp

Tout outil qui parle MCP se branche avec ça — soit via son écran de connecteurs (aucun terminal), soit en collant le jeton dans un en-tête Authorization: Bearer (une commande ou un fichier de configuration). Les outils ci-dessous sont des exemples équivalents : la seule différence entre eux, c'est l'effort demandé.

Claude (site ou app) Sans terminal

  1. Sur ton ordinateur, ouvre Claude — claude.ai ou l'app — puis Paramètres → Connecteurs → Ajouter un connecteur personnalisé.
  2. Colle cette adresse dans le champ URL :
    https://api.sillon.eu/mcp
  3. Ouvre Advanced settings et écris claude dans le champ OAuth Client ID (pas de secret à renseigner).
  4. Clique Connecter : Claude ouvre une page Sillon qui te demande ton jeton.
  5. Colle le jeton de l'étape 1 (celui envoyé sur ton ordinateur) et valide. C'est branché.
⚠️ L'oubli n°1 — sans claude dans le champ OAuth Client ID, Claude refuse d'ajouter le connecteur. Si l'ajout échoue, commence par vérifier ce champ.

Dans l'app, le connecteur apparaît ensuite dans tes jetons actifs sous le nom oauth:claude — et se révoque comme les autres.

ChatGPT Sans terminal

Même logique de connecteur que Claude : le branchement passe par les réglages de connecteurs de ChatGPT.

  1. Dans ChatGPT, ajoute un connecteur avec l'adresse https://api.sillon.eu/mcp.
  2. Si un client ID t'est demandé, écris chatgpt (pas de secret).
  3. Au moment de connecter, ChatGPT ouvre une page Sillon : colle le jeton de l'étape 1 et valide. C'est branché.

Les écrans exacts dépendent de la version de ChatGPT, mais la règle ne change pas : l'adresse + ton jeton. Dans l'app, le connecteur apparaît sous le nom oauth:chatgpt — et se révoque comme les autres.

Claude Code Demande un terminal

Une seule commande, en remplaçant <TON_JETON> par ton jeton :

claude mcp add --transport http sillon https://api.sillon.eu/mcp \
  --header "Authorization: Bearer <TON_JETON>"

Pour vérifier : claude mcp list. Pour retirer : claude mcp remove sillon.

Cursor Demande d'éditer un fichier

Dans le fichier ~/.cursor/mcp.json (crée-le s'il n'existe pas), en remplaçant <TON_JETON> :

{
  "mcpServers": {
    "sillon": {
      "url": "https://api.sillon.eu/mcp",
      "headers": {
        "Authorization": "Bearer <TON_JETON>"
      }
    }
  }
}

Claude Desktop Demande d'éditer un fichier

L'app de bureau Claude ne sait pas parler directement à un serveur distant : le petit outil mcp-remote fait le pont. Sur Mac, le fichier vit dans ~/Library/Application Support/Claude/claude_desktop_config.json :

{
  "mcpServers": {
    "sillon": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://api.sillon.eu/mcp",
        "--header", "Authorization: Bearer <TON_JETON>"
      ]
    }
  }
}
Un autre outil ? — Windsurf, Zed, VS Code, Le Chat, Continue… tout outil qui parle MCP se branche avec la recette du haut de cette section : l'adresse https://api.sillon.eu/mcp et ton jeton dans l'en-tête Authorization: Bearer. L'endroit exact où les coller est indiqué dans la documentation MCP de ton outil.

Révoquer l'accès

Dans Réglages → Connecter une IA, l'app liste tes jetons actifs (nom, date de création, dernière utilisation — jamais la valeur). Glisse sur un jeton pour le révoquer : l'outil concerné perd l'accès immédiatement. Un connecteur (Claude, ChatGPT) apparaît sous le nom oauth:claude ou oauth:chatgpt et se révoque de la même façon.

Dépannage

« Mon outil ne voit pas Sillon »

Vérifie l'adresse — exactement https://api.sillon.eu/mcp — et le jeton, collé en entier, sans espace avant ni après. Dans le doute, régénère un jeton dans l'app et recolle-le : c'est plus rapide que de chercher la faute de frappe.

« Mon outil refuse d'ajouter le connecteur »

C'est presque toujours le champ client ID resté vide : écris claude dans Claude (Advanced settings), chatgpt dans ChatGPT, puis réessaie. Tout autre client ID est refusé.

« Ça marchait, ça ne marche plus »

Le jeton a probablement été révoqué. Regarde dans Réglages → Connecter une IA : s'il n'est plus dans la liste, génère-en un nouveau et remplace-le dans ton outil (pour un connecteur Claude ou ChatGPT : supprime le connecteur et refais l'étape 2).

Pour les développeurs

Endpoint & transport

https://api.sillon.eu/mcp

Transport : Streamable HTTP (JSON-RPC 2.0 sur POST, sans SSE). Versions de protocole MCP supportées : 2025-11-25, 2025-06-18 et 2025-03-26. Un GET/DELETE sur l'endpoint renvoie 405 — c'est attendu, le serveur n'ouvre jamais de flux.

Authentification

Un seul type de credential : le token MCP créé dans l'app. Deux façons de le présenter :

  • Bearer statique (Claude Code, Cursor, Claude Desktop — et tout client capable de poser un en-tête HTTP) — en-tête Authorization: Bearer <TON_JETON>, comme dans les configs ci-dessus.
  • OAuth (connecteurs claude.ai / app Claude, ChatGPT) — le serveur expose un AS OAuth minimal au-dessus des tokens MCP : découverte via /.well-known/oauth-authorization-server, puis /authorize + /token. PKCE S256 obligatoire (plain refusé), clients statiques — pas de DCR, d'où le client_id à renseigner à la main (claude ou chatgpt ; tout autre est refusé). La page de consentement demande de coller un token MCP existant (preuve de compte) ; l'échange /token émet un token MCP ordinaire, nommé oauth:<client>, listé et révocable dans l'app comme les autres. Le 401 de /mcp pointe resource_metadata (RFC 9728) pour une découverte propre.

Les outils exposés

Cinq outils de lecture — list_subjects, search_subjects, get_subject, get_figure, verify_citations — plus la file de questions (list_gaps, flag_gap, bump) : le seul endroit où une IA écrit, à côté du vault, jamais dedans. Le flux typique : lister ou chercher, puis lire le brief complet d'un sujet — et n'ouvrir une figure que si la question tient au visuel.

OutilCe qu'il fait
list_subjectsListe tes sujets (fils de travail), du plus récent au plus ancien. Filtres optionnels : status (active / dormant / closed), area, tag, query. À appeler en premier pour découvrir ce qui existe.
search_subjectsRecherche par mot-clé dans tout le contenu : titre, tags, area, objectif, sections (titres compris), légendes des figures et log daté. Insensible aux accents et à la casse (« etapes » trouve « étapes », et l'inverse), mots-outils FR/EN ignorés avec repli pour les requêtes courtes, tokens en OU (pas de phrases) ; score déterministe (titre et tags pèsent plus), tri par pertinence puis récence ; tous les statuts sont cherchés, dormants et clos compris ; renvoie des extraits par champ. Args : query (requis, ≤ 1 000 car.), limit (1–50).
get_subjectBrief complet par slug exact : objectif, points ouverts, prochaines actions, décisions, log daté, trajectoire (évolution via git), sujets liés — et la liste des figures du sujet (captures d'écran validées : section, ligne d'ancrage, légende, timecode). Args : slug (requis), trajectory_limit, include_related.
get_figureRécupère une figure (capture d'écran validée par l'utilisateur) par sa clé file exacte, issue de la liste figures de get_subject. Renvoie ses métadonnées (section, ligne d'ancrage, légende, timecode) puis l'image. La légende et le texte de la fiche font autorité pour les identifiants et les chiffres — l'image sert au layout et à l'état visuel. Args : slug, file (requis).
verify_citationsVérifie chaque citation [fiche §section · date] d'un livrable contre les fiches courantes : la fiche existe, la section existe, et une ligne de cette section porte bien cette date.

Sécurité

  • Lecture seule absolue — aucun outil n'écrit dans ton vault. Le vault reste la source de vérité.
  • Token haché — le serveur ne stocke que le SHA-256 du token, jamais sa valeur en clair.
  • Isolé par utilisateur — un token ne voit que ton vault ; il ne marche pas sur les routes de l'app, et un token de session de l'app ne marche pas sur l'endpoint MCP.
  • Révocation instantanée — dès la révocation, l'accès est coupé au prochain appel.
  • OAuth durci — redirect URIs à correspondance exacte (anti open-redirect), code d'autorisation single-use (TTL 10 min, stocké haché), /authorize et /token rate-limités par IP.
  • L'en-tête Authorization n'est jamais journalisé.

Dépannage par code HTTP

  • 401 Unauthorized — token erroné ou révoqué : vérifie l'en-tête Authorization: Bearer …, ou régénère un token dans l'app.
  • 405 sur GET/DELETE — normal : le serveur ne parle qu'en POST, le client MCP doit faire du POST.
  • 400 version de protocole — version MCP non supportée ; le client renégocie via initialize.
  • Sujet introuvable — passe le slug exact renvoyé par list_subjects/search_subjects ; un slug inconnu renvoie une erreur propre, jamais un plantage.