Notes · Article
Une commande pour faire lire votre Jira à GitHub Copilot, et voir ce que coûte chaque réponse
GitHub Copilot peut lire vos tickets Jira et vos pages Confluence. Il lui faut juste, au préalable, un serveur MCP, un jeton d’API Atlassian et deux fichiers de config dans deux formats différents. pilotkit fait tout ça en une commande, pilotkit setup, et ajoute un petit bureau local, une page de chat qui affiche ce que chaque réponse a coûté en crédits IA.
C’est open source et sur npm : npm install -g pilotkit. Tout est parti d’un bureau de ce genre que je fais tourner au travail. pilotkit, c’est la version que les collègues peuvent installer sur leur propre PC sans que je sois assis à côté d’eux.
Copilot ne voit pas encore vos tickets
Une licence Copilot donne accès au chat, au mode agent dans VS Code et à une CLI. Aucun des trois ne sait que votre site Atlassian existe.
Le faire à la main, c’est installer un serveur MCP, créer un jeton d’API et, en général, le coller dans un fichier JSON, puis enregistrer le serveur deux fois : copilot mcp add pour la CLI Copilot, et un mcp.json pour VS Code dans un autre format. Facile à faire une fois pour soi, fastidieux quand il faut y guider toute une équipe.
À la main
Quatre tâches
Installer un serveur MCP
Créer un jeton d’API, le coller dans un fichier JSON
copilot mcp add pour la CLI Copilot
Un mcp.json pour VS Code, dans un autre format
contre
pilotkit
Une commande
pilotkit setup
Le jeton va dans le trousseau du système, jamais dans un fichier
Enregistré dans les deux clients, autres serveurs conservés
Ce que fait une seule commande
Le setup enchaîne trois vérifications et n’enregistre que ce qui a réussi :
- Copilot. Il trouve la CLI Copilot, propose de l’installer et vous connecte avec
copilot login. - Atlassian. Il demande le site, votre e-mail et un jeton d’API, puis les vérifie d’un seul appel à
/rest/api/3/myself. Un mauvais jeton a droit à deux essais de plus. - Clients. Il enregistre le serveur dans la CLI Copilot et dans chaque
mcp.jsonutilisateur de VS Code qu’il trouve, en conservant les autres serveurs et une sauvegarde du fichier.
Le jeton n’atterrit jamais dans un fichier de config. Sur Mac, il va dans le trousseau macOS via security -i, qui lit sa commande sur stdin. Passer le jeton en argument le mettrait dans la liste des processus, où d’autres programmes lancés sous votre compte peuvent le lire avec ps. Sur Windows, c’est un fichier que seul votre compte Windows peut déchiffrer (DPAPI), et sur Linux, c’est le Secret Service.
Un bug que j’ai attrapé avant qu’il ne fasse de victime : avec Homebrew, le chemin que Node donne pour lui-même pointe dans un dossier Cellar versionné. Enregistrez celui-là, et la commande casse au prochain brew upgrade. Le setup enregistre maintenant le chemin opt/, qui survit aux mises à jour.
-
1Copilot
Trouver ou installer la CLI, puis
copilot login -
2Atlassian
Site, e-mail et jeton, validés via
/myself -
3Clients
CLI Copilot et VS Code, autres serveurs conservés
Le jetonTrousseau macOS, DPAPI sous Windows ou Secret Service sous Linux. Jamais un fichier de config.
Sept outils, tous en lecture seule
Le serveur MCP a sept outils : whoami, jira_my_issues, jira_search, jira_get_issue, jira_list_projects, confluence_search et confluence_get_page. Ils n’envoient que des requêtes GET, avec votre propre compte Atlassian, donc Copilot voit ce que vous verriez dans un navigateur, et rien de plus. Il ne peut ni commenter, ni déplacer un ticket, ni modifier une page. Besoin d’un commentaire ? Demandez un brouillon et collez-le vous-même.
Ils renvoient aussi du texte court, exprès. Jira stocke les descriptions en ADF, un arbre JSON, et Confluence stocke les pages en XHTML. Les deux sont verbeux. Chaque caractère renvoyé par un outil repart vers le modèle à chaque appel suivant du chat, donc pilotkit les convertit en Markdown compact et coupe par défaut une description à 6 000 caractères et une page à 8 000.
Lecture
- whoami
- jira_my_issues
- jira_search
- jira_get_issue
- jira_list_projects
- confluence_search
- confluence_get_page
Écriture
- commentaire
- transition
- modifier une page
Sortie courteL’ADF et le XHTML deviennent du Markdown compact, coupé à 6 000 et 8 000 caractères.
Le plus amusant : ce que coûte une réponse
Copilot facture en crédits IA sur un quota mensuel, et la fenêtre de chat ne vous dit pas ce qu’une question vient de dépenser. Alors pilotkit start ouvre un bureau sur 127.0.0.1:8717 qui fait tourner Copilot via le Copilot SDK officiel, et qui compte.
Après chaque appel au modèle, le SDK envoie un événement assistant.usage. Son champ copilotUsage.totalNanoAiu donne le coût en nano-unités IA (nano AI units), et il en faut 1 000 000 000 pour faire un crédit. Le bureau stocke ce coût par appel dans SQLite et affiche le total sous chaque réponse, avec un tableau des appels au modèle et des appels d’outil qui l’ont produite.
Ma première vraie question, sur mes tickets Jira ouverts, avec Claude Haiku 5.5 : 2 appels au modèle, 1 appel d’outil, 0,12 crédit. Le premier appel a demandé jira_my_issues, le second a rédigé la réponse. Une relance dans le même chat a coûté 0,03.
Quand un appel revient sans coût, le bureau l’estime à partir du prix des tokens du modèle et le marque d’un ≈. Chaque chat a aussi un plafond, 60 crédits par défaut, que Copilot applique lui-même via sessionLimits.maxAiCredits. Copilot refuse un plafond inférieur à 30.
-
1Appel au modèle
Lit la question, demande
jira_my_issues -
2Appel d’outil
Lit Jira avec votre propre compte
-
3Appel au modèle
Rédige la réponse à partir du résultat
0,12crédit pour cette première question, Claude Haiku 5.5
0,03pour une relance dans le même chat
60crédits, le plafond par défaut d’un chat
1 crédit1 000 000 000 de nano-unités IA, lus dans assistant.usage après chaque appel au modèle.
Verrouillé sur cette machine
Un bureau qui dépense des crédits ne devrait répondre à personne d’autre. Il n’écoute que sur 127.0.0.1, mais cela seul ne suffit pas : une page web que vous visitez peut toujours envoyer des requêtes à localhost. Il vérifie donc deux choses de plus.
L’en-tête Host doit valoir 127.0.0.1 ou localhost. Un nom DNS qui pointe vers 127.0.0.1 reçoit un 421, ce qui bloque le DNS rebinding. Et chaque écriture exige un en-tête X-Pilotkit: 1. Un formulaire ou une image sur un autre site ne peut pas en envoyer, donc il reçoit un 403 et ne peut pas dépenser vos crédits.
À l’intérieur, les sessions Copilot du bureau ne voient que les outils pilotkit. Un gestionnaire de permissions refuse le shell, les fichiers, les URL et les autres serveurs MCP, avec une raison que le modèle peut lire.
Vous, dans votre navigateur
127.0.0.1:8717
le bureau
Un formulaire sur un autre site
pas de X-Pilotkit ✗
403
Un nom DNS pointé ici
mauvais Host ✗
421
Le modèle, qui demande un shell
gestionnaire de permissions ✗
refusé, avec la raison
Outils dans un chat du bureauSeulement les sept de pilotkit.
Votre logo, pas le mien
Je l’ai fait pour des collègues, donc il doit ressembler à l’outil de leur entreprise, pas à mon projet perso. Mais un logo d’entreprise est une marque déposée, et il n’a rien à faire dans un dépôt public.
Le package reste donc neutre, et un pack de marque porte l’identité visuelle : un dossier avec un brand.json et un logo, partagé en interne sur un drive ou une URL intranet.
pilotkit setup --brand ./brand-acme
Il définit le nom, le logo, la couleur d’accent et la phrase d’accueil sur le bureau et dans le setup, et peut pré-remplir le site Atlassian. Le dépôt fournit un seul exemple, pour une entreprise qui n’existe pas : Acme.
Package public
Bureau pilotkit
Nom, logo et couleur neutres
Un pack d’exemple, pour une Acme inventée
+
Le pack de votre entreprise
Votre bureau
Votre nom, votre logo, votre couleur d’accent
Une phrase d’accueil, des liens d’aide, le site Atlassian pré-rempli
Partagé sur un drive ou une URL intranet
Appliqué avecpilotkit setup --brand <folder or URL>
Essayez-le
npm install -g pilotkit
pilotkit setup
pilotkit start
Il vous faut Node 22.13 ou plus récent, un abonnement Copilot et un site Atlassian Cloud. Une fois le setup fait, les mêmes outils marchent aussi dans le mode agent de VS Code et dans la CLI Copilot. pilotkit doctor vérifie chaque élément et dit quoi lancer quand quelque chose cloche.
1 · npm
Installer
- npm install -g pilotkit
- Node 22.13 ou plus récent
2 · Setup
Connecter
- pilotkit setup
- Connexion Copilot, jeton Atlassian
3 · Questions
Bureau
- pilotkit start
- Ou VS Code, ou la CLI Copilot
TestémacOS, avec un vrai site Jira et Confluence Cloud. Pas encore : Windows et Linux.
C’est une toute première version, la v0.1, sous licence Apache-2.0, sur npm. Je l’ai testé sur macOS avec un vrai site Jira et Confluence Cloud : les sept outils, le bureau, sur ordinateur comme sur téléphone, et les garde-fous ci-dessus. Windows et Linux ne sont pas encore vérifiés, donc si vous le lancez là-dessus, dites-moi ce qui casse. Les issues sont ouvertes sur GitHub.
GitHub Copilot est une marque de GitHub ; Atlassian, Jira et Confluence sont des marques d’Atlassian. pilotkit est un projet indépendant.
Texte brut: pilotkit-copilot-jira-confluence.md · Flux Atom · Toutes les notes