Gerrit MCP Server 使用指南_网关版
简介
该项目从上游谷歌官方项目 gerrit-mcp-server 二次开发修改而来,修复了原项目的一些缺陷,重构了部分代码,增强了扩展性和稳定性。
核心优势
🚀 零依赖部署
本地无需安装其他环境或服务,只需配置 MCP 统一网关的转发地址即可使用
🌐 多域名支持
支持配置多个 Gerrit 域名,灵活切换不同环境,提升工作效率
🔒 权限控制
读写权限分离,默认只读模式,降低误操作风险,保障代码安全
💡 典型使用场景
- 查询
6977312这个 change 的详情(从默认域名查询) - 查询
https://gerrit.odm.mioffice.cn/域名下的1153597change 详情 - 支持 @resources/host-aliases 添加上下文,直接查询:“查询 odm 下的 change 1153597 详情”
快速开始
📋 前置条件
- 拥有 Gerrit 账号并可正常登录
- 网络可访问公司内网(MCP 统一网关地址)
- 已安装支持 MCP 协议的 AI 客户端(如 ClaudeCode、Kiro 等)
第一步:获取访问凭证
- 访问 MCP 统一网关(https://onedev.pt.miui.com/gateway/tokens)
- 【使用管理】-【Token管理】创建token,绑定Gerrit MCP服务
或者已有 Token,绑定 Gerrit MCP 服务。
- 复制MCP配置到个人的MCP Client里

第二步:最简配置
在 AI 客户端的 settings.json 中添加以下配置(可从管理平台【MCP 配置】里复制,如上):
{
"mcpServers": {
"gerrit_mcp": {
"httpUrl": "https://onedev.pt.miui.com/mcp-gw/gerrit_mcp",
"timeout": 15000,
"headers": {
"x-user-token": "mcp_u-your-token-here",
"x-gerrit-default": "pt",
"x-gerrit-host-pt": "https://gerrit.pt.mioffice.cn/",
"x-gerrit-host-odm": "https://gerrit.odm.mioffice.cn/"
}
}
}
}
第三步:验证连接
重启 AI 客户端后,尝试执行:
查询XX最近的 change list如果返回结果,说明配置成功!
详细配置
MCP客户端详细配置
在 MCP 管理平台配置 Gerrit 服务器信息:
{
"mcpServers": {
"gerrit_mcp": {
"httpUrl": "https://onedev.pt.miui.com/mcp-gw/gerrit_mcp",
"timeout": 15000,
"headers": {
"x-user-token": "mcp_u-your-token-here",
"x-permission-mode": "r",
"x-gerrit-default": "pt",
"x-gerrit-host-pt": "https://gerrit.pt.mioffice.cn/",
"x-gerrit-host-odm": "https://gerrit.odm.mioffice.cn/",
"x-gerrit-host-xring": "http://gerrit.x-ringtek1.srv/",
"x-gerrit-auth-xring": "your_username|your_password"
}
}
}
}MCP 客户端配置
| 参数 | 类型 | 必填 | 说明
| httpUrl / url | String | ✅ | MCP 统一网关转发服务地址(生产环境或预发环境)
| timeout | Integer | 推荐 | 请求超时时间(毫秒),推荐 15000-30000
| headers.x-user-token | String | ✅ | MCP 统一网关平台分配的用户认证 token
| headers.x-permission-mode | String | 非必填 | 权限模式:r(只读)/ w(只写)/ rw(读写),默认 r
| headers.x-gerrit-default | String | ✅ | 必须要指定一个 host 的别名,在调用具体 MCP 工具时可以不填写具体的域名
| headers.x-gerrit-host-pt
headers.x-gerrit-host-odm | String | 非必填 | pt 和 odm 的认证已经和 MCP 统一网关打通了,不需要填写 auth 信息,默认使用的就是登陆MCP 统一网关的username,其他平台需要填写
| headers.x-gerrit-host-XX
headers.x-gerrit-auth-XX | String | 非必填 | 其他域名需要填写 host 地址和 auth 认证,auth 信息的 username 和 password 使用竖线 | 分隔
密码获取方式,如下:- 登录 Gerrit 首页
- 进入 Settings > HTTP Credentials

🎁 注意:如果在其他业务里已经填过了 password,不需要重新生成,直接复制过来使用,重新生成会导致之前的失效。
权限模式详解
r - 只读模式(推荐)
可用工具:
- 查询 changes
- 获取详情
- 查看 diff
- 读取评论 **适用场景:**日常查询、代码审查、问题排查
w - 只写模式
可用工具:
- 添加 reviewer
- 设置状态
- 发布评论
- 创建 change **适用场景:**自动化操作、批量处理
rw - 读写模式
可用工具:
- 全部工具 **适用场景:**高级用户、完整工作流
🎁 权限模式安全提示使用
w或rw权限时,存在以下风险:
- AI 模型可能因上下文遗忘执行错误操作
- 模型幻觉可能导致误 revert 或 abandon change
- 建议仅在必要时临时开启写权限,操作完成后立即切换回只读模式
支持的工具列表
查询类工具(只读权限)
| 工具名称 | 功能说明 | 风险等级 |
|---|---|---|
query_changes | 根据查询字符串搜索 CLs | 🟢 低 |
query_changes_by_date_and_filters | 按日期范围和过滤条件搜索 changes | 🟢 低 |
get_change_details | 获取单个 CL 的完整详情 | 🟢 低 |
get_commit_message | 获取当前 patch set 的 commit message | 🟢 低 |
list_change_files | 列出最新 patch set 中修改的所有文件 | 🟢 低 |
get_file_diff | 获取 CL 中指定文件的 diff | 🟢 低 |
list_change_comments | 获取 change 的所有评论 | 🟢 低 |
get_most_recent_cl | 获取用户最近的 CL | 🟢 低 |
get_issues_from_cl | 从 commit message 提取 JIRA/ADT issue ID | 🟢 低 |
changes_submitted_together | 列出会一起提交的所有 changes | 🟢 低 |
get_related_changes | 获取相关的 changes(依赖关系) | 🟢 低 |
suggest_reviewers | 根据查询建议 reviewers | 🟢 低 |
get_blame_from_diff | 追踪代码行的 commit 历史 | 🟢 低 |
list_draft_comments | 列出 CL 上当前用户的所有草稿评论 | 🟢 低 |
操作类工具(写权限)
| 工具名称 | 功能说明 | 风险等级 |
|---|---|---|
add_reviewer | 添加 reviewer 或 CC | 🟡 中 |
set_ready_for_review | 设置 CL 为 ready for review | 🟡 中 |
set_work_in_progress | 设置 CL 为 work-in-progress | 🟡 中 |
post_review_comment | 在文件特定行发布评论 | 🟡 中 |
set_topic | 设置或删除 change 的 topic | 🟡 中 |
create_change | 创建新的 change | 🟡 中 |
abandon_change | 废弃 change | 🔴 高 |
revert_change | 回滚单个 change | 🔴 高 |
revert_submission | 回滚整个 submission | 🔴 高 |
post_draft_comment | 创建草稿评论(支持行范围、代码建议、线程回复) | 🟡 中 |
delete_draft_comment | 删除单条草稿评论 | 🟡 中 |
delete_draft_comments | 删除 CL 上所有草稿评论 | 🟡 中 |
publish_drafts | 发布所有待处理草稿评论(等同于 Gerrit 网页的 “Send”) | 🟡 中 |
使用示例
场景 1:查询和分析
# 查询xx最近的 CL
查询xx最近提交的 change
# 查看特定 CL 的详情
查询 change 6977312 的详情
# 查看文件修改
列出 change 6977312 修改了哪些文件
# 查看具体 diff
显示 change 6977312 中 main.py 的 diff
场景 2:跨域名查询
# 查询 ODM 环境的 change
查询 https://gerrit.odm.mioffice.cn/ 下的 change 1153597
# 使用别名(需添加 host-aliases 作为上下文)
查询 odm 下的 change 1153597 详情
场景 3:代码审查(需写权限)
# 添加 reviewer
给 change 6977312 添加 reviewer lisi@example.com
# 发布评论
在 change 6977312 的 main.py 第 42 行添加评论:"建议优化这里的逻辑"
# 设置状态
将 change 6977312 设置为 ready for review
安全最佳实践
UserToken 管理
🔐 重要安全提示
- 不要将 token 提交到代码仓库
- 发现泄露立即在平台删除并重新生成
权限使用建议
- 默认使用只读模式:日常查询和分析使用
r权限 - 临时开启写权限:需要操作时临时修改为
w或rw,完成后立即切换回r - 避免长期开启 rw:降低误操作风险
- 重要操作前确认:执行 revert、abandon 等操作前,先用只读模式确认信息
故障排查
常见问题
1. 连接超时
症状: 请求一直等待,最终超时解决方案:
- 检查
httpUrl是否正确 - 增加
timeout值(如 30000) - 确认网络可以访问 MCP 服务地址
2. 认证失败
症状: 返回 401 或 403 错误解决方案:
- 验证
x-user-token是否正确 - 检查 token 是否过期
- 确认 Gerrit
auth_token是否有效
3. 工具列表为空
症状: AI 提示没有可用的 Gerrit 工具解决方案:
- 检查
x-permission-mode配置 - 重启 AI 客户端
- 查看客户端日志确认 MCP 连接状态
4. 多域名切换失败
症状: 无法查询非默认域名的 change解决方案:
- 确认 MCP 平台已配置多个 host
- 使用完整 URL 指定域名
- 检查目标域名的
auth_token是否正确
环境地址
| 环境 | MCP统一网关 | 用途 |
|---|---|---|
| 预发环境 | https://onedev-preview.pt.miui.com/gateway/tokens | 验证 |
| 生产环境 | https://onedev.pt.miui.com/gateway/tokens | 正式使用 |
技术支持
如遇到问题,请联系:
- 技术支持群:(待补充)
- 问题反馈:(待补充)
- 文档更新:(待补充)
最后更新:2026-03-13