/ Annuaire / Playground / Tree-sitter MCP
● Communauté wrale ⚡ Instantané

Tree-sitter MCP

par wrale · wrale/mcp-server-tree-sitter

Tree-sitter en MCP — donnez à Claude un accès au niveau AST pour qu'il modifie une fonction, pas 47 correspondances regex aléatoires.

tree-sitter-mcp encapsule les parseurs Tree-sitter comme outils MCP. Au lieu de demander à Claude de faire un grep dans le code, vous lui donnez get_function, list_symbols, find_calls. L'agent peut faire des modifications chirurgicales au niveau AST : « renommer uniquement la définition de la fonction, pas le littéral de chaîne qui correspond par hasard ».

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

tree-sitter-mcp.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "tree-sitter-mcp",
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "tree-sitter-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-tree-sitter"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add tree-sitter-mcp -- uvx mcp-server-tree-sitter

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : Tree-sitter MCP

Renommer une fonction sans renommer une chaîne qui correspond par coïncidence

👤 Devs effectuant des refactorisations ⏱ ~15 min intermediate

Quand l'utiliser : Vous voulez renommer validateTokenverifyToken sans aussi renommer la docstring qui dit « ceci valide le token ».

Déroulement
  1. Trouver la définition
    Utilise le MCP tree-sitter. Trouve la définition de validateToken — fonction uniquement, ignore les chaînes et commentaires.✓ Copié
    → Nœud AST avec fichier:ligne et type de nœud 'function_definition'
  2. Trouver les références
    Trouve tous les sites d'appel de validateToken — uniquement les correspondances de résolution d'identifiant.✓ Copié
    → Liste de références, pas de faux positifs dans les chaînes
  3. Renommer
    Renomme en verifyToken partout où c'est une vraie référence. Montre-moi le diff.✓ Copié
    → Diff avec N renommages aux positions d'identifiant uniquement

Résultat : Renommage propre qui ne touche pas les commentaires, chaînes ou docs.

Pièges
  • Dispatch dynamique / réflexion manqués — Combinez avec semble pour le rappel sémantique sur les usages dynamiques
Combiner avec : filesystem · semble-mcp

Extraire le corps exact d'une fonction pour une refactorisation extract-method

👤 Ingénieurs nettoyant des fonctions longues ⏱ ~20 min intermediate

Quand l'utiliser : Vous voulez extraire les lignes 42–87 d'une fonction dans un helper — chirurgicalement.

Déroulement
  1. Découper
    Montre-moi le nœud AST exact pour la boucle for à la ligne 42 dans handler.py.✓ Copié
    → Nœud de boucle avec plages en octets
  2. Extraire
    Déplace cette boucle dans une nouvelle fonction process_batch. Remplace l'original par un appel.✓ Copié
    → Diff de refactorisation respectant l'indentation et la portée d'origine

Résultat : Refactorisation qui compile du premier coup.

Pièges
  • Variables capturées non promues en arguments — Demandez à Claude d'énumérer les variables libres avant l'extraction

Calculer les métriques de complexité par fichier

👤 Managers engineering / audits de dette technique ⏱ ~25 min intermediate

Quand l'utiliser : Vous avez besoin d'une carte des points chauds de code complexe.

Déroulement
  1. Parcourir
    Pour chaque fichier .py sous src/, compte les définitions de fonctions et la complexité cyclomatique approximative via AST.✓ Copié
    → Table par fichier
  2. Classer
    Top 10 des fonctions les plus complexes — rapporter fichier, ligne, nom, score.✓ Copié
    → Liste classée des points chauds

Résultat : Backlog de refactorisation priorisé.

Pièges
  • Complexité cyclomatique ≠ lisibilité — Combinez avec le jugement du reviewer ; la métrique est un point de départ

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

tree-sitter-mcp + semble-mcp

Rappel sémantique (semble) + précision structurelle (tree-sitter)

Utilise semble pour trouver les sites d'appel probables, puis tree-sitter pour vérifier que chacun est un vrai identifiant.✓ Copié
tree-sitter-mcp + filesystem

Lire uniquement les plages dérivées de l'AST

Tree-sitter sur la plage de la fonction, puis filesystem pour extraire les octets exacts.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
parse_file path Obtenir l'AST complet d'un fichier gratuit
list_symbols path, kind? Inventaire de niveau supérieur gratuit
find_definition name, scope? Localiser où quelque chose est défini gratuit
find_references name Trouver les sites d'appel pour un renommage sûr gratuit
get_node path, byte_range or line_range Découper un nœud exact pour refactorisation gratuit

Coût et limites

Coût d'exécution

Quota d'API
Aucun — local
Tokens par appel
100–1500
Monétaire
Gratuit
Astuce
Découpez les nœuds, ne dumpez pas des fichiers entiers

Sécurité

Permissions, secrets, portée

Portées minimales : Lecture locale de fichiers
Stockage des identifiants : Aucun
Sortie de données : Aucune

Dépannage

Erreurs courantes et correctifs

Langage non supporté

Ajoutez la grammaire Tree-sitter correspondante ; consultez la liste supportée dans le README

Erreurs de parsing sur des fichiers partiels

Tree-sitter récupère mais signale des nœuds ERROR ; ignorez-les ou corrigez la syntaxe

Première exécution lente

La compilation de grammaire se fait une seule fois ; les exécutions suivantes sont rapides

Alternatives

Tree-sitter MCP vs autres

AlternativeQuand l'utiliserCompromis
ast-grepVous voulez un outil de recherche/remplacement structurel en CLIMoins intégré comme MCP
Serveurs de langage (LSP)Vous avez besoin d'une résolution de types complète, pas seulement syntaxiqueConfiguration plus lourde ; un serveur par langage

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills