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.
| Sens | Ce qui se passe | |
|---|---|---|
| Serveur MCP (ce dont parle cette page) | Entrant | Un assistant se connecte à Enkadenn et appelle des outils. Enkadenn n'émet aucune requête vers un service tiers. |
| Personnage joué par une IA | Sortant | Le moteur d'exercice appellerait un modèle depuis l'intérieur de la simulation. |
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.
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.
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 :
| Adresse | https://<votre-instance>/api/mcp |
| En-tête | Authorization: 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.
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énario | Lit ce que les joueurs ont écrit | Écrit | |
|---|---|---|---|
| Lecture | oui | oui | non |
| Conception | oui | non | oui, 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.
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.
| Sort | Ne sort jamais |
|---|---|
Adresse simulée d'un personnage (@…exercice) | Adresse réelle du joueur qui le tient |
| Nom du personnage | Nom réel du participant |
| Contenu du scénario | Adresses 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é ».
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.