使用说明
项目简介
这个项目是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于与 Gerrit 代码评审系统集成。它允许大型语言模型 (LLM) 或其他MCP客户端通过标准化的接口访问Gerrit中的代码变更和评审信息,从而使AI助手能够更好地理解和协助进行代码评审工作。
主要功能点
- 获取变更详情: 可以根据 Gerrit 变更ID获取一个变更的完整信息,包括所有文件、代码差异(diff)、评审历史、评论、作者、项目分支等。可以选择获取最新的补丁集(patchset)或指定特定版本的补丁集详情。
- 比较补丁集差异: 可以比较同一个变更中两个不同版本的补丁集之间的代码差异。支持查看所有变更文件的差异或仅查看指定文件的差异,帮助分析代码在不同评审轮次中的演变。
安装步骤
- 克隆代码仓库: 使用git命令将仓库克隆到本地。
- 创建并激活 Python 虚拟环境: 推荐使用虚拟环境管理项目依赖。
- 安装项目及其依赖: 在激活的虚拟环境中,进入项目目录,运行 'pip install -e .' 安装项目。
- 配置 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 之间的差异。
信息
分类
开发者工具