
Gitlab Mcp
io.github.mmedum由 GitHub 账号 mmedum 发布v4.3.0更新于 Nov 4, 2026
GitLab over MCP from your own account: issues, merge requests, reviews, the repository and CI.
发布方自己的服务:Gitlab
概览
本地 stdio MCP 服务器,让助手以你的身份在 gitlab.com 项目中工作:议题、合并请求、评审、仓库与 CI。
- 可以做什么
- 查找并读取项目、成员、用户、议题、合并请求、差异、提交、分支、标签、流水线、作业日志、测试报告、Wiki 页面、代码片段、发布、环境以及你的待办事项
- 创建和更新议题、评论、讨论、关联、合并请求、分支、提交、标签、里程碑和代码片段,支持 dry_run 与读取后变更检测
- 评审合并请求:草稿评论、差异行内评论、批量发布、解决讨论串、重新请求评审
- 读取并检查 CI 配置,查看流水线与作业,读取已脱敏的产物文件
- 按需开启后可合并、批准、变基、应用建议、运行或重试流水线、创建发布与标签,以及删除分支、评论、标签、里程碑、标签或代码片段
- 适用场景
- 适合在 gitlab.com 项目中工作、希望助手代为梳理议题、评审合并请求、跟进 CI 失败或做小幅仓库改动,而不必离开客户端的人。不适用于自建 GitLab 实例、实例或群组管理,也不提供原始 API 调用。
- 运行要求
- 以本地二进制通过 stdio 运行(go install、发布包,或 Claude Desktop 的 .mcpb 包)。需要 gitlab.com 账号和自建 OAuth 应用,重定向 URI 为 confidential,scope 为 api 或 read_api;需在终端登录一次,令牌存入操作系统钥匙串。设置均以 GITLAB_MCP_ 为前缀,包括 GITLAB_MCP_READ_ONLY、GITLAB_MCP_ENABLE_SHIP、GITLAB_MCP_ENABLE_DESTRUCTIVE、GITLAB_MCP_TOOLSETS、GITLAB_MCP_UPLOAD_DIRS 和 write_namespaces。
安装
在 SourceWeft 中
- 打开 控制台中的 Gitlab Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
gitlab-mcp
[CI] [Release] [Go Reference] [License: Apache 2.0]
An MCP server for gitlab.com. One binary over stdio, signed in as you, with your own OAuth application and the token in your OS keyring.
It is for a person with a gitlab.com account who wants an assistant to find and read issues, review merge requests, follow CI and make the changes they ask for, as them. It works inside projects: issues, merge requests, reviews, the repository and CI. It does not administer an instance or a group, and it does not serve self-managed instances.
Unofficial, and not affiliated with GitLab Inc. See NOTICE.
Goals and non-goals
Goals:
- Content never steers the assistant through the server. Issues, reviews, files and job logs come back marked as untrusted data, hidden text is counted, nothing they link to is fetched, and token shapes in CI output are masked.
- Nothing it writes runs a command. A quick action such as
/mergein a comment is refused or escaped, never executed. - Nothing ships, deletes or reaches further unless you turn it on. Merging, approving, running CI and deleting are not registered by default, code reaches a protected branch only through a merge request, and writes can be confined to the groups you name.
- A write changes only what you read and named. Writes carry what
they read and are refused when it moved, a lost create is settled by
reading, and every write takes
dry_run. - Reads are bounded. Every read has a budget and says what it left out and how to continue.
- Act as you, and log nothing about your work. Every call runs as the signed-in account, and the logs never carry paths, titles or bodies.
Non-goals:
- Self-managed instances. It talks to gitlab.com and nothing else.
- Administration. Instance and group settings, users, runners, access tokens, deploy keys, webhooks and integrations are out.
- CI variables and secure files. Reading them would put secrets in a model's context.
- Deleting projects or groups, force pushes and protected-branch settings, not even behind a switch.
- A raw API tool. Every call is a tool with its own guards; nothing sends an arbitrary REST or GraphQL request.
- Events pushed to it. Webhooks need a listener, and a stdio process has none.
- A hosted service. It speaks stdio only, so Claude on the web and on mobile cannot reach it.
- Asking you before a call. Your client approves each call; the server asks nothing.
What makes this one different
- A curated surface, gated by registration. A tool for each thing a person does in a project, rather than an API mirror, and a tool that is switched off is not registered, so it cannot be called at all.
- Nothing it writes runs a quick action. GitLab runs
/mergeand the rest from any comment or description sent through its API. - Content is marked as untrusted. Issues, reviews, files and job logs come back inside boundaries the content cannot close.
- Reviews the way people review. Draft comments, published together, and the server, not the model, computes where an inline comment lands.
- Signs in like a desktop app. Your own OAuth application, a browser tab, the token in the OS keyring. GitLab's own MCP server runs on the instance over HTTP, and a stdio client reaches it through a Node.js proxy.
- Verifiable releases. Signed checksums, build provenance and SBOMs.
Tools
Ship and Destructive tools are registered only with the settings below,
and the toolsets only when GITLAB_MCP_TOOLSETS names them.
Resources carry the same text for clients that attach rather than call: an issue, a merge request and a job log.
Install
Download an archive for your platform from the releases page, or:
Claude Desktop users can open the .mcpb bundle from the same release.
It does not log you in; do the steps below first.
Sign in
You bring your own OAuth application. Nothing is shipped in the binary, and there are no personal access tokens.
-
Register an application, once. On gitlab.com: your avatar → Edit profile → Applications (or a group's). Redirect URI
http://127.0.0.1/callback, Confidential unchecked, scopeapi(read_apifor read-only).docs/setup.mdhas the exact values. -
Log in from a terminal:
It prints the scopes it will ask for, opens your browser, and stores the token in the OS keyring. On a machine without a browser,
--no-browserprints the URL and thessh -Lline to forward the callback. -
Check it:
doctorwalks the connection, TLS, the sign-in, the application, the granted scopes and one call as you, and names what is missing.statusandlogoutdo what they say;--profilekeeps two gitlab.com logins side by side.
Connect a client
Claude Code:
Any client that takes a JSON server list:
Claude Desktop can instead open the .mcpb bundle from a release. It
asks for the same settings: merging, approving, rebasing, applying
suggestions, moving issues, CI and releases (enable_ship) and deleting
(enable_destructive) stay off unless you turn them on, and
write_namespaces confines writes to the groups and projects you name.
This server asks nobody before a call. Claude Desktop approves each
tool, and a tool you always allow then runs unasked, so
leave a switch off unless you need its tools.
Configuration
Every setting is an environment variable with the GITLAB_MCP_ prefix
and a matching flag. docs/configuration.md lists them all.
Safety
GitLab content was written by someone other than you, and some of it is written to steer an agent. The server marks it as untrusted data, never fetches what it references, and nothing it adds tells the model to act on it.
What can be registered depends on the settings, because GitLab's api
scope cannot separate any of it:
Your MCP client approves each call; the server does not ask you
itself. claude.ai, Claude Desktop and Codex prompt for every tool
marked destructive: every write but the ones that only add, such as
create_issue and create_label. VS Code prompts for every tool that
writes. In Claude Code, delete_label, delete_milestone and
make_issue_public ask on every call whatever your rules say, since
none can be undone and each reaches past the one item: a label or
milestone comes off every issue and merge request, and a public issue
is read by everyone. For the rest, list the
calls you want to approve one by one under permissions.ask in your
settings, with the name you gave the server in place of gitlab. For
example, the writes that ship, publish, upload or delete:
- No quick actions. GitLab runs
/merge,/closeand the rest from a description or comment. Every body this server sends is checked, and a quick-action line is refused, or escaped when you ask. - Protected branches. Code reaches the default branch or a protected branch only through a merge request; a direct commit there is refused.
- No blind retries. A create that may or may not have happened is settled by reading, never by creating again.
- Local files only from where you allow.
upload_filereads an image only from the directoriesGITLAB_MCP_UPLOAD_DIRSnames, and only a PNG, JPEG, GIF or WebP judged from its bytes, so a comment asking for a key file to be "attached" gets nothing.
The default token can still merge and approve; leaving Ship off stops
this server doing so, not anything else holding the token.
docs/security.md says more.
Verify a release
Each release signs checksums.txt with a keyless Sigstore certificate
and attests every archive and the bundle:
Getting help
Run gitlab-mcp doctor first: it checks the connection, the sign-in,
the application and the granted scopes, and names what is missing.
docs/troubleshooting.md covers each
failure. Then open an issue with doctor's output and the version.
Do not paste a tool result: it is your organization's code and other
people's words.
Documentation
docs/setup.md: registering the OAuth application and logging in.docs/configuration.md: every setting, what each registers, and where state is stored.docs/troubleshooting.md: symptoms and their fixes, then rotating the token, revoking access and handling a suspected exposure.docs/security.md: the threat model.docs/architecture.md: how it works, and the design decisions a contributor should not undo.docs/release.md: how a release is cut and checked.CHANGELOG.md: what each release changed. The tool names and their output fields are the contract, and anything you have to act on is marked Breaking.
Contributing
CONTRIBUTING.md covers the gates, the live run and
the review flow. Security reports go through SECURITY.md,
not an issue.
License
Apache-2.0. See LICENSE and NOTICE.
来源:README.md,提交 79e23ef
工具
0版本历史
15- v4.3.0最新Nov 4, 2026
- v4.2.1Nov 4, 2026
- v4.2.0Nov 1, 2026
- v4.1.4Oct 29, 2026
- v4.1.3Oct 25, 2026
- v4.1.2Oct 24, 2026
- v4.0.1Oct 23, 2026
- v3.0.0Oct 22, 2026
- v2.4.0Oct 10, 2026
- v2.3.0Oct 8, 2026
- v2.2.1Oct 2, 2026
- v2.1.0Oct 1, 2026
- v2.0.0Sep 30, 2026
- v1.1.0Sep 28, 2026
- v1.0.0Sep 27, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Gitlab 集成
Gitlab
com.gitlab官方发布者
Gitlab 的托管 MCP 服务,由 gitlab.com 发布;需要凭据;Streamable HTTP。

GitLab MCP Server
由 GitHub 账号 sumirati 发布
本地运行的 GitLab MCP 服务器,让助手在 GitLab.com 或自建实例上读取和管理项目、分支、提交、合并请求、议题与 CI/CD 流水线。

Gitlab Ci Break Lint
由 GitHub 账号 jmshinhwa 发布
一个本地 MCP 服务器,指出 .gitlab-ci.yml 中在下次 GitLab 大版本升级后会被 runner 拒绝的行。

Gitlab Mcp
由 GitHub 账号 mrfentmen 发布
让助手无需 API 密钥即可查询 GitLab 上的公开项目和用户信息。

GitLab MCP Server
由 GitHub 账号 zereight 发布
GitLab MCP 服务器,让助手操作 GitLab 中的项目、合并请求、议题、流水线、Wiki 和发布。