此 MCP 服务器提供了与 Gerrit 代码审查系统集成的功能,允许通过简单界面让AI助手审查代码更改及其详细信息。
该服务器提供了一套简洁的代码审查工具集:
fetch_gerrit_change(change_id: str, patchset_number: Optional[str] = None)
fetch_patchset_diff(change_id: str, base_patchset: str, target_patchset: str, file_path: Optional[str] = None)
submit_gerrit_review(
change_id: str,
message: Optional[str] = None,
patchset_number: Optional[str] = None,
labels: Optional[Dict[str, int]] = None,
comments: Optional[List[Dict[str, Any]]] = None,
notify: str = "OWNER",
)
{"Code-Review": 1})以及内联/文件级评论notify: NONE, OWNER, OWNER_REVIEWERS, ALL)path, message 和可选 Gerrit 注释字段(如 line, side, range 等)的字典审查一个完整的变更:
# 获取变更 23824 的最新补丁集
change = fetch_gerrit_change("23824")
提交带有投票和内联评论的审阅反馈:
submit_gerrit_review(
change_id="23824",
message="整体看起来不错",
labels={"Code-Review": 1},
comments=[{"path": "src/app.py", "line": 42, "message": "很好的重构"}],
patchset_number="2", # 可选:目标特定补丁集
notify="OWNER_REVIEWERS", # 可选:调整通知范围
)
比较特定的补丁集:
# 比较变更 23824 的补丁集 1 和 2 之间的差异
diff = fetch_patchset_diff("23824", "1", "2")
查看特定文件更改:
# 获取补丁集之间特定文件的差异
file_diff = fetch_patchset_diff("23824", "1", "2", "path/to/file.swift")
mcp[cli] 包仓库的访问权限(私有包)要通过 Smithery 自动安装 gerrit-code-review-mcp 到 Claude Desktop:
npx -y @smithery/cli install @cayirtepeomer/gerrit-code-review-mcp --client claude
git clone <repository-url>
cd gerrit-review-mcp
# 对于 macOS/Linux:
python -m venv .venv
source .venv/bin/activate
# 对于 Windows:
python -m venv .venv
.venv\Scripts\activate
pip install -e .
export GERRIT_HOST="gerrit.example.com" # 你的 Gerrit 服务器主机名(不带 https://)
export GERRIT_USER="your-username" # 你的 Gerrit 账户用户名
export GERRIT_HTTP_PASSWORD="your-http-password" # 从 Gerrit 设置 > HTTP 凭证生成的 HTTP 密码
export GERRIT_EXCLUDED_PATTERNS="\.pbxproj$,\.xcworkspace$,node_modules/" # 可选:用于排除审阅的文件的正则表达式模式
# 可选的 TLS 配置用于自定义或自签名证书
export GERRIT_SSL_VERIFY="true" # 在受限环境中设置为 'false' 以跳过 TLS 验证
export GERRIT_CA_BUNDLE="/path/to/ca.pem" # 可选的自定义 CA 证书包路径,当验证保持启用时使用
# 注意:如果两者都设置了,GERRIT_CA_BUNDLE 将优先,并且使用该包进行验证。
或者创建一个 .env 文件:
GERRIT_HOST=gerrit.example.com
GERRIT_USER=your-username
GERRIT_HTTP_PASSWORD=your-http-password
GERRIT_EXCLUDED_PATTERNS=\.pbxproj$,\.xcworkspace$,node_modules/
GERRIT_SSL_VERIFY=true
GERRIT_CA_BUNDLE=/path/to/ca.pem
# 如果两者都设置了,CA 证书包优先。
GERRIT_EXCLUDED_PATTERNS 以排除特定类型的文件从变更审阅\.pbxproj$,\.xcworkspace$,node_modules/)要使用此 MCP 服务器与 Cursor 或 RooCode,你需要将其配置添加到你的 ~/.cursor/mcp.json 或 .roo/mcp.json 文件中。以下是所需配置:
{
"mcpServers": {
"gerrit-review-mcp": {
"command": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin/python",
"args": [
"/path/to/your/workspace/gerrit-code-review-mcp/server.py",
"--transport",
"stdio"
],
"cwd": "/path/to/your/workspace/gerrit-code-review-mcp",
"env": {
"PYTHONPATH": "/path/to/your/workspace/gerrit-code-review-mcp",
"VIRTUAL_ENV": "/path/to/your/workspace/gerrit-code-review-mcp/.venv",
"PATH": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin:/usr/local/bin:/usr/bin:/bin"
},
"stdio": true
}
}
}
将 /path/to/your/workspace 替换为你的实际工作区路径。例如,如果你的项目在 /Users/username/projects/gerrit-code-review-mcp,使用那个路径代替。
确保配置中的所有路径指向:
server.py 文件该服务器使用 Gerrit REST API 与 Gerrit 交互,提供:
如果你遇到连接问题:
GERRIT_HTTP_PASSWORDGERRIT_HOST 设置(仅主机名,不带 https://)/a/ 前缀的 curl 测试认证 API 调用连接:
curl -u "your-username:your-http-password" https://your-gerrit-server.com/a/changes/?q=status:open
如果你在认证方面遇到问题,请检查你的 Gerrit 配置是否有 gitBasicAuthPolicy = HTTP(或 HTTP_LDAP)。
GERRIT_SSL_VERIFY=false 在 Gerrit 使用内部颁发的证书且缺少所需的主题备用名称(SAN)条目时禁用 TLS 验证。GERRIT_CA_BUNDLE=/path/to/ca.pem 提供自定义证书包以保持验证启用同时信任私有 CA。本项目根据 MIT 许可证授权。
该项目包括使用 testcontainers-python 的全面 Docker 集成测试,以实现可靠的跨平台测试。
要运行完整的测试套件:
# 安装开发依赖项
pip install -e ".[dev]"
# 运行所有测试
pytest
# 仅运行集成测试
pytest -m integration
# 以详细输出运行
pytest -v
# 以覆盖率运行
pytest --cov=. --cov-report=html
可以使用以下环境变量来配置测试行为:
TEST_STARTUP_TIMEOUT: 容器启动超时时间(秒,默认值:30)TEST_LOGS_SETTLE_DELAY: 检查日志之前的延迟时间(秒,默认值:0)DOCKER_HOST: 远程 Docker 的 Docker 守护进程主机(可选)示例:
# 使用自定义超时运行测试
TEST_STARTUP_TIMEOUT=60 TEST_LOGS_SETTLE_DELAY=1 pytest tests/test_docker_integration.py -v
Docker 集成测试需要:
/var/run/docker.sock(Linux/macOS)或设置 DOCKER_HOST如果没有 Docker,测试将自动跳过。
对于 CI/CD 环境,请确保:
DOCKER_HOST我们欢迎贡献!请: