项目简介

ReviewGenie 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为大型语言模型 (LLM) 客户端提供上下文感知和功能调用能力,专注于辅助 Pull Request (PR) 的代码审查。它能够获取 PR 详情,利用本地和云端 LLM 进行代码分析和风险评估,并通过向量搜索定位问题,最终生成内联评论。

主要功能点

  • PR 信息查询: 获取 PR 的基本信息,如标题、作者、状态等。
  • 代码变更摄取与缓存: 拉取 PR 的 diff 内容,解析并结构化,同时利用 SQLite 进行缓存以提高效率。
  • 智能代码分析: 结合本地 LLM 进行快速代码气味检测,并利用云端 LLM 生成代码变更总结、识别关键问题并评估风险分数。
  • 静态规则检查: 执行预定义的正则表达式规则,捕获潜在的安全或质量问题,并调整风险评分。
  • 问题定位与内联评论: 利用代码片段的向量嵌入(通过 ChromaDB),将检测到的问题准确映射到代码的具体位置,并生成可直接在 GitHub PR 中发布的内联评论(支持干运行模式)。
  • 测试用例生成: 根据代码变更尝试生成初步的 pytest 测试文件框架,并可选择创建新的 PR 包含这些测试存根。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/mann-uofg/codeview-mcp.git
    cd codeview-mcp
  2. 创建并激活虚拟环境:
    python -m venv .venv
    source .venv/bin/activate
  3. 安装依赖:
    pip install -r requirements.txt
  4. 安装 ReviewGenie 包:
    pip install -e .
  5. 配置密钥: ReviewGenie 需要 GitHub Token 和 LLM 服务(如 Groq/OpenAI)的 API 密钥。可以通过环境变量或密钥环 (keyring) 设置。推荐使用密钥环:
    from codeview_mcp.secret import set_in_keyring
    set_in_keyring("GH_TOKEN", "YOUR_GITHUB_PAT") # 替换为你的 GitHub Personal Access Token
    set_in_keyring("OPENAI_API_KEY", "YOUR_LLM_API_KEY") # 替换为你的 LLM API 密钥
    set_in_keyring("OPENAI_BASE_URL", "YOUR_LLM_BASE_URL") # 替换为你的 LLM 服务基地址 (如 Groq/OpenAI)
    或者设置环境变量 'GH_TOKEN', 'OPENAI_API_KEY', 'OPENAI_BASE_URL'。

服务器配置

作为 MCP 服务器,ReviewGenie 需要被兼容的 LLM 客户端(如某些编辑器插件或独立应用)启动和连接。客户端通常通过一个 JSON 配置文件来定义如何启动 MCP 服务器进程。

以下是 MCP 客户端连接 ReviewGenie 服务器所需的典型配置示例 (请将此信息整合到你的 MCP 客户端配置中):

{
  "name": "reviewgenie",
  "command": "python",
  "args": ["-m", "codeview_mcp.server"],
  "description": "ReviewGenie MCP Server for Code Review"
  // 其他可能的配置,如 transports (stdio, sse, websocket) 由 MCP 客户端决定
}
  • 'name': MCP 服务器的标识名称。
  • 'command': 启动服务器进程的命令,这里是 'python'。
  • 'args': 传递给命令的参数,'-m codeview_mcp.server' 表示运行 'codeview_mcp' 包中的 'server.py' 模块。

确保你的环境中已正确安装 ReviewGenie 及其依赖,并且密钥已配置。

基本使用方法

ReviewGenie 被设计为一个由 MCP 客户端调用的后端服务。一旦通过上述配置由客户端成功启动,它会在后台运行,监听客户端的 JSON-RPC 请求。

用户无需直接与 'server.py' 交互(除非进行调试或手动启动)。所有的功能调用(如分析某个 PR、生成评论)都将通过 MCP 客户端的应用界面(例如,集成在 IDE 或其他 LLM 应用中)触发,客户端会将相应的请求发送给正在运行的 ReviewGenie MCP 服务器,服务器处理请求并返回结果。

开发者可以通过命令行工具 'reviewgenie' 直接调用其内部逻辑进行测试或脚本化操作,但这并非典型的 MCP 客户端使用方式。例如:

# 使用 CLI 工具测试 ping 功能
reviewgenie ping https://github.com/psf/requests/pull/6883

# 使用 CLI 工具分析 PR 并获取结果 JSON 输出
reviewgenie analyze https://github.com/psf/requests/pull/6883

请注意,CLI 调用方式不涉及 MCP 协议通信,它直接调用了 ReviewGenie 内部的函数。标准的 MCP 交互是由兼容客户端通过 JSON-RPC 完成的。

信息

分类

开发者工具