这是一个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格式的评审报告内容。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/NikosTsompanides/pr-reviewer-cli.git
    cd pr-reviewer-cli
  2. 安装依赖:
    npm install
  3. 构建项目: 这会同时构建命令行工具和MCP服务器。
    npm run build
  4. 配置环境变量: 复制'.env.sample'文件到'.env',并填入你的GitHub Token和OpenAI API Key。
    cp .env.sample .env
    编辑'.env'文件:
    GITHUB_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'服务器,你的客户端将能够发现该服务器提供的工具。

  1. 发现工具: MCP客户端会向服务器发送 'ListTools' 请求,服务器会返回一个名为 'pull_request_review' 的工具定义。
  2. 调用工具: 你的客户端可以通过向服务器发送 '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与计算