Git Prompt MCP Server

使用说明

项目简介

Git Prompt MCP Server 是一个实现了 Model Context Protocol (MCP) 的服务器,专注于为 LLM 客户端提供 Git 仓库相关的上下文信息,以生成更智能的代码提交和审查相关的 Prompt。它允许 LLM 基于 Git 仓库的差异 (Diff) 生成 Pull Request (PR) 描述等内容,提高开发效率。

主要功能点

  • 生成PR描述: 根据当前分支与目标分支或 Commit 之间的代码差异,自动生成 Pull Request 的描述信息。
  • 可配置的排除规则: 允许用户自定义排除文件或目录,避免在 Diff 结果中包含不必要的文件,例如 lock 文件、gitignore 文件等。
  • 支持多种Diff格式: 支持 JSON 和纯文本两种 Diff 结果格式,方便 LLM 客户端根据需求解析和使用。
  • 标准MCP服务器: 遵循 MCP 协议,易于与支持 MCP 协议的 LLM 客户端集成,例如 Zed 编辑器。

安装步骤

  1. 克隆仓库: 将 'git-prompts-mcp-server' 仓库克隆到本地。
  2. 安装依赖: 在仓库根目录下运行 'uv sync --frozen' 命令安装项目依赖。 (确保已安装 'uv' 包管理器)

服务器配置

要将 Git Prompt MCP Server 集成到 MCP 客户端 (例如 Zed 编辑器) 中,需要配置服务器的启动命令。以下是配置示例,请根据实际情况修改路径:

"context_servers": {
  "git_prompt_mcp": {
    "command": {
      "path": "uv",  // 启动命令,这里假设使用 uv 包管理器运行 Python 脚本
      "args": [
        "--directory",
        "/path/to/local/git_prompts_mcp_server", //  **[请替换为实际的仓库本地路径]** 指向 'git-prompts-mcp-server' 仓库的根目录
        "run",
        "git-prompts-mcp-server", // 运行的 Python 模块名
        "/path/to/repo/", // **[请替换为实际的Git仓库父目录]**  指向你要分析的 Git 仓库的父文件夹,服务器会查找该文件夹下的 '.git' 目录
        "--excludes", //  排除规则参数,用于排除不需要包含在 Diff 结果中的文件或目录
        "**/uv.lock",  // 示例排除规则:排除所有目录下的 'uv.lock' 文件
        "--excludes",
        "**/.gitignore", // 示例排除规则:排除所有目录下的 '.gitignore' 文件
        "--format", //  Diff 结果格式参数
        "json"  // Diff 结果格式,可选 "json" 或 "text"
      ]
    },
    "settings": {}
  }
}

配置说明:

  • 'path: "uv"': 指定使用 'uv' 命令来运行 Python 脚本。你需要确保你的环境中安装了 'uv' 包管理器,并且 'uv' 命令在 PATH 环境变量中。如果使用其他方式运行 Python 脚本,请相应修改 'path' 和 'args'。
  • '--directory: "/path/to/local/git_prompts_mcp_server"': 指定 'uv' 命令的工作目录为 'git-prompts-mcp-server' 仓库的根目录。 请务必替换为实际的仓库本地路径。
  • 'run git-prompts-mcp-server': 告诉 'uv' 运行 'git-prompts-mcp-server' 模块,这会执行 'src/git_prompts_mcp_server/main.py' 或 'src/git_prompts_mcp_server/init.py' 中的 'entry_point' 函数。
  • '/path/to/repo/': 请务必替换为你要分析的 Git 仓库的父目录的实际路径。 服务器会在此目录下查找 '.git' 目录来定位 Git 仓库。
  • '--excludes': 可以多次使用 '--excludes' 参数来添加多个排除规则。 规则使用 'fnmatch' 模式匹配文件名或路径。
  • '--format': 指定 Diff 结果的格式,'json' 格式更易于程序解析,'text' 格式为纯文本 Diff。

基本使用方法

配置完成后,在 MCP 客户端中 (例如 Zed 编辑器) 可以使用以下命令来触发 Prompt 生成:

  • '/generate-pr-desc <ancestor_branch_or_commit>': 生成 PR 描述。 '<ancestor_branch_or_commit>' 需要替换为作为 Diff 基准的分支名或 Commit SHA,例如 'main' 或 'develop' 或具体的 Commit SHA 值。

示例:

在 Zed 编辑器中,假设你希望基于当前分支与 'main' 分支的差异生成 PR 描述,你可以在编辑器中输入并执行命令:

/generate-pr-desc main

服务器会将 Git Diff 结果作为上下文信息返回给客户端,客户端可以将此信息用于后续的 LLM Prompt 交互,例如发送给 LLM 生成 PR 描述。

服务器信息