[{"data":1,"prerenderedAt":43},["ShallowReactive",2],{"doc:fr:mcp":3},{"title":4,"lede":5,"html":6,"headings":7},"Le serveur MCP","Le serveur MCP d’Escouade laisse Claude (dans un terminal, un autre outil ou un agent d’Escouade) lire tes projets, tes agents et tes tickets, créer, modifier et lancer des tickets, et piloter des agents, sous les mêmes garde-fous que le pilote auto.","\u003Ch2 id=\"a-quoi-il-sert\">À quoi il sert\u003C\u002Fh2>\n\u003Cp>MCP (Model Context Protocol) est le protocole par lequel Claude Code appelle des outils. Escouade embarque un serveur MCP : une fois déclaré dans Claude Code, il donne à Claude les outils de la liste plus bas.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Claude dans un terminal\u003C\u002Fstrong> : tu lances \u003Ccode class=\"key\">claude\u003C\u002Fcode> où tu veux et tu lui parles d’Escouade (« liste les tickets à tester du projet api », « crée un ticket pour limiter les tentatives de connexion, puis lance-le »).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Un autre outil\u003C\u002Fstrong> qui parle MCP peut se connecter de la même façon (voir \u003Ca href=\"#jeton-et-reseau\">Jeton et réseau\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Un agent d’Escouade\u003C\u002Fstrong>, quand son projet le permet (voir \u003Ca href=\"#les-agents-d-escouade-et-le-serveur\">Les agents d’Escouade et le serveur\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Le serveur tourne sur ta machine seule. Il ne sert qu’à lire et à commander ; il n’accepte aucune permission à ta place, ne lance aucune commande, ne merge rien et ne supprime rien.\u003C\u002Fp>\n\u003Ch2 id=\"activer-claude-peut-piloter-escouade\">Activer « Claude peut piloter Escouade »\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Ouvre Réglages › Claude Code. Le groupe « Escouade dans Claude » a l’interrupteur « Claude peut piloter Escouade ».\u003C\u002Fli>\n\u003Cli>Allume-le. Il s’enregistre tout de suite, sans « Enregistrer » : la déclaration écrit dans la config de Claude Code de chaque compte, ce qu’« Annuler » ne pourrait pas défaire.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Escouade démarre alors le serveur et le déclare dans Claude Code pour chaque compte actif, avec la commande \u003Ccode>claude mcp add --scope user --transport http escouade &lt;adresse&gt; --header &quot;Authorization: Bearer &lt;jeton&gt;&quot;\u003C\u002Fcode>, lancée comme le compte lance Claude Code (son exécutable, son dossier de configuration). L’entrée se range dans le \u003Ccode class=\"key\">.claude.json\u003C\u002Fcode> du compte (\u003Ccode class=\"key\">~\u002F.claude.json\u003C\u002Fcode> pour « Principal »). L’onglet dit « Déclaré dans Claude · compte Principal, compte Pro ».\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Une entrée déjà à jour est laissée telle quelle. Une entrée différente (un autre port, un autre jeton) est remplacée. Un compte ajouté ou réactivé plus tard reçoit la déclaration.\u003C\u002Fli>\n\u003Cli>Si elle échoue pour un compte, l’onglet le dit (« Pas déclaré pour le compte Pro : … ») et affiche la commande à lancer à la main (« À lancer à la main dans PowerShell : »), écrite pour PowerShell sous Windows et pour \u003Ccode class=\"key\">sh\u003C\u002Fcode> ailleurs. Le jeton y est masqué à l’écran ; « Copier la commande » copie la vraie.\u003C\u002Fli>\n\u003Cli>Éteindre l’interrupteur change le jeton tout de suite, puis retire l’entrée de chaque compte. Supprimer un compte retire la sienne.\u003C\u002Fli>\n\u003Cli>Si le serveur ne démarre pas, l’onglet le dit (« Le serveur n’a pas démarré : … »).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Claude Code connaît le serveur sous le nom \u003Ccode class=\"key\">escouade\u003C\u002Fcode> : ses outils s’appellent \u003Ccode>mcp__escouade__&lt;outil&gt;\u003C\u002Fcode> (par exemple \u003Ccode>mcp__escouade__list_tickets\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cdiv class=\"callout note\">\u003Cp class=\"callout-title\">À noter\u003C\u002Fp>\u003Cp>Sous Windows avec Claude Code dans WSL, les outils MCP d’Escouade demandent le réseau miroir de WSL : \u003Ccode>networkingMode=mirrored\u003C\u002Fcode> sous \u003Ccode class=\"key\">[wsl2]\u003C\u002Fcode> dans \u003Ccode>%UserProfile%\\.wslconfig\u003C\u002Fcode>, puis \u003Ccode>wsl --shutdown\u003C\u002Fcode>. Réglages › Claude Code le rappelle quand le réseau de WSL est en NAT.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"les-outils\">Les outils\u003C\u002Fh2>\n\u003Cp>Dans les arguments, un projet se nomme par son id ou son nom (casse libre), un agent par son id ou son nom, un ticket par sa clé (\u003Ccode class=\"key\">ATL-12\u003C\u002Fcode>, casse libre) ou son id. Les réponses sont en JSON.\u003C\u002Fp>\n\u003Ch3 id=\"lire\">Lire\u003C\u002Fh3>\n\u003Cp>Ces six outils ne changent rien.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Outil\u003C\u002Fth>\n\u003Cth>Arguments\u003C\u002Fth>\n\u003Cth>Ce qu’il rend\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">list_projects\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>aucun\u003C\u002Ftd>\n\u003Ctd>Les projets, dans l’ordre de l’app : id, nom, dossier, branche git courante, nombre d’agents (archivés exclus) et nombre de tickets dans chaque colonne.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">list_agents\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">project\u003C\u002Fcode> (facultatif)\u003C\u002Ftd>\n\u003Ctd>Les agents non archivés, du plus ancien au plus récent, de tous les projets ou d’un seul : id, nom, projet, état (\u003Ccode class=\"key\">idle\u003C\u002Fcode>, \u003Ccode class=\"key\">running\u003C\u002Fcode>, \u003Ccode class=\"key\">waiting\u003C\u002Fcode>, \u003Ccode class=\"key\">done\u003C\u002Fcode> ou \u003Ccode class=\"key\">error\u003C\u002Fcode>), si une question ou une autorisation attend ta réponse, clé de leur ticket, modèle, compte Claude et coût en dollars.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">list_tickets\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">project\u003C\u002Fcode>, \u003Ccode class=\"key\">column\u003C\u002Fcode> (facultatif : \u003Ccode class=\"key\">todo\u003C\u002Fcode>, \u003Ccode class=\"key\">doing\u003C\u002Fcode>, \u003Ccode class=\"key\">review\u003C\u002Fcode> ou \u003Ccode class=\"key\">done\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd>Les tickets d’un projet dans l’ordre du Kanban : id, clé, titre, colonne, clés des tickets qu’ils attendent, nom de leur agent et motif du blocage.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">get_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Un ticket entier : titre, description, critères (atteints ou non, avec la note de l’agent), boucles (la courante et le maximum), colonne, tickets attendus, avancement et ticket externe d’origine (Jira, Trello, GitHub ou Linear). Un agent d’Escouade peut omettre \u003Ccode class=\"key\">ticket\u003C\u002Fcode> pour lire le sien.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">get_usage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>aucun\u003C\u002Ftd>\n\u003Ctd>Le quota de chaque compte Claude : si les nouveaux agents y partent maintenant, l’usage de ses fenêtres de 5 h et hebdomadaire (\u003Ccode class=\"key\">pct\u003C\u002Fcode> de 0 à 100, \u003Ccode class=\"key\">resetsAt\u003C\u002Fcode>), et pourquoi le pilote auto retient les tickets (\u003Ccode class=\"key\">reason\u003C\u002Fcode> : \u003Ccode class=\"key\">fiveHour\u003C\u002Fcode>, \u003Ccode class=\"key\">week\u003C\u002Fcode> ou \u003Ccode class=\"key\">limit\u003C\u002Fcode>), jusqu’à quand.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">get_agent_summary\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">agent\u003C\u002Fcode>, \u003Ccode class=\"key\">project\u003C\u002Fcode> (facultatif)\u003C\u002Ftd>\n\u003Ctd>Un agent sans sa conversation : id, nom, état, clé du ticket, dernier message (2 000 caractères au plus ; un message plus long donne son début et sa fin) et fichiers modifiés (les 100 derniers au plus).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch3 id=\"agir\">Agir\u003C\u002Fh3>\n\u003Cp>Ces outils font ce que tu ferais dans la fenêtre, par les mêmes fonctions : la fenêtre est prévenue, les tickets externes suivent et le Kanban se met à jour.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Outil\u003C\u002Fth>\n\u003Cth>Arguments\u003C\u002Fth>\n\u003Cth>Ce qu’il fait\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">create_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">project\u003C\u002Fcode>, \u003Ccode class=\"key\">title\u003C\u002Fcode>, \u003Ccode class=\"key\">description\u003C\u002Fcode>, \u003Ccode class=\"key\">criteria\u003C\u002Fcode>, \u003Ccode class=\"key\">after\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Crée un ticket « À faire » au bas de la colonne. \u003Ccode class=\"key\">criteria\u003C\u002Fcode> est une liste (deux critères par défaut sans elle), \u003Ccode class=\"key\">after\u003C\u002Fcode> les tickets qu’il attend, par clé ou id. Avec le pilote auto allumé, il part dès qu’une place est libre et que ses prédécesseurs sont terminés. Sa description se termine par « Créé par \u003Ccode class=\"key\">&lt;auteur&gt;\u003C\u002Fcode> via Escouade ».\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">update_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">ticket\u003C\u002Fcode>, \u003Ccode class=\"key\">title\u003C\u002Fcode>, \u003Ccode class=\"key\">description\u003C\u002Fcode>, \u003Ccode class=\"key\">criteria\u003C\u002Fcode>, \u003Ccode class=\"key\">after\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Modifie un ticket « À faire », champ par champ : ce qui est omis reste. \u003Ccode class=\"key\">criteria\u003C\u002Fcode> et \u003Ccode class=\"key\">after\u003C\u002Fcode> remplacent la liste entière. Un ticket déjà parti ne se modifie pas, une dépendance qui ferait attendre deux tickets l’un l’autre est refusée. Si titre, description ou critères changent, la dernière ligne de la description devient « Modifié par \u003Ccode class=\"key\">&lt;auteur&gt;\u003C\u002Fcode> via Escouade ».\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">move_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">ticket\u003C\u002Fcode>, \u003Ccode class=\"key\">position\u003C\u002Fcode> (\u003Ccode class=\"key\">top\u003C\u002Fcode>, \u003Ccode class=\"key\">bottom\u003C\u002Fcode> ou \u003Ccode class=\"key\">before\u003C\u002Fcode>), \u003Ccode class=\"key\">before\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Place un ticket « À faire » en tête, en bas, ou juste avant un autre ticket « À faire » du projet (\u003Ccode class=\"key\">before\u003C\u002Fcode>). Rend les clés de la colonne dans leur nouvel ordre.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">start_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Lance un ticket « À faire » comme le bouton « Lancer » : son agent démarre dès qu’une place est libre. Rend la main une fois le ticket en file ; suis-le avec \u003Ccode class=\"key\">get_ticket\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">create_agent\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">project\u003C\u002Fcode>, \u003Ccode class=\"key\">message\u003C\u002Fcode>, \u003Ccode class=\"key\">worktree\u003C\u002Fcode>, \u003Ccode class=\"key\">model\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Crée un agent dans un projet, avec son premier message, sans changer l’agent que tu regardes. \u003Ccode class=\"key\">worktree\u003C\u002Fcode> (vrai ou faux) dit s’il travaille dans un worktree à lui, sinon le projet décide ; \u003Ccode class=\"key\">model\u003C\u002Fcode> se nomme comme dans Claude Code (\u003Ccode class=\"key\">sonnet\u003C\u002Fcode>, \u003Ccode class=\"key\">opus\u003C\u002Fcode>, \u003Ccode class=\"key\">haiku\u003C\u002Fcode>…). Rend l’id et le nom de l’agent.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">send_message\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">agent\u003C\u002Fcode>, \u003Ccode class=\"key\">project\u003C\u002Fcode>, \u003Ccode class=\"key\">text\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Écrit à un agent. Un agent au travail lit le message après son tour en cours (la réponse dit \u003Ccode class=\"key\">queued\u003C\u002Fcode>).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">stop_agent\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">agent\u003C\u002Fcode>, \u003Ccode class=\"key\">project\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Interrompt le tour en cours d’un agent, comme le bouton stop de sa conversation. L’agent reste, et peut recevoir un message ensuite.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Un titre fait 200 caractères au plus, une description 10 000, et un ticket 30 critères de 500 caractères au plus. Un ticket créé par le serveur a le nombre de boucles par défaut, 5, et sa propre branche.\u003C\u002Fp>\n\u003Ch3 id=\"reserves-aux-agents-d-escouade\">Réservés aux agents d’Escouade\u003C\u002Fh3>\n\u003Cp>Ces deux outils sont refusés à Claude hors Escouade.\u003C\u002Fp>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Outil\u003C\u002Fth>\n\u003Cth>Arguments\u003C\u002Fth>\n\u003Cth>Ce qu’il fait\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">report_progress\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">line\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Publie une ligne d’état de 120 caractères au plus, sur ce que l’agent fait. Elle s’affiche sous son nom dans la barre latérale et la vue d’ensemble, et sur la carte de son ticket « En cours », jusqu’à son prochain appel. Une ligne vide l’efface.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">split_ticket\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode class=\"key\">tickets\u003C\u002Fcode>, \u003Ccode class=\"key\">chain\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Découpe ce qui reste du ticket de l’agent en dix tickets « À faire » au plus, après le sien. Avec \u003Ccode class=\"key\">chain\u003C\u002Fcode> vrai (par défaut), chacun vient après le précédent et le premier après le ticket de l’agent ; faux, tous viennent après le ticket de l’agent seul et peuvent tourner en parallèle. Refusé à un agent sans ticket. Rend les clés des tickets créés.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch2 id=\"les-garde-fous\">Les garde-fous\u003C\u002Fh2>\n\u003Cp>Les outils qui agissent suivent les règles de la fenêtre et du pilote auto :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Quota.\u003C\u002Fstrong> Aucun ticket (\u003Ccode class=\"key\">start_ticket\u003C\u002Fcode>) ni agent (\u003Ccode class=\"key\">create_agent\u003C\u002Fcode>) ne démarre quand aucun compte n’est utilisable pour le projet : pause du pilote auto, fenêtre de quota au-dessus du seuil de « Pause au-delà du quota », limite d’usage, agent qui attend sa remise à zéro. Un seul compte libre suffit. Le refus dit jusqu’à quand (« Le pilote auto est en pause jusqu’à 14:30 : la fenêtre de 5 h est utilisée à 96 %. Réessaie à ce moment-là. »). \u003Ccode class=\"key\">send_message\u003C\u002Fcode> est refusé quand le compte de l’agent est retenu ainsi (les agents d’un autre compte peuvent encore recevoir un message).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>En parallèle.\u003C\u002Fstrong> Le maximum de tickets « En parallèle » du projet n’est pas dépassé par \u003Ccode class=\"key\">start_ticket\u003C\u002Fcode>, ni son maximum d’agents qui travaillent en même temps par \u003Ccode class=\"key\">create_agent\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dépendances.\u003C\u002Fstrong> Un ticket qui vient après des tickets non terminés n’est pas lancé sans eux : le refus dit lesquels, et \u003Ccode class=\"key\">update_ticket\u003C\u002Fcode> retire les dépendances. Une dépendance circulaire est refusée.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Le Kanban.\u003C\u002Fstrong> \u003Ccode class=\"key\">start_ticket\u003C\u002Fcode> est refusé quand le Kanban du projet ne démarre rien pour l’instant (la branche cible n’a aucun commit ou est introuvable, aucun compte actif ne sert le projet) ; le refus dit pourquoi.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Les agents d’Escouade\u003C\u002Fstrong> n’agissent que dans leur propre projet (ils lisent les autres), ne s’écrivent pas à eux-mêmes et ne s’arrêtent pas eux-mêmes. On n’écrit pas à un agent archivé.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Aucun outil\u003C\u002Fstrong> n’accepte une permission, ne répond à ta place, ne lance une commande ou un test, ne merge, ni ne supprime (projet, agent ou ticket). Un agent poussé par un contenu piégé ne peut donc pas s’en servir pour monter en droits.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ce qui vient du serveur n’est jamais pris pour toi.\u003C\u002Fstrong> Un message envoyé à un agent (\u003Ccode class=\"key\">send_message\u003C\u002Fcode>, premier message de \u003Ccode class=\"key\">create_agent\u003C\u002Fcode>) est lu par l’agent et montré dans sa conversation sous « Message de \u003Ccode class=\"key\">&lt;auteur&gt;\u003C\u002Fcode> : », l’auteur étant le nom de l’agent qui l’envoie ou « Claude (hors Escouade) ». Un ticket créé ou découpé par le serveur se termine par « Créé par \u003Ccode class=\"key\">&lt;auteur&gt;\u003C\u002Fcode> via Escouade », un ticket modifié par « Modifié par \u003Ccode class=\"key\">&lt;auteur&gt;\u003C\u002Fcode> via Escouade », sur sa carte comme dans le protocole de son agent.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Une demande d’autorisation d’un outil d’Escouade le nomme en clair (« Escouade · Créer un ticket », « Escouade · Lancer un agent »…) et montre ce que Claude lui donne, un argument par ligne. Une valeur de plus de 2 000 caractères est coupée : la carte dit combien ne sont pas montrés et renvoie à la conversation.\u003C\u002Fp>\n\u003Ch2 id=\"les-agents-d-escouade-et-le-serveur\">Les agents d’Escouade et le serveur\u003C\u002Fh2>\n\u003Cp>Le groupe « Serveur MCP » des réglages d’un projet (Réglages › Projets) a l’interrupteur « Les agents peuvent utiliser Escouade », éteint par défaut.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Allumé, les agents du projet reçoivent le serveur avec un jeton à chacun. Ils lisent les tickets et les agents, et peuvent créer des tickets ou lancer d’autres agents, ce qui dépense du quota. Le réglage s’applique au prochain démarrage de leur processus.\u003C\u002Fli>\n\u003Cli>Éteint, le projet refuse à ses agents tous les outils d’Escouade, même quand « Claude peut piloter Escouade » est allumé : sans cela, un agent hériterait de l’entrée de ta config de Claude Code et passerait pour Claude hors Escouade.\u003C\u002Fli>\n\u003Cli>Ce réglage retire des outils aux agents et protège ton quota, ce n’est pas un cloisonnement : un agent qui peut les utiliser n’agit que dans son propre projet, mais lit les autres.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Le serveur tourne dès que l’un des deux réglages le demande : « Claude peut piloter Escouade », ou un projet dont les agents peuvent l’utiliser. Il s’arrête avec l’app.\u003C\u002Fp>\n\u003Cp>Dans une conversation, un appel à un outil d’Escouade porte l’étiquette « Escouade · » suivie de son nom (« Escouade · Lire un ticket », « Escouade · Donner son avancement »).\u003C\u002Fp>\n\u003Ch2 id=\"l-activite-mcp\">L’activité MCP\u003C\u002Fh2>\n\u003Cp>Réglages › Claude Code › « Activité MCP » garde les 200 derniers appels et refus, les plus récents en tête, mis à jour en direct. Chaque ligne donne :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>l’heure (au survol, la date) ;\u003C\u002Fli>\n\u003Cli>l’appelant : le nom de l’agent, « Claude (hors Escouade) », ou « Client inconnu » pour une requête refusée avant que son jeton dise d’où elle vient ;\u003C\u002Fli>\n\u003Cli>l’outil, et en bref ce qui lui a été demandé (jamais un jeton) ;\u003C\u002Fli>\n\u003Cli>le résultat : « Fait », « Refusé » ou « Erreur », avec la raison pour les deux derniers (colorés en alerte).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>« Effacer » vide la liste. Le journal n’est pas enregistré : il repart à zéro au prochain démarrage d’Escouade.\u003C\u002Fp>\n\u003Cp>Sont aussi refusées, et notées : une requête sans jeton (« Requête refusée : pas de jeton »), avec un jeton inconnu, avec un en-tête \u003Ccode class=\"key\">Host\u003C\u002Fcode> inattendu, avec un en-tête \u003Ccode class=\"key\">Origin\u003C\u002Fcode> (une page web), ou vers un autre chemin que celui du serveur.\u003C\u002Fp>\n\u003Ch2 id=\"jeton-et-reseau\">Jeton et réseau\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Le serveur n’écoute que sur \u003Ccode class=\"key\">127.0.0.1\u003C\u002Fcode>, sur un port libre entre 47000 et 47999, choisi au premier démarrage puis gardé (il en change seulement quand le sien est pris, et la déclaration est alors refaite dans chaque compte).\u003C\u002Fli>\n\u003Cli>Chaque requête porte un jeton, dans l’en-tête \u003Ccode>Authorization: Bearer\u003C\u002Fcode>. Celui de Claude hors Escouade est gardé dans le trousseau du système ; quand il le refuse, et sous Linux, dans \u003Ccode>~\u002F.escouade\u002Fmcp-token.json\u003C\u002Fcode>, lisible par toi seul. Il est aussi écrit en clair dans la config de Claude Code (\u003Ccode class=\"key\">~\u002F.claude.json\u003C\u002Fcode> pour « Principal »). Celui d’un agent est propre à cet agent, vit en mémoire et dans un fichier de configuration sous \u003Ccode class=\"key\">~\u002F.escouade\u002Fmcp\u002F\u003C\u002Fcode> que l’app retire quand son processus s’arrête.\u003C\u002Fli>\n\u003Cli>Une requête envoyée par une page web (en-tête \u003Ccode class=\"key\">Origin\u003C\u002Fcode>) ou adressée à un autre nom que \u003Ccode class=\"key\">127.0.0.1\u003C\u002Fcode> ou \u003Ccode class=\"key\">localhost\u003C\u002Fcode> est refusée, même avec un jeton : un site que tu visites ne peut pas appeler le serveur.\u003C\u002Fli>\n\u003Cli>Un autre client MCP se connecte à \u003Ccode>http:\u002F\u002F127.0.0.1:&lt;port&gt;\u002Fmcp\u003C\u002Fcode> avec le même en-tête. L’adresse et le jeton se lisent dans l’entrée \u003Ccode class=\"key\">escouade\u003C\u002Fcode> du \u003Ccode class=\"key\">.claude.json\u003C\u002Fcode> du compte, ou dans la commande que l’onglet propose quand la déclaration échoue.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"voir-aussi\">Voir aussi\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fautopilot\u002F\">Le pilote auto\u003C\u002Fa> : les règles que les outils reprennent.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fboard\u002F\">Le Kanban\u003C\u002Fa> : les tickets que les outils créent et déplacent.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fsettings-claude-code\u002F\">Réglages de Claude Code\u003C\u002Fa> et \u003Ca href=\"\u002Fdocs\u002Fsettings-projects\u002F\">Réglages des projets\u003C\u002Fa> : où se trouvent les interrupteurs.\u003C\u002Fli>\n\u003C\u002Ful>\n",[8,12,15,18,22,25,28,31,34,37,40],{"id":9,"text":10,"depth":11},"a-quoi-il-sert","À quoi il sert",2,{"id":13,"text":14,"depth":11},"activer-claude-peut-piloter-escouade","Activer « Claude peut piloter Escouade »",{"id":16,"text":17,"depth":11},"les-outils","Les outils",{"id":19,"text":20,"depth":21},"lire","Lire",3,{"id":23,"text":24,"depth":21},"agir","Agir",{"id":26,"text":27,"depth":21},"reserves-aux-agents-d-escouade","Réservés aux agents d’Escouade",{"id":29,"text":30,"depth":11},"les-garde-fous","Les garde-fous",{"id":32,"text":33,"depth":11},"les-agents-d-escouade-et-le-serveur","Les agents d’Escouade et le serveur",{"id":35,"text":36,"depth":11},"l-activite-mcp","L’activité MCP",{"id":38,"text":39,"depth":11},"jeton-et-reseau","Jeton et réseau",{"id":41,"text":42,"depth":11},"voir-aussi","Voir aussi",1791926754948]