项目简介

Source Tree Generator 是一个 MCP 服务器,它可以扫描指定目录,并根据 '.gitignore' 文件的规则生成该目录的文件树结构的 JSON 数据。这个服务器旨在帮助大型语言模型(LLM),如 Claude,快速了解项目的目录结构,从而更好地理解代码库,并辅助进行代码编辑和分析等任务。

主要功能点

  • 生成文件树: 扫描指定目录,包括子目录和文件,并以 JSON 格式输出整个文件树结构。
  • '.gitignore' 支持: 遵守项目根目录下的 '.gitignore' 文件规则,自动排除在 '.gitignore' 中指定的文件和目录,避免无关文件干扰。
  • 目录过滤: 自动排除以 '.' 开头的隐藏目录。
  • 易于集成: 可以通过简单的配置集成到支持 MCP 协议的客户端,如 Claude for Desktop。

安装步骤

  1. 安装 uv: uv 是一个快速的 Python 包安装和管理工具。如果你的系统中没有安装 uv,请先安装它。打开终端并执行以下命令:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 下载项目代码: 将 'mcp-src-tree' 项目的代码克隆到本地。你可以使用 'git clone' 命令或者直接下载 ZIP 文件。

    git clone https://github.com/owayo/mcp-src-tree.git
    cd mcp-src-tree
  3. 安装依赖库: 在项目根目录下,使用 'uv sync' 命令安装项目所需的 Python 依赖库。

    uv sync

服务器配置

要将 Source Tree Generator MCP 服务器配置到 MCP 客户端(例如 Claude for Desktop),你需要提供服务器的启动命令和参数。以下是一个示例 'claude_desktop_config.json' 配置文件片段,展示了如何配置 'src-tree' 服务器:

{
    "mcpServers": {
        "src-tree": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/mcp-src-tree",  //  请替换为 mcp-src-tree 项目在您本地机器上的**绝对路径**
                "run",
                "tree.py"
            ]
        }
    }
}

配置参数说明:

  • '"src-tree"': 服务器的名称,可以自定义,用于在客户端中引用。
  • '"command": "uv"': 启动服务器的命令,这里使用 'uv run' 来运行 Python 脚本。
  • '"args"': 传递给 'uv run' 命令的参数列表。
    • '"--directory", "/path/to/mcp-src-tree"': 指定 'uv' 命令的工作目录为 'mcp-src-tree' 项目的根目录。请务必将 '/path/to/mcp-src-tree' 替换为您本地 'mcp-src-tree' 项目的绝对路径。 例如,如果你的项目在 '/Users/yourname/Documents/mcp-src-tree',则应替换为 '/Users/yourname/Documents/mcp-src-tree'。
    • '"run", "tree.py"': 告诉 'uv run' 执行项目根目录下的 'tree.py' 文件,即 MCP 服务器的入口脚本。

请注意: '/path/to/mcp-src-tree' 必须替换为 你本地机器上 'mcp-src-tree' 项目的实际绝对路径

基本使用方法

配置完成后,在支持 MCP 协议的客户端中,你可以通过指示 LLM (如 Claude) 来使用 'src-tree' 服务器的功能。例如,你可以向 Claude 发出类似以下的指令:

'请分析 /Users/xxx/GitHub/xxx/ 的源代码目录结构'

或者更简洁的:

'/Users/xxx/GitHub/xxx/ 的源码树'

重要提示:

  • 指令中指定的目录路径 '/Users/xxx/GitHub/xxx/' 应该是你想要查看文件树的 项目根目录
  • 要使 '.gitignore' 生效,'.gitignore' 文件必须位于你指定的 项目根目录 下。

服务器会将生成的文件树 JSON 数据返回给客户端,客户端可以将这些信息提供给 LLM,帮助 LLM 理解项目结构。 例如,Claude 可能会回复类似如下的信息,展示项目的文件结构:

はい、ソースツリーを確認させていただきます。
プロジェクトの構造を確認しました。以下のような構成になっています:
src/
└── xxxx/
    ├── __init__.py
    ├── converter.py
    ├── html_converter.py
    ├── image_processor.py
    ├── toc_analyzer.py
    └── utils.py

信息

分类

开发者工具