用途
gl-cli 介绍如何把 zereight-mcp-gitlab(别名 mcp-gitlab)当作 GitLab 命令行工具使用:带上命令执行后直接打印结果并退出,不涉及 MCP 客户端,也不需要注册 MCP 服务器。完整指南位于 docs/getting-started/cli-without-mcp.md。
主要能力
凭证检查
第一步先运行并阅读结果:
zereight-mcp-gitlab user whoami
输出 user 表示凭证有效,可继续后续操作;缺少 GitLab 凭证(退出码 2)时进入认证步骤;401 表示令牌过期或权限不足,需重新认证;command not found 表示未安装,可执行 npm install -g @zereight/mcp-gitlab。
认证方式
文档强调绝不能编造、猜测或回显令牌,应由用户自行执行命令,因为命令需要用户自己的密钥。
A. 个人访问令牌(最快;read_api 用于读取,api 用于写入):
read -rs GITLAB_PERSONAL_ACCESS_TOKEN && export GITLAB_PERSONAL_ACCESS_TOKEN
export GITLAB_API_URL=https://gitlab.example.com/api/v4 # gitlab.com 可省略
也可用 GITLAB_PERSONAL_ACCESS_TOKEN_FILE 指向令牌文件;进程启动时读取一次并去除首尾空白。若 GITLAB_PERSONAL_ACCESS_TOKEN 已非空,则忽略该文件并向 stderr 输出警告。
B. OAuth 设备流(需要 GitLab OAuth 应用 ID):
export GITLAB_OAUTH_CLIENT_ID=YOUR_APP_ID
zereight-mcp-gitlab auth # 打开打印的 URL,输入验证码
export GITLAB_USE_OAUTH=true # 之后每次 CLI 调用都需要
文档提醒不要通过 --token 传令牌,因为参数在 ps 中可见。
读取合并请求
常用命令均以 zereight-mcp-gitlab 为前缀,解析结果时可加 --output json:
| 目标 | 命令 |
|---|---|
| 列出打开的 MR | `mr list --project-id <path |
| MR 摘要 | mr view --project-id <p> --mr-iid <n> |
| 仅变更文件路径 | mr files --project-id <p> --mr-iid <n> |
| 完整 diff | mr diff --project-id <p> --mr-iid <n> |
| 评论线程 | mr discussions --project-id <p> --mr-iid <n> |
| MR 流水线 | mr pipelines --project-id <p> --mr-iid <n> |
| 审批状态 | mr approvals --project-id <p> --mr-iid <n> |
| 其它操作 | tool <tool_name> --project-id <p> --args-json '{...}' |
对于较大的 MR,建议先用 mr files 列出文件,再只对需要的文件查看 diff。
输入参数解析
文档要求不要在实际调用中使用 <project> 或 42 这类占位符。若缺少项目或 MR 编号,应向用户获取,或通过 mr list、git remote -v 发现。
使用方式与安全
默认只读:export GITLAB_PERMISSION_MODE=readonly。写操作(mr approve、mr merge、mr note、mr update、mr create)会以退出码 2 被拒绝。破坏性命令需要 --yes,且只有在用户于当前消息中确认该确切操作后才可添加。除非用户明确要求,不要运行 mr merge 或 mr approve。
适用场景与限制
适用于希望在终端直接查看 GitLab 合并请求、差异、评论与流水线信息的开发者。该技能仅覆盖 CLI 路线;MCP 工具目录与工作流请参考 gitlab-mcp 技能。