这是一个GitHub拉取请求(Pull Request, PR)代码评审工具,它包含一个命令行界面和一个可以通过Model Context Protocol (MCP) 访问的服务器端。本说明侧重于如何使用其MCP服务器功能。
项目简介
该项目能够获取指定GitHub PR的差异(diff),将其发送给OpenAI的大模型进行分析,并生成结构化的代码评审意见。其MCP服务器部分允许兼容MCP的客户端(如某些AI开发环境或IDE插件)通过协议调用此功能,从而在客户端环境中集成AI代码评审能力。
主要功能点
- 获取GitHub PR差异: 连接到GitHub API,获取指定仓库和PR的全部代码变动。
- 调用AI进行分析: 将获取的PR差异作为输入,通过OpenAI API调用预设的大模型(如GPT-4o)进行代码质量、潜在问题、改进建议等方面的分析。
- 生成评审报告: 将AI的分析结果整理成Markdown格式的评审报告内容。
- 通过MCP提供能力: 将上述代码评审功能封装为一个MCP工具(Tool),允许MCP客户端远程调用,并获取Markdown格式的评审报告内容。
安装步骤
- 克隆仓库:
git clone https://github.com/NikosTsompanides/pr-reviewer-cli.git cd pr-reviewer-cli - 安装依赖:
npm install - 构建项目: 这会同时构建命令行工具和MCP服务器。
npm run build - 配置环境变量: 复制'.env.sample'文件到'.env',并填入你的GitHub Token和OpenAI API Key。
编辑'.env'文件:cp .env.sample .envGITHUB_TOKEN=<你的GitHub Token> OPENAI_API_KEY=<你的OpenAI API Key>
服务器配置(供MCP客户端使用)
作为MCP服务器,它不直接运行一个独立的监听端口,而是设计为由MCP客户端通过标准输入/输出 (Stdio) 启动和通信。因此,你需要在你的MCP客户端(例如兼容的IDE插件或应用)的配置中添加以下信息,以便客户端知道如何启动并连接到这个服务器。
典型的MCP客户端配置会要求你指定服务器的名称、启动命令以及任何必需的环境变量。对于这个MCP服务器,你需要配置:
- 服务器名称 (Name): 例如 'pr-reviewer-mcp' (这个名称由客户端自己定义,但建议使用有意义的名称)
- 启动命令 (Command): 'npx' (这是一个Node.js工具,用于执行包中的可执行文件)
- 命令参数 (Args): '["-y", "/绝对/路径/到/pr-reviewer-cli/dist/apps/mcp-server/index.js"]'。这里的 '/绝对/路径/到/pr-reviewer-cli' 应该替换为你实际克隆仓库后 'dist' 目录所在的绝对路径。这是指向构建好的MCP服务器入口脚本的路径。
- 环境变量 (Env): 需要提供 'GITHUB_TOKEN' 和 'OPENAI_API_KEY',通常也需要确保 'PATH' 环境变量包含Node.js的可执行路径。
例如,在客户端配置中,你可能需要提供类似这样的信息结构:
{ "mcpServers": { "pr-reviewer-mcp": { "command": "npx", "args": ["-y", "你的/绝对/路径/到/pr-reviewer-cli/dist/apps/mcp-server/index.js"], "env": { "PATH": "你的 Node.js bin 目录路径", "GITHUB_TOKEN": "你的 GitHub Token", "OPENAI_API_KEY": "你的 OpenAI API Key" } } } }
(请注意:上述JSON块仅为示例说明,实际配置方式取决于你的MCP客户端的具体实现。你需要将 '<你的GitHub Token>'、'<你的 OpenAI API Key>' 和路径替换为实际值。)
基本使用方法(通过MCP客户端)
一旦在你的MCP客户端中配置并启动了'pr-reviewer-mcp'服务器,你的客户端将能够发现该服务器提供的工具。
- 发现工具: MCP客户端会向服务器发送 'ListTools' 请求,服务器会返回一个名为 'pull_request_review' 的工具定义。
- 调用工具: 你的客户端可以通过向服务器发送 'CallTool' 请求来使用代码评审功能。请求的参数需要符合 'pull_request_review' 工具的输入 schema,该 schema 需要三个参数:
- 'owner' (字符串): GitHub 仓库的拥有者或组织名。
- 'repo' (字符串): GitHub 仓库名。
- 'pr' (数字): 要评审的拉取请求号。
客户端发送类似这样的请求 (JSON-RPC 格式):
{ "jsonrpc": "2.0", "method": "callTool", "params": { "name": "pull_request_review", "arguments": { "owner": "your-github-username", "repo": "your-repository-name", "pr": 123 } }, "id": 1 }
服务器执行评审逻辑后,会返回一个 'CallTool' 响应,其中包含大模型生成的Markdown格式的代码评审报告内容。客户端会接收到这个响应,并可以在其用户界面中展示评审结果。
信息
分类
AI与计算