project-graph-mcp : Graphique des dépendances pour la navigation des agents IA dans le code
Les systèmes de développement multi-agents exigent une navigation précise au sein des bases de code. Le serveur project-graph-mcp fournit une interface MCP pour construire un graphique des dépendances, compressé sous forme JSON minifiée. Cela permet aux agents de comprendre l'architecture du projet sans consommer de jetons lors de l'analyse des fichiers sources.
Le serveur analyse les fichiers, extrait les classes, méthodes, imports et retourne une structure compressée entre 10 et 50 fois. La prise en charge de JavaScript, TypeScript, Python et Go permet une opération fluide dans les projets polyglottes.
Skeleton du projet en format compressé
La fonction principale consiste à générer un "squelette" du projet. Le parseur scanne les fichiers sources et produit une sortie JSON contenant des légendes, des statistiques et un graphe de nœuds.
Exemple de sortie :
{
"L": { "SN": "SymNode", "SNG": "SymNodeGraph" },
"s": { "files": 23, "classes": 10, "functions": 65 },
"n": { "SN": { "m": 11, "$": 7 }, "SNG": { "m": 16, "$": 5 } },
"e": 35, "o": 7, "d": 5, "F": 63
}
L— légende des noms abrégéss— statistiques (fichiers, classes, fonctions)n— nœuds avec méthodes (m) et propriétés ($)e,o,d,F— arêtes, objets, répertoires, fichiers
Pour une exploration approfondie, utilisez les méthodes expand et deps pour étendre dynamiquement le graphe.
Analyse multi-langage sans AST
Initialement conçu avec Acorn pour JavaScript. La version 1.1 a ajouté des parseurs pour TypeScript, Python et Go utilisant des expressions régulières. Cette approche élimine les dépendances externes tout en respectant les spécificités propres à chaque langage.
Une utilité partagée stripStringsAndComments supprime les chaînes et commentaires du code :
// Python
stripStringsAndComments(code, { tripleQuote: true, hashComment: true })
// Go
stripStringsAndComments(code, { backtick: true, templateInterpolation: false })
// TypeScript (par défaut)
stripStringsAndComments(code)
Tous les parseurs convergent vers ParseResult : classes, fonctions, imports, appels. Les motifs regex s’adaptent au style du projet.
Analyse du code et score de santé
Le serveur intègre des métriques de qualité :
get_dead_code— détecte le code inutiliséget_complexity— mesure la complexité cyclomatiqueget_large_files— identifie les fichiers nécessitant une refonteget_call_chain— suit les chaînes d'appel (authMiddleware → validateToken → renderDashboard)
Commandes :
# Vérification des dépendances obsolètes
npx project-graph-mcp outdated .
# Analyse de complexité
npx project-graph-mcp complexity src/
Les résultats se regroupent en un Score de Santé (0–100). Les indications de réponse suggèrent les prochaines étapes, comme revoir les fonctions complexes.
Checklists de tests via JSDoc
Prise en charge des annotations @test et @expect pour documenter les tests :
/**
* Créer un nouvel utilisateur via l'API
*
* @test request: POST /api/users avec des données valides
* @expect status: 201 Created
*/
async createUser(data) { ... }
get_pending_tests— liste les tests incompletsmark_test_passed— marque un test comme terminé
Supporte les tests API, CLI, d'intégration et navigateur.
Personnalisation pour les frameworks
Ensembles de règles intégrés pour React 18/19, Vue 3, Express 5, TypeScript 5, Symbiote.js (11 ensembles, 86 règles au total). Détection automatique du framework via get_framework_reference.
Pour des conventions personnalisées :
- Ajoutez des règles dans
rules/ - Utilisez
set_custom_ruledepuis l'agent
Intégration avec les pools d'agents
Dans une orchestration fractale, l'agent IDE demande le squelette et délègue les tâches aux workers (Gemini, etc.). Chaque worker exécute une instance locale MCP pour la navigation via expand/deps.
Seulement 132 Ko, aucune dépendance externe. Configuration pour VS Code, Cursor, Zed :
{
"mcpServers": {
"project-graph": {
"command": "npx",
"args": ["-y", "project-graph-mcp"]
}
}
}
Sécurité et protection contre les parcours de chemins
La validation des chemins utilise resolve + startsWith pour limiter l'accès au répertoire de travail. Les méthodes comme expand, deps et get_skeleton héritent de cette protection — une requête comme ../../etc/passwd renvoie une erreur.
Points forts :
- Graphiques de dépendances compressés accélèrent la navigation des agents IA
- Parseurs basés sur des regex pour JS/TS/Python/Go sans bibliothèques externes
- Score de santé et analyse des chaînes d'appel pour une refonte ciblée
- Checklists JSDoc automatisent la documentation des tests
- 86 règles prédéfinies pour les frameworks populaires dès la mise en œuvre
— Editorial Team
Aucun commentaire pour le moment.