项目简介
该项目是一个遵循Model Context Protocol (MCP) 的后端服务,旨在为大型语言模型(LLM)提供与GitHub拉取请求(PR)交互的能力。通过此服务,LLM可以检索PR中的评审评论,并将其转换为结构化的Markdown格式规范,从而辅助代码评审、文档生成等任务。
主要功能点
- 获取PR评审评论: 能够从指定的GitHub拉取请求URL,或自动检测当前Git仓库对应的PR中,获取所有评审评论。支持Markdown(默认)和JSON两种输出格式,方便LLM理解或进行数据处理。
- 自动解析PR URL: 具备智能解析能力,能根据当前的Git仓库信息(如所有者、仓库名、分支),自动定位并返回对应的开放中拉取请求的URL,简化LLM的使用流程。
- 安全与可配置: 支持通过GitHub个人访问令牌(PAT)进行认证,确保API调用的安全性。同时,提供灵活的参数配置,允许用户精细控制API请求的分页、最大评论数和重试机制。
- LLM集成: 作为MCP协议的后端服务,它可以与任何支持MCP的LLM客户端(如Claude Code、Codex CLI、Gemini CLI等)无缝集成,极大地扩展了LLM在代码协作和项目管理方面的功能。
安装步骤
- 安装Python: 确保您的系统已安装Python 3.9或更高版本。
- 安装uv (推荐):
- 在 macOS 或 Linux 上,打开终端运行:'curl -LsSf https://astral.sh/uv/install.sh | sh'
- 在 Windows 上,打开PowerShell运行:'powershell -c "irm https://astral.sh/uv/install.ps1 | iex"'
- 或者,您也可以使用pip安装:'pip install uv'
- 克隆仓库:
git clone https://github.com/cool-kids-inc/github-pr-review-mcp-server cd github-pr-review-mcp-server - 安装依赖:
- 安装生产环境依赖:'uv pip install -e .'
- 或者安装所有依赖(包括开发依赖):'uv sync --all-extras'
- 配置GitHub Token: 在项目根目录下创建一个名为 '.env' 的文件,并添加您的GitHub个人访问令牌:
请确保您的GitHub令牌拥有足够的权限。对于公共仓库,'public_repo' 权限通常足够;对于私有仓库,需要 'repo' 权限。建议使用最小权限原则。GITHUB_TOKEN=your_github_token_here
服务器配置 (MCP客户端使用)
MCP服务器通过标准输入/输出流与MCP客户端通信。为了使您的MCP客户端(例如Claude Code、Codex CLI或Gemini CLI)能够连接并使用此服务器,您需要配置客户端以知道如何启动此服务器。
- 服务器名称 (Server Name): 您可以在客户端配置中将其命名为 'pr-review-spec' 或 'github_review_spec_generator'。这是客户端识别此服务器的名称。
- 启动命令 (Command): 用于启动此MCP服务器的命令是 'uv'。
- 命令参数 (Args): 传递给启动命令的参数列表是 '["run", "python", "mcp_server.py"]'。这些参数告诉 'uv' 运行哪个Python脚本。
- 环境变量 (Env): 如果您的 'GITHUB_TOKEN' 未在系统环境变量中设置或未写入项目根目录的 '.env' 文件,您可能需要在客户端配置中提供它,例如 '{"GITHUB_TOKEN": "您的GitHub个人访问令牌"}'。
如何配置: 具体的配置方法取决于您使用的MCP客户端工具。通常,您会在客户端的配置文件(如Claude Code的MCP配置、'~/.codex/config.toml' 或 '~/.gemini/settings.json')中添加一个条目,指定上述服务器名称、启动命令、参数和环境变量。请参考您的MCP客户端工具的官方文档获取详细的配置指南。
基本使用方法
- 启动服务器: 在项目根目录下,运行以下命令启动MCP服务器:
服务器将通过标准输入/输出监听来自MCP客户端的请求。./run-server.sh # 或者直接使用 uv 运行 uv run python mcp_server.py - 通过MCP客户端调用: 连接此MCP服务器的LLM客户端现在可以通过调用服务器暴露的工具来获取GitHub PR评论或解析PR URL。
- 获取PR评论: LLM客户端可以调用 'fetch_pr_review_comments' 工具。您需要提供GitHub PR的完整URL,例如 'pr_url: "https://github.com/owner/repo/pull/123"'。
- 解析PR URL: 如果LLM客户端需要自动获取当前Git仓库对应的开放中PR的URL,可以调用 'resolve_open_pr_url' 工具。
- LLM客户端将接收到根据请求格式(Markdown或JSON)生成的评审规范或原始数据作为响应。
信息
分类
开发者工具