使用说明

项目简介

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 描述。

信息

分类

开发者工具