项目简介

"Git 仓库管理 MCP 服务器" 是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在为大型语言模型 (LLM) 客户端提供标准化的Git仓库管理能力。它允许LLM通过调用预定义的工具,执行Git克隆、拉取、以及其他自定义Git命令,实现对代码仓库的自动化操作。

主要功能点

  • 远程Git操作: 支持通过MCP客户端远程执行Git克隆(Clone)、拉取(Pull)等操作。
  • 并行处理: 能够并行处理多个Git仓库的克隆或拉取请求,提高效率。
  • 自定义Git命令: 提供一个通用工具,允许LLM客户端执行任何有效的Git命令。
  • 默认分支管理: 可配置在拉取或克隆后自动切换到默认分支。
  • 灵活配置: 支持通过环境变量或MCP客户端配置,指定仓库目录、线程数、项目列表文件等。
  • LLM集成: 作为MCP服务器,专为Agentic AI设计,方便LLM作为智能代理直接调用其功能。

安装步骤

  1. 安装Python包: 确保您的系统安装了Python,然后通过pip安装项目:
    python -m pip install repository-manager
  2. 通过Docker部署(推荐作为MCP服务): 拉取最新Docker镜像:
    docker pull knucklessg1/repository-manager:latest

服务器配置

MCP客户端需要配置MCP服务器的启动命令及其参数才能与之连接。以下是一个标准的JSON格式配置示例,您需要将其整合到MCP客户端的配置中(例如,'mcp.json'文件)。此配置描述了如何启动并连接到Git仓库管理MCP服务器:

{
  "mcpServers": {
    "repository_manager": {
      "command": "uv", // 或 'python',取决于您的环境和uv安装情况。'uv'是Python包管理器。
      "args": [
        "run",
        "--with",
        "repository-manager", // 确保此Python包已安装并可用
        "repository-manager-mcp", // 启动MCP服务器的Python模块
        "--transport", "http", // 指定MCP服务器的通信协议,可选 "stdio" 或 "http"
        "--host", "0.0.0.0", // 如果使用HTTP传输,这是服务器监听的IP地址
        "--port", "8001" // 如果使用HTTP传输,这是服务器监听的端口
      ],
      "env": {
        "REPOSITORY_MANAGER_DIRECTORY": "/root/Development/",                       // 可选:Git仓库的默认根目录,所有Git操作将在此目录或其子目录中执行。
        "REPOSITORY_MANAGER_THREADS": "12",                                        // 可选:并行Git操作(如克隆、拉取)时使用的线程数,默认为6。
        "REPOSITORY_MANAGER_DEFAULT_BRANCH": "True",                               // 可选:设置为"True"时,克隆或拉取后会自动切换到仓库的默认分支。
        "REPOSITORY_MANAGER_PROJECTS_FILE": "/root/Development/repositories.txt"   // 可选:一个文本文件的路径,其中包含一行一个Git仓库URL,用于批量操作。
      },
      "timeout": 300000 // MCP服务器启动或工具执行的超时时间,单位毫秒。
    }
  }
}

基本使用方法

一旦MCP服务器启动并被MCP客户端识别,LLM就可以通过调用服务器提供的工具来执行Git操作。例如,LLM客户端可能会以某种方式生成以下工具调用请求(伪代码表示),MCP服务器将接收这些请求,执行相应的Git操作,并将结构化的结果返回给LLM客户端:

// 示例1: LLM请求克隆一个文件列表中的所有仓库
call_tool("clone_projects", {
    "projects_file": "/home/genius/Development/repositories-list/repositories.txt",
    "repository_directory": "/home/genius/Development"
})

// 示例2: LLM请求拉取指定目录下的所有仓库更新
call_tool("pull_projects", {
    "repository_directory": "/home/genius/Development"
})

// 示例3: LLM请求执行一个自定义Git命令
call_tool("git_action", {
    "command": "git status",
    "repository_directory": "/home/genius/Development/my_project"
})

信息

分类

开发者工具