使用说明
项目简介
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 编辑器。
安装步骤
- 克隆仓库: 将 'git-prompts-mcp-server' 仓库克隆到本地。
- 安装依赖: 在仓库根目录下运行 '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 描述。
信息
分类
开发者工具