15 mai 2026
Pourquoi un MCP de revue de code — et pas seulement le chat Cursor
Donner à l’agent des actions concrètes sur GitHub plutôt qu’un gros prompt « regarde mon repo ».
- MCP
- Code review
- GitHub
Demander à Cursor « fais une code review » sur un gros diff, c’est pratique une fois. En répétition — PRs open source, projets clients, mes propres repos — tu veux quelque chose de reproductible : mêmes axes (bugs, sécurité, tests manquants), mêmes sorties, sans re-expliquer le contexte à chaque session.
L’intérêt du MCP ici
ai-code-reviewer-mcp n’est pas une « meilleure prompt engineering ». C’est exposer des outils : lire le diff, cibler un fichier, formuler un commentaire PR. L’agent choisit les étapes ; moi je contrôle ce qu’il a le droit de toucher. Ça évite les reviews vague-du-vendredi et ça s’accroche au modèle distant (tokens gratuits) dont je parle dans l’autre article.
Pourquoi c’est utile pour moi
- Open source : feedback structuré avant de merge, sans ouvrir cinq onglets.
- Même logique branchée sur mon Qwen distant (vLLM sur AWS) — pas de surcoût Cursor par review.
- Démo Gradio sur Hugging Face pour montrer le concept sans installer MCP.
- Template pour d’autres intégrations « l’AI agit sur un vrai système ».
Comment c’est monté (en bref)
Serveur MCP TypeScript (stdio) + Octokit pour GitHub + client OpenAI-compatible branché sur le Qwen servi en vLLM sur AWS. Les outils découpent la review : lister les fichiers du diff, récupérer un hunk, analyser avec un prompt ciblé (bug / sécurité / dette / tests).
- `list_changed_files` / `get_file_diff` — contexte minimal, pas le repo entier.
- `analyze_snippet` — un focus à la fois, sortie JSON structurée.
- Même stack LLM que Cursor (base URL custom) → tokens gratuits, pas de double facturation.
- Space Gradio sur Hugging Face : même moteur d’analyse, sans couche MCP, pour démo publique.
// Un outil = une responsabilité
server.tool('analyze_snippet', { path, diffHunk, focus }, async (input) => {
const findings = await llmReview(input) // → vLLM AWS
return { content: [{ type: 'text', text: JSON.stringify(findings) }] }
})En bref
Je n’ai pas construit ça pour remplacer un humain en review finale. Je l’ai construit pour automatiser la première passe — celle que personne n’a envie de refaire à la main — et pour prouver que MCP + LLM self-hosted, c’est un combo crédible en dehors des demos Twitter.