このプロジェクトについて

Scantoolは、AIコーディングエージェント(Claude Code、Cursor、VS Code Copilotなど)がコードベースを効率的に理解できるように設計されたコード構造解析ツールです。関数やクラスを見つけるためにファイル全体を読む代わりに、エージェントは構造マップ(すべてのクラス、関数、呼び出し元、見出しと行番号)を1回の呼び出しで取得できます。 これは、MCP(Model Context Protocol)サーバーとシェルコマンド(`sct`)の両方として動作するため、エージェントはどちらのインターフェースでも使用できます。このツールは、20以上の言語のtree-sitterパーサーを利用しており、インデックス、APIキー、セットアップは不要で、1つのコマンドだけで済みます。 主な機能には、囲みコンテキストと呼び出し元の手がかりを含む構造の検索、ディレクトリ内のエントリポイント、ホット関数、中心的なファイルのスキャン、単一の関数または見出しにその逐語的なコードと1レベルのアウトラインで焦点を当てる、git参照間の構造差分の計算、関数の実際の呼び出しサイトの検索、ブランチの重複とマージ競合の検出、公開APIサーフェスの変更の確認、兄弟呼び出しパターンから逸脱する関数の特定、git参照間のアドレスの解決などがあります。 ソースコードに加えて、Scantoolはドキュメント(Markdown見出し、SQLテーブルとビュー、YAML/TOML/JSONキー、CSSセレクタなど)を行範囲を持つアドレス可能な構造として処理します。 このツールは、ファイルをオンデマンドで解析し、git blob IDでキャッシュするため、参照、stdin、または次のプロセスで同じバイトが2回解析されることはありません。関数は、制御フロー、呼び出し、戻り値を保持し、自明なステートメントを折りたたんだ凝縮されたスケルトンとして表示されます。すべての回答には、表示されたファイル数、表示された構造、除外されたものを数えるカバレッジ行が含まれます。 実際のエージェントエピソードで測定したところ、Scantoolは、ターゲット検索でトークン使用量を25倍(grepの9,370トークンに対して378トークン)、フォーカスリードで75%削減(54,337トークンに対して13,523トークン)し、事実カバレッジは変わりませんでした。22のエピソードにわたって、Scantoolエージェントは88%の事実カバレッジを達成し、grepのみのエージェントは73%でした。grepは、プレーンなリテラル検索とトップレベルの概要でそれぞれ1.4倍と1.6倍の優位性を維持しています。 サポートされている言語には、Python、JavaScript、TypeScript、Rust、Go、C、C++、Java、PHP、C#、Ruby、Zig、Swift、SQL、HTML、CSS、SCSS、YAML、Markdown、Jupyterノートブック、プレーンテキスト、JSON、TOML、画像が含まれます。壊れたファイルは正規表現抽出にフォールバックします。 他のコード探索MCPサーバーと比較すると、Repomixはリポジトリ全体を1つのファイルにパックし、Serenaは言語サーバーをシンボルごとに使用しコードを編集でき、claude-contextはベクトルデータベースを持つ埋め込みインデックスを使用しAPIキーが必要です。Scantoolのアプローチ(インデックスなしのオンデマンド解析)は、これらのコストを回避しながら、他のどのツールも扱わないドキュメント構造も抽出します。 インストールにはuvが必要で、その後MCPサーバーを登録するための1つのコマンドが必要です。このツールはMITライセンスで、FastMCP、tree-sitter、uv上に構築されています。