GitLab Ci MCP
What it does
GitLab CI/CD MCP — pipelines, jobs, schedules, MRs, files. Any GitLab (SaaS or self-hosted).
- Connects パソコンで動く
- Account or key Needs GITLAB_URL, GITLAB_TOKEN
- Category 開発者ツール
インストール
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
GitLab Ci MCP に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
パソコン版 Claude アプリの設定ファイルを開く
SettingsDeveloperEdit Config
この設定を貼り付けて保存
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Claude を終了してもう一度開く
試してみる
GitLab Ci MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が GitLab Ci MCP を使っていると言うか、回答に GitLab Ci MCP のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ GitLab Ci MCP につなげません
GitLab Ci MCP はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
代わりにできること
A · GitLab Ci MCP につなげるアプリを使う
- GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
- GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
- GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
- GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
B · 開発者ツール の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
- Sentry✓ ChatGPT
- Compiler Explorer✓ ChatGPT
- GitDiagram✓ ChatGPT
Claude Code につなげますが、先に準備が必要です
GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
GitLab Ci MCP に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
ターミナルを開く
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
このコマンドを貼り付けて Enter
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Enter の前に「your-value」を自分のキーに書き換えてください
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Claude Code で /mcp と入力
GitLab Ci MCP が一覧にあり、接続済みと表示されれば OK です
試してみる
GitLab Ci MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が GitLab Ci MCP を使っていると言うか、回答に GitLab Ci MCP のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
GitLab Ci MCP に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
このボタンで Cursor を開く
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーを入力
GitLab Ci MCP の設定で GITLAB_URL, GITLAB_TOKEN, GITLAB_PROJECT_PATH, GITLAB_SSL_VERIFY が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Cursor の AI チャットを Agent モードで開く
試してみる
GitLab Ci MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が GitLab Ci MCP を使っていると言うか、回答に GitLab Ci MCP のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
GitLab Ci MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Python (uv) を入れてください(1 回だけ)
GitLab Ci MCP に登録してキーを作る
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
キーの取り方は下の提供元 README にあります
このボタンで VS Code を開く
コマンドを確認中 · 確認が通るとコピーボタンが出ます
キーを入力
GitLab Ci MCP の設定で GITLAB_URL, GITLAB_TOKEN, GITLAB_PROJECT_PATH, GITLAB_SSL_VERIFY が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
VS Code の AI チャットを Agent モードで開く
試してみる
GitLab Ci MCP を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が GitLab Ci MCP を使っていると言うか、回答に GitLab Ci MCP のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください
JSON 設定は下の「開発者向け」にあります
開発者向け:ターミナルのコマンドと JSON 設定
パソコンにインストール
Claude Code
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Claude Desktop (claude_desktop_config.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
Cursor (~/.cursor/mcp.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
VS Code (mcp.json)
コマンドを確認中 · 確認が通るとコピーボタンが出ます
自分で入力する値
GITLAB_URL必須 envGitLab instance URL (e.g. https://gitlab.com or https://gitlab.example.com)GITLAB_TOKEN秘密 必須 envGitLab Personal Access Token with 'api' scopeGITLAB_PROJECT_PATHenvDefault project path (e.g. my-org/my-repo); can be overridden per callGITLAB_SSL_VERIFYenvVerify SSL certificates (true/false). Set to 'false' for self-hosted GitLab with self-signed certs.
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ひと目でわかる
使えるアプリ
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月13日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント mshegolev で確認済みです
- ✓ 合格
今もメンテナンスされている
コードの最終更新:10 日前
- ✓ 合格
ライセンスがある
MITを使用
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
話し合い
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
ユーザーレビュー
まだレビューはありません
開発者ツールのほかのサーバーとの比較i
- このカテゴリのほかの5828件のうち77%よりスターが多い
- このカテゴリのほかの5828件のうち9%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5828件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
GitLab Ci MCPは安全ですか?
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:GITLAB_URL, GITLAB_TOKEN
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は10 日前、最新バージョン(0.5.1)がレジストリに届いたのは7 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリのほかの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
gitlab-ci-mcp
MCP server for GitLab CI/CD. Lets an LLM agent (Claude Code, Cursor, OpenCode, DevX Agent, etc.) work with pipelines, jobs, schedules, branches, tags, merge requests and repository files.
Python and FastMCP. Local stdio remains the default; opt-in Streamable HTTP supports shared deployments with one GitLab PAT per caller.
Works with any GitLab — SaaS gitlab.com or self-hosted / on-prem. Designed with corporate networks in mind: configurable NO_PROXY handling, optional SSL-verify toggle, per-project scoping via env vars.
Design highlights
- Tool annotations — every tool carries
readOnlyHint/destructiveHint/idempotentHint/openWorldHintso MCP clients can classify operations (e.g. ask for confirmation only on destructive ones likegitlab_merge_mr,gitlab_delete_schedule). - Structured output on every tool — each tool declares a TypedDict return type, so FastMCP auto-generates an
outputSchemaand every result carriesstructuredContentalongside a pre-rendered markdown text block. Clients that can render structured data use it; agents that prefer compact text get the markdown. Noresponse_formatparameter needed. - Structured errors — authentication, 404, 403, 429 (rate-limit), 5xx, missing-env errors are converted to actionable
ToolErrormessages (e.g. _"GitLab authentication failed… verify GITLAB_TOKEN hasapiscope"_) and surfaced asisError=Trueresults. - Pydantic input validation — every argument has typed constraints (ranges, lengths, literals) auto-exposed as JSON Schema.
- Explicit project scoping — every GitLab tool requires
project_pathby default. SetGITLAB_ALLOW_DEFAULT_PROJECT=trueto opt into the legacy environment fallback. - Pagination — list tools return a
paginationblock withpage,total,has_more,next_pageand a next-page hint in the markdown footer. - Per-user HTTP credentials — in Streamable HTTP mode every request must carry
X-GitLab-Token; GitLab API calls and cached clients are isolated by PAT. Stdio remains single-user withGITLAB_TOKEN. - MCP Resources —
gitlab://project/infoandgitlab://project/ci-configmirror common lookups for clients that prefer the Resource model over tools. - Lifespan management —
python-gitlabHTTP sessions are closed cleanly on server shutdown via anasynccontextmanagerlifespan hook. - Log grep —
gitlab_get_job_logacceptsgrep_pattern+grep_context(surrounding lines) for regex-filtering megabyte-scale CI logs without pulling the whole trace into agent context.
Threading model
FastMCP automatically runs synchronous tools in a worker thread (anyio.to_thread.run_sync), so they do not block the asyncio event loop — python-gitlab is a synchronous library and wrapping every call in asyncio.to_thread ourselves would be ceremony. Tools that benefit from the MCP Context (progress, info logs) are written as async def and explicitly wrap python-gitlab calls with asyncio.to_thread.
Features
24 tools covering the everyday CI/CD surface:
Pipelines gitlab_list_pipelines · gitlab_get_pipeline · gitlab_get_pipeline_jobs · gitlab_get_job_log · gitlab_trigger_pipeline · gitlab_retry_pipeline · gitlab_cancel_pipeline · gitlab_pipeline_health
Schedules gitlab_list_schedules · gitlab_create_schedule · gitlab_update_schedule · gitlab_delete_schedule
Branches & tags gitlab_list_branches · gitlab_list_tags · gitlab_compare_branches
Merge requests gitlab_list_merge_requests · gitlab_get_merge_request · gitlab_get_merge_request_changes · gitlab_create_merge_request · gitlab_merge_mr
Repository & project gitlab_get_file · gitlab_list_repository_tree · gitlab_project_info
Package gitlab_ci_mcp_check_updates
Pipeline health report
gitlab_pipeline_health returns a ready-to-read summary over 7/30 days:
Last 7d: 96.4% up | 27/28 success
Last 30d: 92.1% | 105/114 success Last 10: success success success failed success ...
Handy for on-call / triage: покажи health master за последние 7 дней.
Installation
Requires Python 3.10+.
# via uvx (recommended)
uvx --from gitlab-ci-mcp gitlab-ci-mcp
or via pip/pipx
pipx install gitlab-ci-mcp
Configuration
All config is via environment variables:
| Variable | Required | Description |
|---|---|---|
GITLAB_URL | yes | Base URL, e.g. https://gitlab.example.com |
GITLAB_TOKEN | stdio only | Personal Access Token with api scope. In HTTP mode, each client sends its own X-GitLab-Token header. |
MCP_TRANSPORT | no | stdio (default) or streamable-http |
MCP_HTTP_HOST | no | HTTP bind host; defaults to 127.0.0.1 |
MCP_HTTP_PORT | no | HTTP bind port; defaults to 8000 |
GITLAB_PROJECT_PATH | no | Legacy fallback project; used only with GITLAB_ALLOW_DEFAULT_PROJECT=true |
GITLAB_ALLOW_DEFAULT_PROJECT | no | Set to true to opt into the legacy GITLAB_PROJECT_PATH fallback |
MCP_GITLAB_UPDATE_CHECK_ENABLED | no | false by default; set to true to allow the explicit update-check tool to query PyPI |
GITLAB_SSL_VERIFY | no | true (default) / false |
GITLAB_NO_PROXY_DOMAINS | no | Comma-separated domains to add to NO_PROXY (useful in corp networks behind a local HTTP proxy — e.g. .corp.example.com,gitlab.internal) |
Every tool accepts a project_path arg. It is required by default so a call cannot silently target an environment-wide project. For legacy deployments, set GITLAB_ALLOW_DEFAULT_PROJECT=true together with GITLAB_PROJECT_PATH to opt into the old fallback behavior.
Update checking is disabled by default. Set MCP_GITLAB_UPDATE_CHECK_ENABLED=true to enable the explicit gitlab_ci_mcp_check_updates tool. When enabled, it makes one bounded request to fixed PyPI JSON, caches a result for five minutes, reports failures and unsupported versions, and never installs anything. No startup or other tool call performs this request. If called while disabled, the tool reports disabled without making a network request.
Pipeline health success rate uses completed pipelines only: success and failed are in the denominator; running, pending, manual, canceled, skipped, and other non-completed statuses are excluded. A missing comparison period or a sample without completed pipelines is reported as insufficient data, not as a zero rate or a flat trend.
Shared Streamable HTTP deployment
For a shared server, run with MCP_TRANSPORT=streamable-http. Each caller must send their own GitLab PAT in X-GitLab-Token; the server never falls back to the process GITLAB_TOKEN in this mode. GitLab applies that PAT's identity and permissions to each API operation. The header is a custom credential mechanism, not MCP OAuth; clients need support for configured custom headers.
The server binds to loopback (127.0.0.1:8000) by default. Expose it through an HTTPS reverse proxy, restrict network access, and redact the PAT header from proxy, tracing, and error logs. Initialize and tool discovery only check that the header is non-empty; GitLab validates the PAT when an API call is made.
Example for Claude Code (provide GITLAB_PAT through a secret manager; do not put a literal token in shell history):
claude mcp add --transport http \
--header "X-GitLab-Token: ${GITLAB_PAT}" \ gitlab https://mcp.example.com/mcp
The client must attach the header to every request. Each GitLab tool still requires an explicit project_path. Fixed resources gitlab://project/info and gitlab://project/ci-config have no project argument; they require the explicit compatibility setting GITLAB_ALLOW_DEFAULT_PROJECT=true and GITLAB_PROJECT_PATH.
Full credential details and limitations: docs/per-user-auth.md.
Claude Code
Full walkthrough: docs/claude-code.md — prerequisites, two install paths, multi-project setup, self-hosted GitLab behind a corp proxy, troubleshooting, uninstall.
Short version:
claude mcp add --transport stdio \
--env GITLAB_URL=https://gitlab.example.com \ --env GITLAB_TOKEN="$GITLAB_PAT" \ gitlab -- uvx --from gitlab-ci-mcp gitlab-ci-mcp
Each GitLab tool call must include project_path, for example project_path="my-org/my-repo". For legacy default-project behavior, also set GITLAB_PROJECT_PATH and GITLAB_ALLOW_DEFAULT_PROJECT=true.
Or in ~/.claude.json / project .mcp.json:
{
"mcpServers": { "gitlab": { "type": "stdio", "command": "uvx", "args": ["--from", "gitlab-ci-mcp", "gitlab-ci-mcp"], "env": { "GITLAB_URL": "https://gitlab.example.com", "GITLAB_TOKEN": "${GITLAB_PAT}", "GITLAB_PROJECT_PATH": "my-org/my-repo", "GITLAB_ALLOW_DEFAULT_PROJECT": "true", "GITLAB_SSL_VERIFY": "true" } } } }
Check:
claude mcp list
gitlab: uvx --from gitlab-ci-mcp gitlab-ci-mcp - ✓ Connected
Cursor / OpenCode / DevX Agent
Same idea — point the MCP config to uvx --from gitlab-ci-mcp gitlab-ci-mcp with the env vars above. See each tool's own MCP config syntax.
Example prompts
что сломалось в последнем pipeline master
покажи health master за 7 дней для проекта my-org/other-repo
создай MR из feature/foo в master с title "feat: foo"
покажи содержимое .gitlab-ci.yml из master
Rate limits & connection reuse
GitLab enforces a per-user rate limit (typically 2000 req/h for the REST API, configurable by the admin — see your instance's /admin/application_settings/network).
- The server caches a bounded
python-gitlabHTTP session per GitLab URL, project, and PAT fingerprint. Different users never reuse one another's cached client. - List tools default to
per_page=20to keep a single call within a small number of API requests. - If you hit a
429 Too Many Requests, the error handler returns an actionable message — wait and try again with largerper_pageor fewer calls.
Self-hosted GitLab behind a corporate proxy
When your laptop has a local HTTP proxy (e.g. http://127.0.0.1:3128 for corp web access) but GitLab is on the intranet, the proxy intercepts and kills internal requests. Two options:
- Set
GITLAB_NO_PROXY_DOMAINS— the server will add them toNO_PROXYat startup and clear `HTTP_PROXY`/`HTTPS_PROXY` from its own process so they don't affect GitLab traffic. - Pass explicitly empty
HTTP_PROXY=""etc. in the MCPenvsection.
Development
git clone https://github.com/mshegolev/gitlab-ci-mcp
cd gitlab-ci-mcp python -m venv .venv && . .venv/bin/activate pip install -e '.[dev]' pytest
Run the server directly (stdio transport is the default and waits on stdin for MCP messages):
GITLAB_URL=... GITLAB_TOKEN=... gitlab-ci-mcp
License
MIT — see LICENSE.
Acknowledgements
Built on python-gitlab and the MCP Python SDK.