项目简介

Repo2LLM代码仓库上下文服务器是一个基于 Model Context Protocol (MCP) 的后端服务,旨在帮助大型语言模型 (LLM) 更好地理解和处理代码仓库。它能够智能地扫描代码仓库,提取代码结构和内容,并以LLM友好的格式提供给客户端。通过预置的工具,LLM可以方便地获取代码仓库的信息,从而提升在代码分析、代码生成等任务中的性能。

主要功能点

  • 代码仓库扫描与转换: 支持本地仓库、GitHub 和 GitLab 仓库的代码扫描,并将代码仓库转换为结构化的文本格式,方便 LLM 理解。
  • 多种仓库类型支持: 支持处理本地文件系统中的代码仓库,以及远程的 GitHub 和 GitLab 仓库。
  • 工具化访问: 提供 'get_local_repo', 'get_github_repo', 'get_gitlab_repo' 等工具,允许 LLM 客户端通过 MCP 协议调用这些工具,获取特定仓库的代码内容。
  • 上下文信息提取: 提取代码仓库的结构、文件内容以及 README 文档等重要信息,为 LLM 提供丰富的上下文。
  • 易于集成: 作为一个 MCP 服务器,可以方便地与任何支持 MCP 协议的 LLM 客户端集成,为 LLM 应用提供代码仓库数据访问能力。

安装步骤

  1. 环境准备: 确保已安装 Python 环境。推荐使用 'uv' 包管理器,仓库 'README.md' 中提供了使用 'uv' 的安装示例。
  2. 下载仓库代码: 从 GitHub 克隆 'mcp-repo2llm' 仓库到本地。
  3. 安装依赖: 根据仓库 'README.md' 中的 'Installation' 部分,使用 'uv' 安装项目依赖。
  4. 配置Token (可选): 如果需要访问 GitHub 或 GitLab 私有仓库,请设置环境变量 'GITHUB_TOKEN' 和 'GITLAB_TOKEN'。

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到 Repo2LLM 代码仓库上下文服务器:

{
  "serverName": "mcp-repo2llm-server",
  "command": "uv",
  "args": [
    "run",
    "--with",
    "mcp[cli]",
    "--with-editable",
    "/path/to/mcp-repo2llm",  //  请替换为 mcp-repo2llm 仓库在您本地的路径
    "mcp",
    "run",
    "/path/to/mcp-repo2llm/mcp-repo2llm-server.py" // 请替换为 mcp-repo2llm-server.py 文件在您本地的路径
  ],
  "env":{
      "GITHUB_TOKEN":"your-github-token",  //  GitHub Token (可选,用于访问私有仓库)
      "GITLAB_TOKEN":"your-gitlab-token"   //  GitLab Token (可选,用于访问私有仓库)
  }
}

配置参数说明:

  • 'serverName': 服务器名称,设置为 '"mcp-repo2llm-server"'。
  • 'command': 启动服务器的命令,这里使用 'uv'。
  • 'args': 传递给 'uv run' 命令的参数列表:
    • '--with mcp[cli]': 指定使用 'mcp[cli]' 插件。
    • '--with-editable /path/to/mcp-repo2llm': 以可编辑模式引入本地仓库,'/path/to/mcp-repo2llm' 需要替换为实际的仓库路径。
    • 'mcp run': 运行 MCP 服务器。
    • '/path/to/mcp-repo2llm/mcp-repo2llm-server.py': 指定服务器启动脚本的路径,需要替换为实际路径。
  • 'env': 环境变量配置,用于设置 GitHub 和 GitLab 的访问 Token,如果不需要访问私有仓库可以不配置。

注意: 请将 '/path/to/mcp-repo2llm' 替换为您本地 'mcp-repo2llm' 仓库的实际路径。

基本使用方法

  1. 启动服务器: MCP 客户端根据上述配置信息启动 'Repo2LLM代码仓库上下文服务器'。
  2. 调用工具: LLM 客户端可以通过 MCP 协议调用服务器提供的工具,例如:
    • 调用 'get_github_repo' 工具并传入 GitHub 仓库 URL 和分支名,获取 GitHub 仓库的代码内容。
    • 调用 'get_gitlab_repo' 工具并传入 GitLab 仓库 URL 和分支名,获取 GitLab 仓库的代码内容。
    • 调用 'get_local_repo' 工具并传入本地仓库路径,获取本地仓库的代码内容。
  3. 获取代码上下文: 服务器将处理仓库并将代码内容以文本形式返回给 LLM 客户端,LLM 可以利用这些代码上下文信息进行后续的任务,如代码分析、代码补全等。

示例工具调用 (概念性,MCP客户端具体调用方式略有不同):

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "tool_name": "get_github_repo",
    "arguments": {
      "repo_url": "https://github.com/example/repo",
      "branch": "main"
    }
  },
  "id": "123"
}

服务器会返回包含仓库代码内容的 JSON-RPC 响应。

信息

分类

开发者工具