Aller au contenu principal

Serveur MCP — brancher un assistant

Enkadenn peut ouvrir son outillage à un assistant conversationnel : Claude Desktop, Claude Code, ou tout autre client du Model Context Protocol. L'assistant relit un scénario monté, vérifie sa cohérence, dépouille un retour d'expérience — et, si vous le lui permettez, écrit le scénario d'un exercice en brouillon.

La surface est fermée par défaut. L'ouvrir est une décision d'exploitant, pas une conséquence d'une montée de version.

Le sens du trafic, et pourquoi il compte​

Deux choses portent le mot « IA » et se confondent volontiers. Une seule est ici.

SensCe qui se passe
Serveur MCP (ce dont parle cette page)EntrantUn assistant se connecte à Enkadenn et appelle des outils. Enkadenn n'émet aucune requête vers un service tiers.
Personnage joué par une IASortantLe moteur d'exercice appellerait un modèle depuis l'intérieur de la simulation.
Le confinement reste entier

Aucun module du moteur d'exercice n'appelle de modèle de langage. Une instance hors ligne fonctionne exactement comme avant : c'est l'assistant qui vient à elle, jamais l'inverse. Le second cas — générer les répliques d'un journaliste simulé à la volée — romprait cette étanchéité, et n'existe pas.

Ouvrir la surface​

Côté exploitant, dans l'environnement de l'application :

MCP_ENABLED=true

Tant que ce réglage est absent, POST /api/mcp répond 404 et le panneau des jetons ne s'affiche nulle part : proposer d'émettre un jeton qui n'ouvrirait rien serait un piège.

Ce que vous ouvrez

Ouvrir MCP place un modèle de langage dans le périmètre d'autorité de l'instance. Lisez la section correspondante de SECURITY.md avant de le faire, en particulier sur les données personnelles et sur ce que les participants écrivent pendant un exercice.

Émettre un jeton​

Chacun émet le sien depuis Mon compte → Jetons d'agent. Personne n'en émet pour quelqu'un d'autre : ce serait prendre ses accès.

Un jeton porte :

  • une organisation et un rôle — ceux de votre appartenance active. Si vous appartenez à trois organisations, il vous faut trois jetons ;
  • une portée (voir plus bas) ;
  • une échéance, obligatoire, de 90 jours au plus ;
  • facultativement un seul exercice, hors duquel il ne voit rien.

La valeur en clair s'affiche une seule fois, à la création. Copiez-la tout de suite : elle ne revient pas. Seule son empreinte est conservée, comme pour un lien d'accès joueur.

Second facteur

Si votre compte doit un second facteur et ne l'a pas encore, l'émission est refusée. Un jeton ne rejoue pas le second facteur à chaque appel : il permettrait sinon de s'affranchir de l'obligation pendant 90 jours, bien au-delà du délai de grâce.

Un jeton meurt de quatre façons : vous le révoquez, un administrateur le révoque, son échéance tombe, ou vous changez de mot de passe — le geste que l'on fait justement quand on soupçonne une compromission emporte les jetons avec les sessions.

Brancher un client​

Deux informations suffisent :

Adressehttps://<votre-instance>/api/mcp
En-têteAuthorization: Bearer <votre-jeton>

Le transport est HTTP diffusable, sans session : chaque appel porte son jeton et se suffit.

Avec Claude Code, en ligne de commande :

claude mcp add --transport http enkadenn https://votre-instance/api/mcp --header "Authorization: Bearer enk_agent_…"

Les autres clients demandent la même chose sous une forme qui leur est propre — cherchez « serveur MCP distant » ou « HTTP » dans leurs réglages, pas « stdio ». Un client qui ne sait pas poser d'en-tête ne pourra pas se connecter.

Un jeton est un secret

enk_agent_… ouvre vos exercices. Il n'a pas sa place dans un fichier de configuration partagé, un dépôt, ni une capture d'écran. Le préfixe existe précisément pour qu'on le reconnaisse au premier coup d'œil.

Les deux portées​

Elles ne se cumulent pas. Un jeton en porte une.

Lit le scénarioLit ce que les joueurs ont écritÉcrit
Lectureouiouinon
Conceptionouinonoui, dans un exercice en brouillon

La séparation n'est pas un raffinement. Une partie de ce qu'un assistant lit est écrite par les participants : messages, réponses de RETEX, soucis signalés. Un assistant qui lirait cette prose et pourrait écrire dans l'exercice offrirait à n'importe quel participant un moyen de piloter la conception depuis un message de chat. Qui veut les deux émet deux jetons — et le geste se voit dans sa liste.

Écrire ne vaut qu'en brouillon

Un exercice lancé, clos ou archivé se modifie depuis la console. Un exercice se joue devant des gens ; ce qu'ils voient apparaître ne se décide pas dans une boucle d'assistant.

Ce que l'assistant sait faire​

Vingt-six outils, à gros grain. Les noms sont en français, comme le vocabulaire du produit.

Lire le scénario​

exercices_lister · exercice_lire · personnages_lister · injects_lister · phases_lister · documents_lister · fiches_reflexes_lister · kits_lister · kit_lire

exercice_verifier passe une revue mécanique avant de jouer : exercice sans inject, joueurs sans accès, variables {{…}} non remplies, phases vides, grappes d'injects simultanés. L'assistant reçoit des constats, pas un jugement — et garde son contexte pour expliquer.

Suivre un exercice en cours​

horloge_lire · injects_a_venir · acces_etat_lire · journal_lire

De quoi répondre à « où en est-on » sans quitter des yeux la cellule. injects_a_venir compte sur l'horloge de l'exercice, pas l'heure murale, et fait remonter les appels dont l'instant est atteint et que l'animation doit passer.

Dépouiller un RETEX​

main_courante_lire · observations_lire · retex_reponses_lire · rapport_lire

Écrire un scénario (portée conception)​

exercice_creer · personnage_ajouter · personnage_modifier · phase_ajouter · inject_ajouter · inject_modifier · document_rediger · fiche_reflexe_rediger

Les outils de modification ne changent que les champs fournis : demander un nouvel instant n'efface ni le corps, ni l'objet, ni l'expéditeur, ni les destinataires.

Ce qu'aucun outil n'atteint​

  • La console d'instance. Aucun jeton ne porte INSTANCE_ADMIN.
  • Les comptes et les appartenances. Créer quelqu'un, changer un rôle, réinitialiser un mot de passe restent des gestes humains.
  • Les liens d'accès joueurs et d'affichage. Ce sont des capacités : les remettre à un assistant, c'est les remettre à tout ce qui lit son contexte.
  • Toute publication vers les joueurs — presse, réseaux, chat, courriel simulé, déclenchement d'un inject, et l'écriture dans la main courante, qui est un journal partagé avec eux.
  • Toute suppression.

Un outil est par ailleurs aussi strict que la page correspondante, jamais plus : un jeton porté par un rôle Observateur n'obtient pas le chronogramme, que la console ne lui montre pas non plus.

Données personnelles​

Tout ce qu'un outil rend part dans le contexte d'un modèle. La règle est donc appliquée par le schéma, pas par la consigne : chaque outil énumère les champs qu'il rend.

SortNe sort jamais
Adresse simulée d'un personnage (@…exercice)Adresse réelle du joueur qui le tient
Nom du personnageNom réel du participant
Contenu du scénarioAdresses de compte, liens d'accès

La vérification des accès en est un bon exemple : elle répond « le directeur général n'a pas confirmé », jamais « Marie Dupont n'a pas confirmé ».

Champs libres

Main courante, observations et réponses de RETEX sont remplis à la main pendant l'exercice. Une personne peut y avoir écrit un nom. Ces résultats partent avec un avertissement, mais le produit ne peut pas les nettoyer à votre place.

Surveiller et couper​

  • Écrit par un agent — onglet Préparation d'un exercice : ce qu'un assistant y a écrit, avec le jeton auteur. La trace survit à la révocation du jeton et à la suppression de l'objet.
  • Jetons d'agent actifs — page Utilisateurs, pour un administrateur d'organisation : tous les jetons, leur porteur, et de quoi les révoquer. C'est là qu'on coupe celui d'un collègue parti.
  • Supervision — console d'instance : nombre de jetons actifs, dont ceux qui écrivent, et ceux employés dans les sept derniers jours.

Ce qu'il faut avoir en tête​

Un assistant lit du texte écrit par des participants à un exercice cyber. Certains essaieront d'y glisser des instructions à son intention — c'est de bonne guerre, et il faut s'y attendre.

Ce qui tient face à cela n'est pas la prudence de l'assistant, c'est que rien de ce qui décide de ses droits ne passe par ce qu'il lit : l'organisation, le rôle et la portée viennent du jeton, résolus côté serveur, et ne figurent dans les arguments d'aucun outil. Un message de joueur peut raconter n'importe quoi, il ne peut pas franchir cette limite.

Le reste — les avertissements joints au contenu joueur, la séparation des portées, l'obligation du brouillon — réduit la surface, mais c'est cette règle-là qui la ferme.