TSG Indexer について
TSG Indexerは、Tree-sitter Stack Graphsを使ってリポジトリのコードグラフを構築するRustライブラリです。多くのプログラミング言語に対応し、JSONやDOTで出力でき、開発者やツール制作者向けにCLIとLSPの機能も任意で利用できます。
主な機能
- 01多くの言語をインデックス化
- 02ディレクトリの再帰的走査
- 03定義と参照のグラフ化
- 04JSONとDOTへの出力
- 05任意のCLI機能
- 06任意のLSP機能
活用シーン
- 01コードナビゲーション用のリポジトリ索引を作成
- 02ファイル間の定義と参照の関係を特定
- 03MCPサーバーでグラフデータを利用
MCP 対応
TSG IndexerはMCPサーバーへの組み込みを想定したライブラリで、コードナビゲーションや参照検索向けの索引とグラフデータを提供します。プロジェクト自体はMCPサーバーとして説明されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TSG Indexer
Tree-sitter Stack Graphs を使用してコードリポジトリをインデックス化するライブラリです。MCP サーバーやその他のツールでの使用を想定して設計されています。
概要
TSG Indexer は、Tree-sitter Stack Graphs を使用してコードリポジトリを分析し、コード構造のグラフ表現を構築する Rust ライブラリです。ファイル間の定義と参照の関係を捉えることで、高度なコードナビゲーションおよび分析機能を実現します。
主な機能:
TSG Indexer は、tree-sitter-stack-graphs を使用してコードリポジトリを分析し、コード構造のグラフ表現を構築するライブラリです。このグラフは、ファイル間の定義と参照の関係を捉え、高度なコードナビゲーションおよび分析を可能にします。
Rust、Python、JavaScript、TypeScript、Java など、20 以上のプログラミング言語をサポート 包括的なコードベース分析のための再帰的なディレクトリ走査 複数の出力形式(JSON、DOT グラフ) 機能フラグによる任意の CLI および LSP サポート 未対応言語向けに TSG ファイルを生成する機能 このライブラリは、コードのインデックス化およびナビゲーション機能を必要とする Model Control Protocol(MCP)サーバーやその他のツールに統合できるよう設計されています。GitHub の tree-sitter 解析システムと stack-graphs 技術を活用し、包括的なコード分析ソリューションを実現します。
機能
- 複数の言語をサポート:
- Rust
- Python
- JavaScript
- TypeScript
- Java
- Swift
- Objective-C
- CSS
- Scala
- Zig
- YAML
- Go
- PHP
- XML
- JSDoc
- Bash
- JSON
- HTML
- C#
- Ruby
- Markdown
- Lua
- Dart
- その他多数!
- 再帰的なディレクトリ走査
- 複数の出力形式:
- JSON
- DOT グラフ
- 任意の機能を有効にする機能フラグ:
cli- コマンドラインインターフェースのサポートlsp- Language Server Protocol のサポート
インストール
Cargo.toml に追加します:
[dependencies]
tsg_indexer = { version = "0.1.0", features = ["cli", "lsp"] }
または、リポジトリをクローンしてビルドします:
# Clone the repository
git clone https://github.com/entrepeneur4lyf/tsg_indexer.git
cd tsg_indexer
# Build the project
cargo build --release
ライブラリの使用方法
use tsg_indexer::{IndexerConfig, run_indexer};
use std::path::PathBuf;
fn main() -> anyhow::Result<()> {
// Create configuration
let config = IndexerConfig {
path: PathBuf::from("src/"),
format: "json".to_string(),
output: Some(PathBuf::from("output.json")),
verbose: true,
};
// Run the indexer
run_indexer(config)
}
CLI の使用方法
cli 機能を有効にしてビルドした場合:
# Index a single file
tsg_indexer_cli examples/test_rust.rs
# Index a directory recursively
tsg_indexer_cli src/
# Output in DOT format
tsg_indexer_cli --format dot src/
# Output to a file
tsg_indexer_cli --output graph.json src/
# Verbose mode
tsg_indexer_cli --verbose src/
MCP サーバーでの使用
このライブラリは、コードのインデックス化およびナビゲーション機能を提供する Model Control Protocol(MCP)サーバーでの使用を想定して設計されています。tree-sitter と stack-graphs を使用してコードリポジトリを解析・分析するために必要な中核機能を提供します。
MCP との統合
MCP サーバーに統合するには:
- 適切な機能を指定して、tsg_indexer を依存関係に追加します
- ライブラリの API を使用してコードをインデックス化し、stack graph を構築します
- グラフデータを活用して、コードナビゲーションや参照の検索などを行います
例
# Index the examples directory (with CLI feature enabled)
tsg_indexer_cli examples/
# The output will show the graph structure in JSON format by default
コントリビューション
コントリビューションを歓迎します!以下の方法で貢献できます:
- バグを報告する
- 対応言語を追加する
- エラー処理を改善する
- 出力形式を追加する
- パフォーマンスを最適化する
ライセンス
MIT License & Apache 2.0 License - 適切なライセンスの適用方法が完全にはわかっていません(笑)。
謝辞
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。