TSG Indexer
by entrepeneur4lyf
TSG Indexer is a Rust library for indexing code repositories using Tree-sitter Stack Graphs. It's designed to analyze code structure and capture relationships between definitions and references across files.
Last updated: N/A
TSG Indexer
A library for indexing code repositories using Tree-sitter Stack Graphs, designed to be used in MCP servers and other tools.
Overview
TSG Indexer is a Rust library that uses Tree-sitter Stack Graphs to analyze code repositories and build graph representations of code structure. It captures relationships between definitions and references across files, enabling powerful code navigation and analysis capabilities.
Key features:
TSG Indexer is a library that uses tree-sitter-stack-graphs to analyze code repositories and build a graph representation of the code structure. This graph captures the relationships between definitions and references across files, enabling powerful code navigation and analysis.
Support for 20+ programming languages including Rust, Python, JavaScript, TypeScript, Java, and more Recursive directory traversal for comprehensive codebase analysis Multiple output formats (JSON, DOT graph) Optional CLI and LSP support via feature flags Ability to generate TSG files for unsupported languages The library is designed to be integrated with Model Control Protocol (MCP) servers and other tools that need code indexing and navigation capabilities. It leverages the tree-sitter parsing system and stack-graphs technology from GitHub to create a comprehensive code analysis solution.
Features
- Support for multiple languages:
- Rust
- Python
- JavaScript
- TypeScript
- Java
- Swift
- Objective-C
- CSS
- Scala
- Zig
- YAML
- Go
- PHP
- XML
- JSDoc
- Bash
- JSON
- HTML
- C#
- Ruby
- Markdown
- Lua
- Dart
- And more!
- Recursive directory traversal
- Multiple output formats:
- JSON
- DOT graph
- Feature flags for optional functionality:
cli
- Command-line interface supportlsp
- Language Server Protocol support
Installation
Add to your Cargo.toml:
[dependencies]
tsg_indexer = { version = "0.1.0", features = ["cli", "lsp"] }
Or clone and build the repository:
# Clone the repository
git clone https://github.com/entrepeneur4lyf/tsg_indexer.git
cd tsg_indexer
# Build the project
cargo build --release
Library Usage
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 Usage
When built with the cli
feature:
# 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/
Use with MCP Servers
This library is designed to be used in Model Control Protocol (MCP) servers for code indexing and navigation capabilities. It provides the core functionality needed for parsing and analyzing code repositories with tree-sitter and stack-graphs.
MCP Integration
To integrate with an MCP server:
- Add tsg_indexer as a dependency with appropriate features
- Use the library's API to index code and build stack graphs
- Leverage the graph data for code navigation, reference finding, and more
Example
# Index the examples directory (with CLI feature enabled)
tsg_indexer_cli examples/
# The output will show the graph structure in JSON format by default
Contributing
Contributions are welcome! Here are some ways you can contribute:
- Report bugs
- Add support for more languages
- Improve error handling
- Add more output formats
- Optimize performance
License
MIT License & Apache 2.0 License - I am not 100% sure how to properly license this lol.