TSG Indexer
@entrepeneur4lyf
A library for indexing code repositories using Tree-sitter Stack Graphs, designed to be used in MCP servers and other tools.
Overview
What is TSG Indexer?
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 code navigation and analysis for MCP servers and other tools.
How to use TSG Indexer?
Add it as a dependency in your Rust project's Cargo.toml with optional cli and lsp features. Use the IndexerConfig and run_indexer API to index a file or directory. If built with CLI support, run tsg_indexer_cli with a path and optional flags for output format and file.
Key features of TSG Indexer
- Supports 20+ programming languages including Rust, Python, JavaScript, and more
- Recursive directory traversal for comprehensive codebase analysis
- Output formats: JSON and DOT graph
- Optional CLI and LSP support via feature flags
- Ability to generate TSG files for unsupported languages
Use cases of TSG Indexer
- Integrate code indexing and navigation into an MCP server
- Build graph representations of code structure for analysis tools
- Find definitions and references across files in a multi-language project
FAQ from TSG Indexer
What dependencies does TSG Indexer require?
It requires tree-sitter and stack-graphs libraries, both from GitHub.
What programming languages are supported out of the box?
It supports 22 languages explicitly listed: 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.
Where does the indexed data live?
Data is output to a file or stdout in the chosen format; no persistent storage is managed by the library itself.
What transports or authentication does TSG Indexer use?
The README does not mention any network transports or authentication mechanisms; it is a local library/CLI tool.
What are the known limits?
The README does not state any limits, but the library is in early development (version 0.1.0).