À propos du projet
Scantool est un outil d'analyse de structure de code conçu pour aider les agents de codage IA (Claude Code, Cursor, VS Code Copilot, et autres) à comprendre efficacement les bases de code. Au lieu de lire des fichiers entiers pour trouver une fonction ou une classe, les agents obtiennent une carte structurelle—chaque classe, fonction, appelant, et titre avec numéros de ligne—en un seul appel.
Il fonctionne à la fois comme un serveur MCP (Model Context Protocol) et une commande shell (`sct`), permettant aux agents de l'utiliser via l'une ou l'autre interface. L'outil est propulsé par des analyseurs tree-sitter pour plus de 20 langues et ne nécessite ni index, ni clés API, ni configuration au-delà d'une seule commande.
Les capacités clés incluent : la recherche de structures avec contexte englobant et pistes d'appelants ; le balayage d'un répertoire pour les points d'entrée, fonctions chaudes, et fichiers centraux ; la focalisation sur une fonction ou un titre avec son code textuel et un plan à un niveau ; le calcul de différences structurelles entre références git ; la recherche de sites d'appel réels d'une fonction ; la détection de chevauchements de branches et de conflits de fusion ; la vérification des changements de surface API publique ; l'identification de fonctions qui divergent des modèles d'appel frères ; et la résolution d'adresses à travers les références git.
Au-delà du code source, Scantool gère les documents—titres Markdown, tables et vues SQL, clés YAML/TOML/JSON, sélecteurs CSS, et plus—comme structure adressable avec plages de lignes.
L'outil analyse les fichiers à la demande et met en cache par ID de blob git, donc les mêmes octets à une référence, sur stdin, ou dans le processus suivant ne sont pas analysés deux fois. Les fonctions sont affichées comme squelettes condensés avec flux de contrôle, appels, et retours conservés tandis que les déclarations triviales sont repliées. Chaque réponse inclut une ligne de couverture comptant les fichiers vus, structures affichées, et ce qui a été exclu.
Mesuré sur des épisodes d'agents réels, Scantool a réduit l'utilisation de jetons de 25x pour les recherches ciblées (378 jetons contre 9 370 pour grep) et de 75 % pour les lectures focalisées (13 523 contre 54 337 jetons) avec une couverture de faits inchangée. Sur 22 épisodes, les agents Scantool ont atteint 88 % de couverture de faits contre 73 % pour les agents uniquement grep. Grep gagne toujours les recherches littérales simples et les aperçus de niveau supérieur par 1,4x et 1,6x respectivement.
Les langues prises en charge incluent Python, JavaScript, TypeScript, Rust, Go, C, C++, Java, PHP, C#, Ruby, Zig, Swift, SQL, HTML, CSS, SCSS, YAML, Markdown, cahiers Jupyter, texte brut, JSON, TOML, et images. Les fichiers cassés retombent sur l'extraction par regex.
Comparé à d'autres serveurs MCP d'exploration de code : Repomix empaquette tout le dépôt dans un seul fichier ; Serena utilise des serveurs de langage symbole par symbole et peut éditer du code ; claude-context utilise un index d'intégration avec une base de données vectorielle et nécessite des clés API. L'approche de Scantool—analyse à la demande sans index—évite ces coûts tout en extrayant la structure de documents qu'aucun des autres n'aborde.
L'installation nécessite uv, puis une seule commande pour enregistrer le serveur MCP. L'outil est sous licence MIT et construit sur FastMCP, tree-sitter, et uv.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.