GitHub Issues
Gérez les issues GitHub en utilisant le serveur MCP @modelcontextprotocol/server-github.
Outils Disponibles
Outils MCP (opérations de lecture)
| Outil | Objectif |
|---|---|
mcp__github__issue_read |
Lire les détails d'une issue, les sous-issues, les commentaires, les labels (méthodes : get, get_comments, get_sub_issues, get_labels) |
mcp__github__list_issues |
Lister et filtrer les issues du repository par état, labels, date |
mcp__github__search_issues |
Rechercher des issues dans les repos en utilisant la syntaxe de recherche GitHub |
mcp__github__projects_list |
Lister les projets, les champs de projet, les éléments de projet, les mises à jour de statut |
mcp__github__projects_get |
Obtenir les détails d'un projet, d'un champ, d'un élément ou d'une mise à jour de statut |
mcp__github__projects_write |
Ajouter/mettre à jour/supprimer des éléments de projet, créer des mises à jour de statut |
CLI / REST API (opérations d'écriture)
Le serveur MCP ne supporte actuellement pas la création, la mise à jour ou le commentaire des issues. Utilisez gh api pour ces opérations.
| Opération | Commande |
|---|---|
| Créer une issue | gh api repos/{owner}/{repo}/issues -X POST -f title=... -f body=... |
| Mettre à jour une issue | gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f title=... -f state=... |
| Ajouter un commentaire | gh api repos/{owner}/{repo}/issues/{number}/comments -X POST -f body=... |
| Fermer une issue | gh api repos/{owner}/{repo}/issues/{number} -X PATCH -f state=closed |
| Définir le type d'issue | Incluez -f type=Bug dans l'appel de création (API REST uniquement, non supporté par la CLI gh issue create) |
Remarque : gh issue create fonctionne pour la création basique d'issues mais ne supporte pas le flag --type. Utilisez gh api lorsque vous devez définir des types d'issues.
Flux de travail
- Déterminer l'action : Créer, mettre à jour ou interroger ?
- Rassembler le contexte : Obtenir les infos du repo, les labels existants, les milestones si nécessaire
- Structurer le contenu : Utiliser le template approprié de references/templates.md
- Exécuter : Utiliser les outils MCP pour les lectures,
gh apipour les écritures - Confirmer : Rapporter l'URL de l'issue à l'utilisateur
Créer des Issues
Utilisez gh api pour créer des issues. Cela supporte tous les paramètres, incluant les types d'issues.
gh api repos/{owner}/{repo}/issues \
-X POST \
-f title="Titre de l'issue" \
-f body="Corps de l'issue en markdown" \
-f type="Bug" \
--jq '{number, html_url}'
Paramètres Optionnels
Ajoutez l'un de ces flags à l'appel gh api :
-f type="Bug" # Type d'issue (Bug, Feature, Task, Epic, etc.)
-f labels[]="bug" # Labels (répéter pour plusieurs)
-f assignees[]="username" # Assignés (répéter pour plusieurs)
-f milestone=1 # Numéro de milestone
Les types d'issues sont des métadonnées au niveau de l'organisation. Pour découvrir les types disponibles, utilisez :
gh api graphql -f query='{ organization(login: "ORG") { issueTypes(first: 10) { nodes { name } } } }' --jq '.data.organization.issueTypes.nodes[].name'
Préférez les types d'issues aux labels pour la catégorisation. Lorsque les types d'issues sont disponibles (par ex. Bug, Feature, Task), utilisez le paramètre type au lieu d'appliquer des labels équivalents comme bug ou enhancement. Les types d'issues sont la façon canonique de catégoriser les issues sur GitHub. Utilisez les labels uniquement lorsque l'organisation n'a pas de types d'issues configurés.
Recommandations pour les Titres
- Soyez spécifique et actionnable
- Restez en dessous de 72 caractères
- Lorsque les types d'issues sont définis, n'ajoutez pas de préfixes redondants comme
[Bug] - Exemples :
La connexion échoue avec SSO activé(avec type=Bug)Ajouter le support du mode sombre(avec type=Feature)Ajouter des tests unitaires pour le module d'auth(avec type=Task)
Structure du Corps
Utilisez toujours les templates dans references/templates.md. Choisissez selon le type d'issue :
| Demande utilisateur | Template |
|---|---|
| Bug, erreur, cassé, ne fonctionne pas | Bug Report |
| Feature, amélioration, ajouter, nouveau | Feature Request |
| Task, chore, refactor, mettre à jour | Task |
Mettre à Jour les Issues
Utilisez gh api avec PATCH :
gh api repos/{owner}/{repo}/issues/{number} \
-X PATCH \
-f state=closed \
-f title="Titre mis à jour" \
--jq '{number, html_url}'
Incluez uniquement les champs que vous souhaitez modifier. Champs disponibles : title, body, state (open/closed), labels, assignees, milestone.
Exemples
Exemple 1 : Rapport de Bug
Utilisateur : "Créer une issue de bug - la page de connexion plante lors de l'utilisation de SSO"
Action :
gh api repos/github/awesome-copilot/issues \
-X POST \
-f title="La page de connexion plante lors de l'utilisation de SSO" \
-f type="Bug" \
-f body="## Description
La page de connexion plante lorsque les utilisateurs tentent de s'authentifier via SSO.
## Étapes pour reproduire
1. Naviguer vers la page de connexion
2. Cliquer sur 'Se connecter avec SSO'
3. La page plante
## Comportement attendu
L'authentification SSO devrait se terminer et rediriger vers le tableau de bord.
## Comportement réel
La page devient inresponsive et affiche une erreur." \
--jq '{number, html_url}'
Exemple 2 : Demande de Feature
Utilisateur : "Créer une demande de feature pour le mode sombre avec priorité haute"
Action :
gh api repos/github/awesome-copilot/issues \
-X POST \
-f title="Ajouter le support du mode sombre" \
-f type="Feature" \
-f labels[]="high-priority" \
-f body="## Résumé
Ajouter une option de thème sombre pour une meilleure expérience utilisateur et accessibilité.
## Motivation
- Réduit la fatigue oculaire dans les environnements peu éclairés
- Attendu de plus en plus par les utilisateurs
## Solution proposée
Implémenter un bouton de basculement avec détection des préférences système.
## Critères d'acceptation
- [ ] Bouton de basculement dans les paramètres
- [ ] Préférence utilisateur persistante
- [ ] Respecte les préférences système par défaut" \
--jq '{number, html_url}'
Labels Courants
Utilisez ces labels standard le cas échéant :
| Label | Utilisation |
|---|---|
bug |
Quelque chose ne fonctionne pas |
enhancement |
Nouvelle feature ou amélioration |
documentation |
Mises à jour de documentation |
good first issue |
Bon pour les nouveaux contributeurs |
help wanted |
Attention supplémentaire requise |
question |
Informations supplémentaires demandées |
wontfix |
Ne sera pas résolu |
duplicate |
Existe déjà |
high-priority |
Issues urgentes |
Astuces
- Confirmez toujours le contexte du repository avant de créer des issues
- Demandez les informations critiques manquantes plutôt que de deviner
- Liez les issues associées lorsqu'elles sont connues :
Related to #123 - Pour les mises à jour, récupérez d'abord l'issue actuelle pour préserver les champs inchangés
Capacités Étendues
Les features suivantes nécessitent des APIs REST ou GraphQL au-delà des outils MCP basiques. Chacune est documentée dans son propre fichier de référence pour que l'agent charge uniquement les connaissances dont il a besoin.
| Capacité | Quand l'utiliser | Référence |
|---|---|---|
| Recherche avancée | Requêtes complexes avec logique booléenne, plages de dates, recherche multi-repo, filtres de champs d'issue (field.name:value) |
references/search.md |
| Sous-issues & issues parent | Décomposer le travail en tâches hiérarchiques | references/sub-issues.md |
| Dépendances d'issues | Suivi des relations blocked-by / blocking | references/dependencies.md |
| Types d'issues (avancé) | Opérations GraphQL au-delà de MCP list_issue_types / paramètre type |
references/issue-types.md |
| Projects V2 | Tableaux de projet, rapports de progression, gestion des champs | references/projects.md |
| Champs d'issue | Métadonnées personnalisées : dates, priorité, texte, nombres (preview privé) | references/issue-fields.md |
| Images dans les issues | Incorporation d'images dans les corps d'issues et commentaires via CLI | references/images.md |