使用说明

项目简介

这个项目是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于与 Gerrit 代码评审系统集成。它允许大型语言模型 (LLM) 或其他MCP客户端通过标准化的接口访问Gerrit中的代码变更和评审信息,从而使AI助手能够更好地理解和协助进行代码评审工作。

主要功能点

  • 获取变更详情: 可以根据 Gerrit 变更ID获取一个变更的完整信息,包括所有文件、代码差异(diff)、评审历史、评论、作者、项目分支等。可以选择获取最新的补丁集(patchset)或指定特定版本的补丁集详情。
  • 比较补丁集差异: 可以比较同一个变更中两个不同版本的补丁集之间的代码差异。支持查看所有变更文件的差异或仅查看指定文件的差异,帮助分析代码在不同评审轮次中的演变。

安装步骤

  1. 克隆代码仓库: 使用git命令将仓库克隆到本地。
  2. 创建并激活 Python 虚拟环境: 推荐使用虚拟环境管理项目依赖。
  3. 安装项目及其依赖: 在激活的虚拟环境中,进入项目目录,运行 'pip install -e .' 安装项目。
  4. 配置 Gerrit 连接信息: 服务器需要连接Gerrit,请设置以下环境变量,或者在项目根目录创建一个名为 '.env' 的文件来存放这些信息:
    • 'GERRIT_HOST': 你的 Gerrit 服务器主机名 (例如: 'gerrit.example.com')
    • 'GERRIT_USER': 你的 Gerrit 用户名
    • 'GERRIT_HTTP_PASSWORD': 在 Gerrit 用户设置中生成的 HTTP 访问密码(非普通登录密码)。

服务器配置

该MCP服务器是一个后端服务,需要被支持MCP协议的客户端(例如某些AI编辑器或IDE插件)配置并启动才能使用。

在你的MCP客户端的配置文件(通常是JSON格式,如 '~/.cursor/mcp.json')中,你需要添加一个条目来定义如何启动和连接这个 Gerrit Review MCP 服务器。配置示例如下:

  • '"gerrit-review-mcp"': 这是给这个服务器实例起的一个唯一名称。
  • '"command"': 指定用于启动服务器进程的可执行文件的完整路径,这里通常是你虚拟环境中的 'python' 解释器。
  • '"args"': 启动服务器进程时传递的参数列表。第一个参数是服务器主文件 ('server.py') 的路径,后面的参数用于指定传输协议 ('--transport stdio' 表示使用标准输入/输出进行通信)。
  • '"cwd"': 指定服务器进程运行时的当前工作目录,应设置为项目的根目录。
  • '"env"': 一个字典,用于设置服务器进程运行时的环境变量。这里需要确保 'PYTHONPATH'、'VIRTUAL_ENV' 和 'PATH' 正确指向你的虚拟环境和项目目录,以便服务器能找到所需的库和文件。你也可以在这里设置 Gerrit 的连接信息,但这通常更推荐通过系统环境变量或项目根目录的 '.env' 文件来管理。
  • '"stdio"': 一个布尔值,指示是否使用标准输入输出作为与客户端的通信通道。

请根据你的实际项目存放路径和虚拟环境路径,替换配置示例中的 '/path/to/...' 部分。

基本使用方法

配置完成后,当支持MCP的客户端启动并加载此配置时,它会尝试启动 Gerrit Review MCP 服务器进程。

客户端(例如 LLM 助手)就可以通过 MCP 协议发现并调用服务器提供的工具。LLM 助手会根据用户请求构造 JSON-RPC 请求,调用 'fetch_gerrit_change' 或 'fetch_patchset_diff' 工具,并传递必要的参数(如 'change_id', 'patchset_number' 等)。

服务器接收到请求后,会执行相应的 Python 函数,通过 Gerrit REST API 获取数据,并将处理后的结果作为 JSON-RPC 响应返回给客户端。LLM 助手接收到数据后,可以将其用于生成代码评审意见、总结变更内容、回答用户问题等。

例如,LLM 助手可能会通过调用 'fetch_gerrit_change("23824")' 来获取变更号为 23824 的最新详情,或调用 'fetch_patchset_diff("23824", "1", "2")' 来比较补丁集 1 和 2 之间的差异。

信息

分类

开发者工具