GitLab MCP 用 api/v4/mcp,不要抄 rmcp_client
官方 Codex:mcp add GitLab --url https://gitlab.com/api/v4/mcp,再 mcp login GitLab。不要抄 features.rmcp_client,也不要抄 mcp-remote。不是 Cloud 评论审查,也不是 Orbit。
GitLab 给 Codex 的官方主路径是远程 HTTP MCP,不是 mcp-remote,也不是 Cloud 评论审查。官方 Codex 节是:
codex mcp add GitLab --url https://gitlab.com/api/v4/mcp
codex mcp login GitLab
自建 / Dedicated 把 gitlab.com 换成实例主机名,路径仍是 /api/v4/mcp。用户层表名官方就是驼峰 GitLab(这不是插件 mcp.json)。随后 mcp login 打开浏览器做 OAuth DCR。不要抄 Claude 的 --transport http,也不要抄 Cursor 的 type: http JSON。
不要抄官方紧跟着的 [features] "rmcp_client" = true。那是早期 HTTP 客户端旗标,Figma / Notion / Linear / Supabase 几条已经说过:现行 Codex 自己连 Streamable HTTP,再开这个旗标不是前置条件。
先在顶级组打开 MCP 服务器访问:Settings → General → Permissions and group features → Allow connection to GitLab。19.2 起这是独立开关,GitLab.com 上 Free 也能用(Beta)。返回 404 且带 no_enabled_namespace,就是没开这扇门。不要和 Duo 的「Allow external MCP tools」搞混:那是 GitLab Duo 当客户端去连别人的 MCP;这台是 Codex 连进 GitLab。
连上后先问 get_mcp_server_version。工具能列/建 issue、改 MR、add_commit、管流水线,保持工具批准。不要一上来 --yolo。不要给它 required = true 挂全局。官方提醒:只对你信任的 GitLab 对象用这些工具,防提示注入。
[mcp_servers.GitLab]
url = "https://gitlab.com/api/v4/mcp"
enabled = true
多实例才考虑给工具名加前缀。前缀本身不是密钥,走 env_http_headers 的 X-Gitlab-Mcp-Server-Tool-Name-Prefix(最长 32 字符)。不要把 PAT 写进 http_headers。主路径是 OAuth,不要发明 PAT / bearer_token_env_var 当 Codex 主路径。
管理员关掉 DCR 时才要预注册 OAuth 应用:范围勾 mcp,清掉 Confidential。官方只给了 mcp.json 的 clientId,不要把那份 JSON 抄进 Codex。同一共享应用不能服务不同回调 URL。
也不要和这几条搞混:
- Cloud 评论审查是另一条线,要项目环境和 webhook,不是这台 MCP。
- 本地 Orbit 图谱是
codex mcp add orbit-cli -- orbit mcp serve,表名是orbit-cli。远程 Orbit 才是https://gitlab.com/api/v4/orbit/mcp,官方给 Codex 的示例仍是mcp-remote,不要当 Codex 主路径,也不要和GitLab/orbit-cli写成同一张表。 glab mcp serve是实验性本地 stdio,文档面向 Claude Code,不要当 Codex 主路径。
不要做这些:
- 不要发明
codex plugin add gitlab@…。 - 不要抄
npx mcp-remote https://gitlab.com/api/v4/mcp。Codex 自己走 HTTP。 - 不要抄博客里把
--url写在名字前面的变体;官方顺序是mcp add GitLab --url。 - 不要把私有令牌写进 URL、
args或提示词。
网页 Cloud 不读 ~/.codex/config.toml。改完用 codex mcp get GitLab 看传输是 streamable_http。