Retour à l'accueil

project-graph-mcp : graphe pour la navigation IA

Le serveur project-graph-mcp fournit une interface MCP pour construire un graphe de dépendances de code en JSON compressé. Prend en charge JavaScript, TypeScript, Python, Go avec des parseurs regex. Inclut des métriques de qualité, Health Score, tests JSDoc et intégration avec les pools d'agents.

Graphe de projet pour l'IA : project-graph-mcp en détail
Advertisement 728x90

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.

Google AdInline article slot

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és
  • s — 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.

Google AdInline article slot

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é :

Google AdInline article slot
  • get_dead_code — détecte le code inutilisé
  • get_complexity — mesure la complexité cyclomatique
  • get_large_files — identifie les fichiers nécessitant une refonte
  • get_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 incomplets
  • mark_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_rule depuis 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

Advertisement 728x90

Lire ensuite