
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 與發行版本。