🔌 Utiliser le bloc MCP dans Celestory

🔌 Utiliser le bloc MCP dans Celestory


Le bloc MCP de Celestory permet à vos histoires d'appeler les outils de n'importe quel serveur MCP (Model Context Protocol) : lire et écrire des données, interroger un service externe, déclencher des actions
 Une seule configuration (une URL) suffit pour découvrir automatiquement tous les outils disponibles d'un serveur, avec leurs arguments typés.


⚠ Baserow, Airtable, Zapier et Make (Integromat) ont dĂ©jĂ  leur propre bloc dĂ©diĂ© dans Celestory, plus simple Ă  configurer. N'utilisez le bloc MCP gĂ©nĂ©rique que pour un service qui n'a pas de bloc natif.



1. đŸ€– C'est quoi MCP ?


MCP (Model Context Protocol) est un standard ouvert qui permet à une application de découvrir et d'appeler les « outils » d'un service externe, de façon uniforme.


  • Un serveur MCP expose des outils : par exemple list_rows (lister des lignes), send_message (envoyer un message)

  • Un client MCP appelle ces outils : c'est le rĂŽle du bloc MCP de Celestory.



2. ⚠ Les deux conditions pour qu'un service fonctionne


Votre histoire s'exĂ©cute dans le navigateur (Ă©diteur ou histoire publiĂ©e). Deux conditions doivent ĂȘtre remplies pour qu'un serveur MCP soit joignable depuis le bloc — si l'une des deux manque, ça ne marchera pas, quoi que vous fassiez cĂŽtĂ© Celestory :


Condition 1 : le serveur autorise votre domaine (CORS)


Le navigateur bloque par dĂ©faut tout appel vers un autre domaine. Le serveur MCP doit explicitement l'autoriser via des en-tĂȘtes CORS (Access-Control-Allow-Origin). C'est une dĂ©cision qui appartient Ă  l'Ă©diteur du service, pas Ă  Celestory. Si vous hĂ©berge vous-mĂȘme le serveur (auto-hĂ©bergĂ©), c'est vous qui contrĂŽlez cette configuration.


Condition 2 : une authentification par jeton statique (pas d'OAuth)


Le bloc MCP de Celestory sait faire deux choses : coller une URL, coller des headers statiques (un objet JSON, ex. {"Authorization": "Bearer 
"}). Il ne sait pas dĂ©rouler un flow OAuth (popup de connexion, consentement, Ă©change et rafraĂźchissement de token). Beaucoup de grands Ă©diteurs poussent aujourd'hui leur MCP vers l'OAuth exclusivement — mĂȘme quand leur CORS est ouvert, la connexion depuis Celestory reste bloquĂ©e si l'authentification exige OAuth.


Retenez ceci : CORS ouvert ne veut pas dire que ça marchera. Il faut les deux conditions à la fois.



3. ✅ Services compatibles avec le bloc MCP


Focus gestion de projet : au-delà de la démo, voici comment chaque service s'intÚgre concrÚtement dans le pilotage d'un projet.


Service

Authentification

Outils (exemples)

Cas d'usage en gestion de projet

Jira

Authorization: Basic <email:jeton API>

searchJiraIssuesUsingJql, createJiraIssue, getJiraIssue

Faire remonter dans l'histoire l'avancement réel d'un sprint (issues ouvertes/fermées par JQL), ou transformer un retour utilisateur en ticket Jira assigné à la bonne équipe, sans quitter Celestory

Linear

Authorization: Bearer <clé API personnelle>

create_issue, list_issues

MĂȘme logique que Jira cĂŽtĂ© Linear : convertir un feedback recueilli en cours de projet en ticket priorisĂ©, ou afficher l'Ă©tat d'avancement d'une Ă©quipe

GitHub

Authorization: Bearer <jeton d'accĂšs personnel>

list_issues, create_pull_request, search_repositories

Suivre l'avancement technique d'un projet (issues, PRs en attente de revue) directement dans un tableau de bord narratif, ou déclencher une issue de bug depuis un formulaire de test

Cloudflare

Authorization: Bearer <jeton API>

search, execute (accĂšs Ă  l'ensemble de l'API Cloudflare)

Automatiser une étape de clÎture de jalon (purge de cache, vérification d'un déploiement) à la fin d'une phase de mise en production

Intercom

Authorization: Bearer <jeton d'accĂšs>

search_conversations, list_articles

Faire remonter dans le suivi de projet les retours clients liés à une fonctionnalité en cours de développement, pour prioriser le backlog

Klaviyo

Authorization: Bearer <clé API privée>

get_campaigns, get_metrics, get_profiles

Suivre l'avancement et la performance d'une campagne dans le cadre d'un projet marketing, directement depuis le pilotage du projet

Chargebee

Authorization: Bearer <clé API>

retrieve_subscription, list_invoices, retrieve_customer

Conditionner le déblocage d'un jalon de projet client au statut de facturation


Auto-hĂ©bergĂ© : votre propre serveur MCP fonctionne aussi — vous contrĂŽlez le reverse proxy, donc vous pouvez toujours activer CORS et choisir une authentification par jeton (voir section 6).


La plupart des autres services connus nécessitent un serveur


Figma, Notion, Slack, Stripe, PayPal, Salesforce, HubSpot, Webflow, ClickUp, Jotform, Attio, Netlify
 n'acceptent qu'une connexion OAuth (popup de connexion, consentement, refresh de token) que le bloc MCP ne sait pas dérouler dans le navigateur.


Pour ces services, utilisez plutĂŽt le bloc Voltask Webhook. Voltask exĂ©cute l'intĂ©gration cĂŽtĂ© serveur : il n'est pas soumis aux contraintes du navigateur (CORS, OAuth). Configurez la connexion au service tiers directement dans Voltask, puis dĂ©clenchez-la depuis Celestory via un simple webhook — voir le tutoriel Voltask Webhook.



4. ⚙ Configurer le bloc MCP dans Celestory


  1. Dans le graphe, ajoutez le bloc MCP (catégorie Chatbot).
  2. Cliquez sur le point config du bloc et créez une ressource McpConfig.
  3. Dans le champ URL, collez l'URL du serveur MCP. Le champ s'agrandit automatiquement pour afficher les URLs longues en entier.
  4. Dans le champ Headers (JSON), ajoutez l'authentification requise, par exemple {"Authorization": "Bearer VOTRE_JETON"}.
  5. La liste des outils se charge automatiquement si la configuration est correcte. Celestory détecte tout seul le type de transport du serveur (Streamable HTTP moderne ou SSE legacy) : aucun réglage à faire de ce cÎté.
  6. Choisissez un outil : le bloc crée alors une entrée typée par argument de l'outil (survolez le sélecteur pour lire un nom d'outil long en entier).


Le bloc possĂšde aussi ces sorties :


  • out (Flux) : la suite de l'histoire si l'appel rĂ©ussit.
  • catch (Flux) : la suite si l'appel Ă©choue.
  • result (Objet) : la rĂ©ponse de l'outil. Si le serveur dĂ©clare un schĂ©ma de sortie, une sortie typĂ©e apparaĂźt en plus pour chaque champ du rĂ©sultat.
  • error (Texte) : le message d'erreur en cas d'Ă©chec (pratique pour l'afficher ou le journaliser).



5. 💡 Exemple : lister ses issues GitHub


Scénario : afficher dans l'histoire le nombre d'issues ouvertes d'un dépÎt.


  1. CrĂ©ez un jeton d'accĂšs personnel (PAT) sur GitHub (Settings → Developer settings → Personal access tokens), avec le scope repo en lecture.
  2. Configurez le bloc MCP : URL https://api.githubcopilot.com/mcp/, headers {"Authorization": "Bearer VOTRE_PAT"}.
  3. Choisissez l'outil list_issues (ou équivalent selon la version exposée), renseignez owner et repo sur les entrées générées.
  4. Reliez out vers un écran qui affiche le contenu de result, et catch vers un écran qui affiche error.
  5. Testez : la liste des issues s'affiche. 🎉


Le principe est identique pour n'importe quel autre serveur MCP qui accepte un jeton statique (Chargebee, votre propre serveur MCP, etc.) : seuls l'URL et le nom des outils changent.



6. đŸ›Ąïž CORS sur votre propre serveur MCP (auto-hĂ©bergĂ©)


Si vous dĂ©veloppez ou hĂ©bergez vous-mĂȘme un serveur MCP (n8n, NocoDB, ou un serveur maison), ajoutez ces en-tĂȘtes sur votre reverse proxy (nginx, openresty
) pour la route de votre serveur MCP :


location /votre-route-mcp/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin "https://creator.celestory.io" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
add_header Access-Control-Allow-Headers "content-type, accept, authorization" always;
add_header Access-Control-Max-Age 86400 always;
return 204;
}
add_header Access-Control-Allow-Origin "https://creator.celestory.io" always;

proxy_pass http://votre-backend-mcp;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off; # indispensable si votre serveur MCP utilise un flux SSE
proxy_cache off;
proxy_read_timeout 24h;
}


Remplacez l'origine par le(s) domaine(s) oĂč votre histoire s'exĂ©cute (Ă©diteur et domaine de publication). Access-Control-Allow-Origin n'accepte qu'une seule valeur : pour autoriser plusieurs domaines, faites reflĂ©ter dynamiquement l'origine par votre proxy (map nginx sur $http_origin).



7. 🚑 DĂ©pannage


  • « MCP server unreachable (network error, or the MCP server does not allow this origin via CORS) » → CORS fermĂ© (condition 1) ou rĂ©seau : relisez la section 2.
  • « MCP legacy SSE: opening the stream failed (HTTP 401/403) » ou une erreur d'appel d'outil qui parle d'authentification → jeton invalide, expirĂ©, ou le serveur exige OAuth (condition 2) : relisez la section 2 et le tableau de la section 3.
  • « MCP legacy SSE: opening the stream failed (HTTP 404) » → l'URL est fausse.
  • « MCP legacy SSE: no endpoint event received from the server » → l'URL ne pointe pas vers un flux SSE MCP, ou un proxy intermĂ©diaire met le flux en cache (dĂ©sactivez le buffering).
  • « MCP initialize failed » → le serveur a rĂ©pondu, mais ce n'est pas un serveur MCP valide.
  • Un outil renvoie une erreur (sortie error du bloc) → le message vient du serveur MCP lui-mĂȘme : vĂ©rifiez les arguments fournis.



8. 🔐 Bonnes pratiques


  • Un jeton d'API n'est jamais qu'un mot de passe : ne le partagez jamais (documentation, captures d'Ă©cran, e-mails
).
  • Comme votre histoire s'exĂ©cute dans le navigateur des joueurs, prĂ©fĂ©rez des jetons Ă  portĂ©e limitĂ©e (lecture seule, scope restreint Ă  ce dont l'histoire a besoin) plutĂŽt qu'un jeton root/admin.
  • Faites tourner vos jetons rĂ©guliĂšrement, et immĂ©diatement en cas de doute.


Documentation

Mis Ă  jour le : 20/07/2026

Cet article a-t-il répondu à vos questions ?

Partagez vos commentaires

Annuler

Merci !