返回市场
索引服务器

索引服务器

作者:entrepeneur4lyf9 星标更新:2025-05-07

项目介绍

TSG Indexer

一个用于通过Tree-sitter Stack Graphs索引代码仓库的库,设计用于在MCP服务器和其他工具中使用。

概述

TSG Indexer 是一个使用Tree-sitter Stack Graphs分析代码仓库并构建代码结构图表示的Rust库。它捕捉定义与引用之间的关系,从而实现强大的代码导航和分析能力。

关键特性:

TSG Indexer 是一个使用 tree-sitter-stack-graphs 分析代码仓库并构建代码结构图表示的库。该图捕捉定义与引用之间的关系,从而实现强大的代码导航和分析能力。

支持20多种编程语言,包括Rust、Python、JavaScript、TypeScript、Java等。 递归目录遍历以进行全面的代码库分析。 多种输出格式(JSON、DOT图)。 通过功能标志可选的CLI和LSP支持。 能够生成不支持语言的TSG文件。 该库旨在集成到模型控制协议(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 - 语言服务器协议支持

安装

添加到你的Cargo.toml:

[dependencies]
tsg_indexer = { version = "0.1.0", features = ["cli", "lsp"] }

或者克隆并构建仓库:

# 克隆仓库
git clone https://github.com/entrepeneur4lyf/tsg_indexer.git
cd tsg_indexer

# 构建项目
cargo build --release

库使用

use tsg_indexer::{IndexerConfig, run_indexer};
use std::path::PathBuf;

fn main() -> anyhow::Result<()> {
    // 创建配置
    let config = IndexerConfig {
        path: PathBuf::from("src/"),
        format: "json".to_string(),
        output: Some(PathBuf::from("output.json")),
        verbose: true,
    };
    
    // 运行索引器
    run_indexer(config)
}

CLI 使用

当启用cli功能时:

# 索引单个文件
tsg_indexer_cli examples/test_rust.rs

# 递归索引目录
tsg_indexer_cli src/

# 输出为DOT格式
tsg_indexer_cli --format dot src/

# 输出到文件
tsg_indexer_cli --output graph.json src/

# 详细模式
tsg_indexer_cli --verbose src/

与MCP服务器集成

此库旨在用于模型控制协议(MCP)服务器中的代码索引和导航能力。它提供了使用tree-sitter和stack-graphs解析和分析代码仓库所需的核心功能。

MCP 集成

要与MCP服务器集成:

  1. 将tsg_indexer作为具有适当功能的依赖项添加
  2. 使用库的API索引代码并构建堆栈图
  3. 利用图数据进行代码导航、引用查找等

示例

# 索引examples目录(启用CLI功能)
tsg_indexer_cli examples/

# 默认情况下,输出将以JSON格式显示图结构

贡献

欢迎贡献!以下是你可以贡献的一些方式:

  • 报告错误
  • 添加对更多语言的支持
  • 改进错误处理
  • 添加更多的输出格式
  • 优化性能

许可证

MIT许可证 & Apache 2.0许可证 - 我不确定如何正确地许可这个项目,哈哈。

致谢