gitlab-mcp
A policy-controlled MCP server that lets AI assistants read and manage GitLab resources through a broad tool registry.
Check server health and discover available tools, including whether each tool is currently enabled.
Browse/search projects, groups, members, iterations, repositories, code, files, trees, blame, and branches.
Create/update project metadata and repository files, push commits, manage branches and protected branches, and inspect commits/diffs/statuses.
Manage merge requests: create/update/merge/approve, inspect diffs/conflicts/code context, and work with discussions, notes, draft notes, and emoji reactions.
Manage issues: create/update/delete, add comments/discussions, link issues, add reactions, and handle to-dos.
Depending on enabled tools and policy, also use pipelines, deployments, labels, milestones, wikis, releases, webhooks, vulnerabilities, uploads, GraphQL, and raw API tools.
Enforce policy and security controls such as readonly/modify/full modes, tool allowlists/denylists, project scoping, feature toggles, and configurable auth/transports.
Provides comprehensive tools for GitLab: manage projects, merge requests, issues, pipelines, wikis, milestones, releases, labels, commits, branches, and file management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gitlab-mcp list merge requests assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gitlab-mcp
A production-ready MCP server for GitLab. It lets AI assistants read and manage GitLab projects, merge requests, issues, pipelines, wikis, releases, and more through a broad, policy-controlled tool registry.
Highlights
Comprehensive GitLab coverage — projects, merge requests (with code-context analysis and rebase), issues, pipelines (schedules, triggers, test reports, waits, log search), environments and deployments, wikis, milestones and iterations, releases, protected branches and tags, snippets, webhooks, vulnerabilities, labels, commits, GraphQL, and file management
Multiple transports — stdio for local CLI usage, Streamable HTTP for remote deployments, optional SSE
Flexible authentication — personal access tokens, OAuth 2.0 PKCE, external token scripts, token files, cookie-based auth, and per-request remote authorization
Policy engine — readonly/modify/full modes, tool allowlist/denylist, feature toggles, and project-scoped restrictions
Enterprise networking — HTTP/HTTPS proxy, custom CA certificates, Cloudflare bypass, multi-instance API rotation
Output control — JSON, compact JSON, or YAML formatting with configurable response size limits, optional JMESPath projection, and an optional masking policy for tokens, IPs, and keywords
Agent guidance — initialize instructions, workflow prompts (review an MR, triage a pipeline failure or vulnerabilities), and recovery hints on errors
Related MCP server: qodev-gitlab-mcp
Usage
Supported clients
Claude Desktop, Claude Code, VS Code, GitHub Copilot Chat (VS Code), Cursor, JetBrains AI Assistant, GitLab Duo, and any MCP client that supports stdio or streamable HTTP.
Current client format references:
Authentication methods
The server supports three auth patterns:
Personal Access Token (PAT)
OAuth 2.0 PKCE (recommended for local interactive use)
Remote per-request auth (
REMOTE_AUTHORIZATION=true, HTTP mode)
OAuth2 setup (stdio, recommended for local interactive use)
Create a GitLab OAuth application in
Settings -> Applications.Set redirect URI to
http://127.0.0.1:8765/callback(or your custom callback).Set scope to
api.Copy the Application ID as
GITLAB_OAUTH_CLIENT_ID.
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "gitlab-mcp@latest"],
"env": {
"GITLAB_USE_OAUTH": "true",
"GITLAB_OAUTH_CLIENT_ID": "your_oauth_client_id",
"GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8765/callback",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_ALLOWED_PROJECT_IDS": "",
"GITLAB_PERMISSION_MODE": "full",
"USE_GITLAB_WIKI": "true",
"USE_MILESTONE": "true",
"USE_PIPELINE": "true"
}
}
}
}If your OAuth app is confidential, also set GITLAB_OAUTH_CLIENT_SECRET.
Personal Access Token setup (stdio)
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "gitlab-mcp@latest"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_ALLOWED_PROJECT_IDS": "",
"GITLAB_PERMISSION_MODE": "full",
"USE_GITLAB_WIKI": "true",
"USE_MILESTONE": "true",
"USE_PIPELINE": "true"
}
}
}
}VS Code .vscode/mcp.json examples
PAT with secure prompt input:
{
"inputs": [
{
"type": "promptString",
"id": "gitlab_token",
"description": "GitLab Personal Access Token",
"password": true
}
],
"servers": {
"gitlab": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/gitlab-mcp/dist/index.js"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "${input:gitlab_token}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_PERMISSION_MODE": "full"
}
}
}
}OAuth (confidential app) with secure prompt input:
{
"inputs": [
{
"type": "promptString",
"id": "gitlab_oauth_secret",
"description": "GitLab OAuth Client Secret",
"password": true
}
],
"servers": {
"gitlab": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/gitlab-mcp/dist/index.js"],
"env": {
"GITLAB_USE_OAUTH": "true",
"GITLAB_OAUTH_CLIENT_ID": "your_oauth_client_id",
"GITLAB_OAUTH_CLIENT_SECRET": "${input:gitlab_oauth_secret}",
"GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8765/callback",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
}
}GitHub Copilot Chat in VS Code uses the same .vscode/mcp.json format.
Claude Desktop / Claude Code / Cursor
Claude Desktop reads claude_desktop_config.json.
Claude Code supports project-level .mcp.json and claude mcp add-json.
Cursor uses .cursor/mcp.json.
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/absolute/path/to/gitlab-mcp/dist/index.js"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
}
}GitLab Duo (~/.gitlab/duo/mcp.json)
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/absolute/path/to/gitlab-mcp/dist/index.js"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
},
"approvedTools": ["gitlab_get_project", "gitlab_list_merge_requests"]
}JetBrains AI Assistant
JetBrains can import an existing MCP JSON config or register the server manually.
Use stdio command node /absolute/path/to/gitlab-mcp/dist/index.js, or HTTP endpoint http://127.0.0.1:3333/mcp with required headers.
Remote authorization (multi-user HTTP)
Start server:
REMOTE_AUTHORIZATION=true \
HTTP_HOST=0.0.0.0 \
MCP_ALLOWED_HOSTS=127.0.0.1 \
HTTP_PORT=3333 \
node dist/http.jsClient config:
{
"mcpServers": {
"gitlab": {
"url": "http://127.0.0.1:3333/mcp",
"headers": {
"Authorization": "Bearer glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}Dynamic per-request API URL:
REMOTE_AUTHORIZATION=true \
ENABLE_DYNAMIC_API_URL=true \
HTTP_HOST=0.0.0.0 \
MCP_ALLOWED_HOSTS=127.0.0.1 \
HTTP_PORT=3333 \
node dist/http.jsAdd header in client requests:
{
"headers": {
"Authorization": "Bearer glpat-xxxxxxxxxxxxxxxxxxxx",
"X-GitLab-API-URL": "https://gitlab.example.com/api/v4"
}
}Remote auth behavior matrix:
Server Mode | Required Request Headers | Token Fallback Chain |
| none | enabled |
|
| disabled |
|
| disabled |
When HTTP_HOST is not 127.0.0.1, localhost, or ::1, HTTP startup rejects
server-side GITLAB_PERSONAL_ACCESS_TOKEN or GITLAB_JOB_TOKEN unless inbound
requests are protected by MCP_HTTP_AUTH_TOKEN, REMOTE_AUTHORIZATION=true, or
GITLAB_MCP_OAUTH=true.
Docker
For containerized deployments, PAT or remote auth is recommended.
OAuth interactive callback flow is usually less convenient in containers.
The Compose service listens on 0.0.0.0 inside the container but publishes only
127.0.0.1:3333 on the host by default. For the remote-authorization example,
set REMOTE_AUTHORIZATION=true in .env, leave server-side GitLab credentials
empty, and send each client's GitLab token as shown above.
docker compose up --build -dor:
docker build -t gitlab-mcp .
docker run -d \
--name gitlab-mcp \
-p 127.0.0.1:3333:3333 \
-e HTTP_HOST=0.0.0.0 \
-e MCP_ALLOWED_HOSTS=127.0.0.1 \
-e REMOTE_AUTHORIZATION=true \
-e GITLAB_API_URL=https://gitlab.com/api/v4 \
gitlab-mcpClients must send their GitLab credential in Authorization: Bearer <token>,
Private-Token, or Job-Token. To keep a GitLab token in the container instead,
set a separate 32+ character MCP_HTTP_AUTH_TOKEN and require clients to send that
value as the bearer token; never expose a server-held GitLab token as the MCP bearer.
Compatibility notes
GITLAB_PROJECT_IDis not a supported environment variable in this repository.To set an effective default project, use
GITLAB_ALLOWED_PROJECT_IDSwith one project ID, or passproject_idin tool arguments.CLI argument overrides such as
--tokenor--api-urlare not implemented (--env-fileis supported).JSON config files do not support comments (
//).
MCP Server Configuration
HTTP server
pnpm install
cp .env.example .env
pnpm build
# stdio (local MCP)
pnpm start
# streamable HTTP server (http://127.0.0.1:3333/mcp)
pnpm start:http
# optional: load a specific env file
pnpm start -- --env-file .env.local
pnpm start:http -- --env-file .env.localTransport and entrypoint
Transport | Entry Point | Endpoint | Best For |
stdio |
| stdin/stdout | Local single-user MCP clients |
Streamable HTTP |
|
| Remote/shared deployments |
SSE (legacy) |
|
| Legacy SSE-only clients ( |
Health |
|
| Liveness/readiness checks |
SSE=true is not compatible with REMOTE_AUTHORIZATION=true.
Tool Categories
Tools are organized into these categories. All GitLab tools use the gitlab_ prefix, except health_check.
Category | Examples |
Projects |
|
Repository |
|
Merge Requests |
|
MR Code Context |
|
MR Discussions |
|
MR Notes |
|
Draft Notes |
|
Issues |
|
Pipelines |
|
Deployments |
|
Commits |
|
Labels |
|
Milestones |
|
Snippets |
|
Security |
|
Webhooks |
|
Releases |
|
Wiki |
|
Uploads |
|
GraphQL |
|
Users & Groups |
|
Opt-in |
|
Health |
|
During initialize, the server also sends MCP instructions: a short briefing on ID formats, token-saving review and CI workflows, gitlab_discover_tools, untrusted content, and the active permission mode, project scope, and toolsets.
See docs/tools.md for usage details and docs/tools-index.md for the generated complete registry.
Policy & Security
The policy engine controls which tools are available at registration time:
# Read-only mode — exposes only read and GraphQL query capabilities
GITLAB_PERMISSION_MODE=readonly
# Modify mode — allows read/write/admin, but hides delete-capability tools
GITLAB_PERMISSION_MODE=modify
# Deprecated legacy kill switch; true takes precedence and forces readonly
GITLAB_READ_ONLY_MODE=true
# Disable specific capability classes without going fully read-only
GITLAB_DISABLED_CAPABILITIES=delete,graphql
# Only expose specific tools (supports with or without gitlab_ prefix)
GITLAB_ALLOWED_TOOLS=get_project,list_merge_requests,get_merge_request
# Or select compact domain presets (multiple values form a union)
GITLAB_TOOLSETS=core,wiki
# Opt in only for clients that still call legacy duplicate names
GITLAB_ENABLE_COMPATIBILITY_ALIASES=true
# Sensitive variable administration is hidden until explicitly enabled
GITLAB_ENABLE_CI_VARIABLE_TOOLS=true
# Optional second gate; callers must also pass include_value=true
GITLAB_ALLOW_CI_VARIABLE_VALUES=false
# Group Dependency Proxy administration is also opt-in
GITLAB_ENABLE_DEPENDENCY_PROXY_TOOLS=true
# Block tools by regex pattern
GITLAB_DENIED_TOOLS_REGEX=^gitlab_(delete|create)_
# Restrict to specific projects
GITLAB_ALLOWED_PROJECT_IDS=123,456,789
# Legacy compatibility setting; raw GraphQL remains disabled in project-scoped mode
GITLAB_ALLOW_GRAPHQL_WITH_PROJECT_SCOPE=false
# Disable feature groups
USE_PIPELINE=false
USE_GITLAB_WIKI=falseThe two sensitive tool families use two independent gates. Enabling a family does not add it to the default core registry; select its toolset (or all) as well:
GITLAB_TOOLSETS=core,ci-variables,dependency-proxy
GITLAB_ENABLE_CI_VARIABLE_TOOLS=true
GITLAB_ENABLE_DEPENDENCY_PROXY_TOOLS=trueUnsafe or invalid GITLAB_DENIED_TOOLS_REGEX patterns fail startup.
In modify mode, raw GraphQL mutation tools remain available for updates, but the server parses each document and blocks mutation-root fields containing deletion or teardown verbs such as delete, destroy, remove, purge, erase, revoke, unprotect, or stop. Aliases and fragment expansion cannot bypass the check, and documents that cannot be verified fail closed.
GITLAB_ALLOWED_PROJECT_IDS is a strict resource boundary, not just a default project. Project-scoped tools validate every supplied source, target, and parent project ID. Safe global list/search tools return only allowed projects (global code search is executed once per allowed project), while group-wide, namespace-wide, user-wide, event-wide, fork, and unscoped create operations are hidden. Todo reads are filtered and a single todo is verified before mutation. Raw GraphQL executors are always hidden because an arbitrary document cannot be proven project-safe; project-bound Work Item tools remain available and enforce the same allowlist. The legacy GITLAB_ALLOW_GRAPHQL_WITH_PROJECT_SCOPE variable is retained for configuration compatibility but cannot override this boundary.
Configuration
All configuration is done through environment variables. Key settings:
For file-based loading, .env is loaded by default. You can override it with:
node dist/index.js --env-file .env.local
node dist/http.js --env-file=.env.productionArea | Variable | Default | Description |
GitLab API |
|
| Base API URL. Supports comma-separated multi-instance URLs. |
GitLab API |
| — | Static default token used when |
GitLab API |
| — | Static CI job token fallback when no personal access token is configured. |
Remote Auth |
|
| Require per-request token headers in HTTP mode (disables fallback token chain). |
Remote Auth |
|
| Require |
Remote Auth |
|
| Enable stateless MCP OAuth. Requires a pre-registered app, public URL, and shared state secret. |
Remote Auth |
| — | Application ID of the pre-registered GitLab OAuth app used by MCP OAuth. |
Remote Auth |
| — | Shared 32–64 byte base64(url) master key for stateless OAuth values. |
HTTP Server |
|
| HTTP bind host ( |
HTTP Server |
|
| HTTP server port. |
HTTP Server |
| — | Public base URL used when HTTP download tools return proxy URLs. |
HTTP Server |
|
| Force JSON-only responses (no streaming framing). |
HTTP Server |
|
| Largest JSON request body in bytes (64 KiB to 50 MiB). |
HTTP Server |
|
| Enable legacy SSE endpoints ( |
Sessions |
|
| Idle session timeout in HTTP mode. |
Sessions |
|
| Use stateless Streamable HTTP transports; clients must send auth on every request. |
Sessions |
|
| Maximum concurrent sessions ( |
Sessions |
|
| Per-session rate limit ( |
Policy |
|
|
|
Policy |
|
| Deprecated kill switch. When |
Policy |
| — | Restrict access to specific GitLab project IDs. |
Policy |
| — | Tool allowlist (supports names with or without |
Policy |
|
| Full registry by default; use presets like |
Policy |
| — | Capability denylist. Valid values: |
Policy |
|
| Second gate for CI/CD and schedule variable tools; also select |
Policy |
|
| Allow values only when a list/get call also passes |
Policy |
|
| Second gate for Dependency Proxy tools; also select |
Policy |
| — | Regex denylist for tool names. |
Policy |
|
| Deprecated compatibility setting; raw GraphQL stays disabled in project-scoped mode. |
Auth Extensions |
|
| Enable OAuth 2.0 PKCE flow. |
Auth Extensions |
| mode-dependent | OAuth scopes advertised/requested by local OAuth and MCP OAuth. |
Auth Extensions |
| — | Resolve token from an external script. |
Auth Extensions |
| — | Resolve token from a local file. |
Auth Extensions |
| — | Enable cookie-jar based session auth from Netscape cookie file. |
Output |
|
| Response format; prefer |
Output |
|
| Max response payload (1KB–2MB), oversized payloads are truncated safely. |
Output |
|
| Max size for files saved locally by download tools such as job artifacts. |
Output |
| current working directory | Comma-separated roots allowed for stdio local uploads and artifact writes. |
Output |
| random per process | Random 32+ character secret for short-lived download URLs; set this for multi-replica deployments. |
Output |
|
| Lifetime of generated HTTP download proxy URLs. |
Output |
|
| Upstream GitLab HTTP timeout (1s–120s). |
Output |
|
| Retries for idempotent GETs on 429/502/503/504; mutations are never retried. |
Output |
|
| Initial exponential delay for retryable GETs without |
Output |
|
| Maximum accepted retry delay; longer |
Output |
|
| Error verbosity ( |
Network/TLS |
| — | Proxy settings for outbound GitLab requests, including per-host proxy bypass rules. |
Network/TLS |
| — | Custom CA certificate path (PEM). |
Network/TLS |
|
| Add browser-like headers for Cloudflare-protected instances. |
Network/TLS |
| — | Custom User-Agent for GitLab requests. |
See docs/configuration.md for the complete reference.
Authentication Methods
Authentication behavior depends on mode:
REMOTE_AUTHORIZATION=true(HTTP strong mode) Each request must includeAuthorization: Bearer <token>,Private-Token: <token>, orJob-Token: <token>. WhenENABLE_DYNAMIC_API_URL=true, each request must also includeX-GitLab-API-URL.REMOTE_AUTHORIZATION=false(default mode) The server resolves credentials in this order:GITLAB_PERSONAL_ACCESS_TOKEN->GITLAB_JOB_TOKEN-> OAuth PKCE (GITLAB_USE_OAUTH=true) ->GITLAB_TOKEN_SCRIPT->GITLAB_TOKEN_FILE.
Cookie-based auth (GITLAB_AUTH_COOKIE_PATH) is applied independently via a cookie jar and can work with or without a token.
See docs/authentication.md for setup guides.
Development
pnpm dev # stdio mode with hot-reload
pnpm dev:http # HTTP mode with hot-reload
pnpm test # Run tests
pnpm test:live # Run opt-in read-only checks against a real GitLab instance
pnpm test:watch # Run tests in watch mode
pnpm lint # Lint
pnpm typecheck # Type check
pnpm inspector # Launch MCP InspectorProject Structure
See docs/architecture.md for detailed design documentation.
Documentation
Configuration Reference — All environment variables
Tools Reference — Complete list of MCP tools
Generated Tool Index — Registry inventory checked by CI
Security Policy — Private vulnerability reporting and deployment baseline
Authentication Guide — Auth methods and setup
Deployment Guide — Docker, production, and multi-instance
Live Testing — Manual read-only checks against a real GitLab instance
Architecture — Internal design and patterns
Acknowledgements
This repository references and learns from parts of the implementation in zereight/gitlab-mcp. Thanks to the maintainers and contributors for their work.
License
MIT
Available Tools
268 toolsgitlab_approve_deploymentApprove or Reject DeploymentA
Approve or reject a blocked deployment to a protected environment. Approving can let a production deploy proceed. Premium/Ultimate.
Inputs: status (required), deployment_id (required), comment, project_id, +1 more.
gitlab_approve_merge_requestApprove Merge RequestC
Approve a merge request.
Inputs: merge_request_iid (required), sha, project_id, approval_password.
gitlab_bulk_publish_draft_notesBulk Publish Draft NotesA
Publish all merge-request draft notes. On GitLab 19.2+ it can also set your reviewer state (requested_changes or reviewed; not a formal approval) and post a summary note, even with no drafts.
Inputs: merge_request_iid (required), note, internal, project_id, +1 more.
gitlab_cancel_pipelineCancel PipelineC
Cancel a running pipeline.
Inputs: pipeline_id (required), project_id.
gitlab_cancel_pipeline_jobCancel Pipeline JobB
Cancel one running job. force=true also cancels a job stuck in the canceling state.
Inputs: job_id (required), force, project_id.
gitlab_confirm_vulnerabilityConfirm VulnerabilityC
Mark a vulnerability of project_id as confirmed, optionally with a comment. Ultimate.
Inputs: vulnerability_id (required), comment, project_id.
gitlab_convert_work_item_typeConvert Work Item TypeC
Convert a work item to a different type.
Inputs: iid (required), new_type (required), project_id.
gitlab_create_branchCreate BranchB
Create a new branch from an existing ref.
Inputs: branch (required), ref, project_id.
gitlab_create_commit_statusCreate Commit StatusC
Create or update the status of a commit.
Inputs: sha (required), state (required), ref, name, +6 more.
gitlab_create_deploymentCreate DeploymentB
Record a deployment of a commit to an environment, for deploys performed outside GitLab CI/CD. The environment is created if it does not exist.
Inputs: ref (required), sha (required), tag (required), status (required), +2 more.
gitlab_create_draft_noteCreate Draft NoteC
Create a merge-request draft note.
Inputs: body (required), merge_request_iid (required), position, project_id, +1 more.
gitlab_create_environmentCreate EnvironmentB
Create a project environment with optional external URL, tier, description, Kubernetes settings, and auto-stop behavior.
Inputs: name (required), tier, project_id, description, +5 more.
gitlab_create_groupCreate GroupC
Create a new GitLab group or subgroup.
Inputs: name (required), path (required), parent_id, visibility, +1 more.
gitlab_create_group_iterationCreate Group IterationB
Create an iteration in a group. Recent GitLab versions require iterations_cadence_id of a manual (non-automatic) cadence. Dates use YYYY-MM-DD. Premium/Ultimate.
Inputs: group_id (required), title, due_date, start_date, +2 more.
gitlab_create_group_iteration_cadenceCreate Group Iteration CadenceA
Create an iteration cadence. automatic cadences schedule iterations from start_date, duration_in_weeks, and iterations_in_advance; manual cadences let you create iterations yourself. Premium/Ultimate.
Inputs: title (required), active (required), group_id (required), automatic (required), +5 more.
gitlab_create_group_milestoneCreate Group MilestoneB
Create a group milestone that projects and subgroups in the group can use. Dates use YYYY-MM-DD.
Inputs: title (required), group_id (required), due_date, start_date, +1 more.
gitlab_create_group_wiki_pageCreate Group Wiki PageD
Create a group wiki page.
Inputs: title (required), content (required), group_id (required), format.
gitlab_create_issueCreate IssueD
Create a new issue.
Inputs: title (required), labels, due_date, issue_type, +5 more.
gitlab_create_issue_emoji_reactionCreate Issue Emoji ReactionC
Add an emoji reaction to an issue, for example thumbsup, rocket, or eyes.
Inputs: name (required), issue_iid (required), project_id.
gitlab_create_issue_linkCreate Issue LinkC
Create a relation between two issues.
Inputs: issue_iid (required), target_issue_iid (required), target_project_id (required), link_type, +1 more.
gitlab_create_issue_noteCreate Issue NoteC
Create issue comment (top-level or discussion note).
Inputs: body (required), issue_iid (required), created_at, project_id, +1 more.
gitlab_create_issue_note_emoji_reactionCreate Issue Note Emoji ReactionC
Add an emoji reaction to an issue note. Pass discussion_id for discussion replies.
Inputs: name (required), note_id (required), issue_iid (required), project_id, +1 more.
gitlab_create_labelCreate LabelD
Create a label.
Inputs: name (required), color (required), priority, project_id, +1 more.
gitlab_create_merge_requestCreate Merge RequestD
Create a merge request.
Inputs: title (required), source_branch (required), target_branch (required), draft, +10 more.
gitlab_create_merge_request_discussion_noteCreate MR Discussion NoteC
Add note to existing MR discussion thread.
Inputs: body (required), discussion_id (required), merge_request_iid (required), created_at, +1 more.
gitlab_create_merge_request_emoji_reactionCreate Merge Request Emoji ReactionA
Add an emoji reaction to a merge request, for example thumbsup, rocket, or eyes.
Inputs: name (required), merge_request_iid (required), project_id.
gitlab_create_merge_request_noteCreate Merge Request NoteC
Create a top-level MR note.
Inputs: body (required), merge_request_iid (required), project_id.
gitlab_create_merge_request_note_emoji_reactionCreate MR Note Emoji ReactionC
Add an emoji reaction to a merge request note. Pass discussion_id for discussion replies.
Inputs: name (required), note_id (required), merge_request_iid (required), project_id, +1 more.
gitlab_create_merge_request_threadCreate Merge Request ThreadC
Create a new MR discussion thread (supports diff positions).
Inputs: body (required), merge_request_iid (required), position, created_at, +1 more.
gitlab_create_milestoneCreate MilestoneD
Create a milestone.
Inputs: title (required), due_date, project_id, start_date, +1 more.
gitlab_create_noteCreate NoteC
Create a note on an issue or merge request.
Inputs: body (required), noteable_iid (required), noteable_type (required), project_id.
gitlab_create_or_update_fileCreate Or Update FileC
Create or update one file in repository.
Inputs: branch (required), content (required), file_path (required), commit_message (required), +9 more.
gitlab_create_pipelineCreate PipelineC
Trigger a new pipeline.
Inputs: ref (required), inputs, variables, project_id.
gitlab_create_pipeline_scheduleCreate Pipeline ScheduleA
Create a recurring pipeline from a cron expression. cron_timezone defaults to UTC; use a full ref such as refs/heads/main when a branch and tag share a name. inputs ([{name, value}]) need GitLab 18.1+.
Inputs: ref (required), cron (required), description (required), active, +3 more.
gitlab_create_pipeline_triggerCreate Pipeline Trigger TokenA
Create a pipeline trigger token for external systems. The response contains the new token once; store it securely because list, get, and update never return it.
Inputs: description (required), expires_at, project_id.
gitlab_create_project_snippetCreate Project SnippetB
Create a project snippet with 1 to 10 files. visibility defaults to the project setting; public snippets are visible to anyone who can see the project.
Inputs: files (required), title (required), project_id, visibility, +1 more.
gitlab_create_releaseCreate ReleaseC
Create a release.
Inputs: tag_name (required), ref, name, assets, +5 more.
gitlab_create_release_evidenceCreate Release EvidenceB
Create evidence for an existing release.
Inputs: tag_name (required), project_id.
gitlab_create_repositoryCreate RepositoryC
Create a new GitLab project/repository.
Inputs: name (required), path, visibility, description, +3 more.
gitlab_create_tagCreate TagB
Create a repository tag from a branch, commit SHA, or another tag.
Inputs: ref (required), tag_name (required), message, project_id.
gitlab_create_timeline_eventCreate Timeline EventB
Create an incident timeline event with optional known GitLab incident timeline tags.
Inputs: note (required), occurred_at (required), incident_iid (required), tag_names, +1 more.
gitlab_create_webhookCreate WebhookB
Create a project or group webhook. GitLab then sends the selected event payloads to url, so only target endpoints you trust. token and url are redacted from errors and never returned.
Inputs: url (required), name, token, group_id, +24 more.
gitlab_create_wiki_pageCreate Wiki PageD
Create a wiki page.
Inputs: title (required), content (required), format, project_id.
gitlab_create_work_itemCreate Work ItemC
Create a work item of type issue, task, incident, test_case, epic, key_result, objective, requirement, or ticket.
Inputs: title (required), type, labels, weight, +10 more.
gitlab_create_work_item_emoji_reactionCreate Work Item Emoji ReactionC
Add an emoji reaction to a work item, for example thumbsup, rocket, or eyes.
Inputs: iid (required), name (required), project_id.
gitlab_create_work_item_noteCreate Work Item NoteC
Add a note or threaded reply to a work item.
Inputs: iid (required), body (required), internal, project_id, +1 more.
gitlab_create_work_item_note_emoji_reactionCreate Work Item Note Emoji ReactionC
Add an emoji reaction to a work item note by GraphQL note_id.
Inputs: iid (required), name (required), note_id (required), project_id.
gitlab_delete_branchDelete BranchADestructive
Delete a repository branch permanently. Requires branch. Recommended pre-check: gitlab_get_branch.
Inputs: branch (required), project_id.
gitlab_delete_deploymentDelete DeploymentADestructive
Delete a deployment record permanently. GitLab refuses running deployments and the latest deployment of an environment. Requires deployment_id. Recommended pre-check: gitlab_get_deployment.
Inputs: deployment_id (required), project_id.
gitlab_delete_draft_noteDelete Draft NoteADestructive
Delete a merge-request draft note permanently. Irreversible. Requires merge_request_iid and draft_note_id. Recommended pre-check: gitlab_get_draft_note or gitlab_list_draft_notes.
Inputs: draft_note_id (required), merge_request_iid (required), project_id.
gitlab_delete_environmentDelete EnvironmentADestructive
Delete a stopped environment permanently. Irreversible. Requires environment_id. Recommended pre-check: gitlab_get_environment, then gitlab_stop_environment.
Inputs: environment_id (required), project_id.
gitlab_delete_group_iterationDelete Group IterationADestructive
Delete a group iteration permanently; issues lose the iteration. Irreversible. Requires group_id and iteration_id. Recommended pre-check: gitlab_list_group_iterations. Premium/Ultimate.
Inputs: group_id (required), iteration_id (required).
gitlab_delete_group_iteration_cadenceDelete Group Iteration CadenceADestructive
Delete an iteration cadence and its iterations permanently. Irreversible. Requires group_id and iteration_cadence_id. Recommended pre-check: gitlab_list_group_iteration_cadences. Premium/Ultimate.
Inputs: group_id (required), iteration_cadence_id (required).
gitlab_delete_group_milestoneDelete Group MilestoneADestructive
Delete a group milestone permanently; issues and merge requests lose the milestone. Irreversible. Requires group_id and milestone_id. Recommended pre-check: gitlab_get_group_milestone.
Inputs: group_id (required), milestone_id (required).
gitlab_delete_group_wiki_pageDelete Group Wiki PageADestructive
Delete a group wiki page permanently. Irreversible. Requires group_id and slug. Recommended pre-check: gitlab_get_group_wiki_page or gitlab_list_group_wiki_pages.
Inputs: slug (required), group_id (required).
gitlab_delete_issueDelete IssueADestructive
Delete an issue permanently. Irreversible. Requires issue_iid. Recommended pre-check: gitlab_get_issue.
Inputs: issue_iid (required), project_id.
gitlab_delete_issue_emoji_reactionDelete Issue Emoji ReactionADestructive
Delete an emoji reaction from an issue permanently. Irreversible for that reaction. Requires issue_iid and award_id. Recommended pre-check: gitlab_list_issue_emoji_reactions.
Inputs: award_id (required), issue_iid (required), project_id.
gitlab_delete_issue_linkDelete Issue LinkADestructive
Delete an issue link permanently. Irreversible for that relation. Requires issue_iid and issue_link_id. Recommended pre-check: gitlab_get_issue_link or gitlab_list_issue_links.
Inputs: issue_iid (required), issue_link_id (required), project_id.
gitlab_delete_issue_note_emoji_reactionDelete Issue Note Emoji ReactionADestructive
Delete an emoji reaction from an issue note permanently. Irreversible for that reaction. Requires issue_iid, note_id, and award_id. Recommended pre-check: gitlab_list_issue_note_emoji_reactions.
Inputs: note_id (required), award_id (required), issue_iid (required), project_id, +1 more.
gitlab_delete_labelDelete LabelADestructive
Delete a label permanently. Irreversible. Requires name or label_id. Recommended pre-check: gitlab_get_label or gitlab_list_labels.
Inputs: name, label_id, project_id.
gitlab_delete_merge_request_discussion_noteDelete MR Discussion NoteADestructive
Delete an MR discussion note permanently. Irreversible. Requires merge_request_iid, discussion_id, and note_id. Recommended pre-check: gitlab_list_merge_request_discussions.
Inputs: note_id (required), discussion_id (required), merge_request_iid (required), project_id.
gitlab_delete_merge_request_emoji_reactionDelete Merge Request Emoji ReactionADestructive
Delete an emoji reaction from a merge request permanently. Irreversible for that reaction. Requires merge_request_iid and award_id. Recommended pre-check: gitlab_list_merge_request_emoji_reactions.
Inputs: award_id (required), merge_request_iid (required), project_id.
gitlab_delete_merge_request_noteDelete Merge Request NoteADestructive
Delete a top-level MR note permanently. Irreversible. Requires merge_request_iid and note_id. Recommended pre-check: gitlab_get_merge_request_note or gitlab_list_merge_request_notes.
Inputs: note_id (required), merge_request_iid (required), project_id.
gitlab_delete_merge_request_note_emoji_reactionDelete MR Note Emoji ReactionBDestructive
Delete an emoji reaction from a merge request note permanently. Irreversible for that reaction. Requires merge_request_iid, note_id, and award_id. Recommended pre-check: gitlab_list_merge_request_note_emoji_reactions.
Inputs: note_id (required), award_id (required), merge_request_iid (required), project_id, +1 more.
gitlab_delete_milestoneDelete MilestoneADestructive
Delete a milestone permanently. Irreversible. Requires milestone_id. Recommended pre-check: gitlab_get_milestone or gitlab_list_milestones.
Inputs: milestone_id (required), project_id.
gitlab_delete_pipelineDelete PipelineADestructive
Delete a pipeline and its job logs, artifacts, and test reports permanently. Irreversible. Requires pipeline_id. Recommended pre-check: gitlab_get_pipeline.
Inputs: pipeline_id (required), project_id.
gitlab_delete_pipeline_scheduleDelete Pipeline ScheduleADestructive
Delete a pipeline schedule and its variables permanently. Irreversible; prefer gitlab_update_pipeline_schedule with active=false to pause. Requires pipeline_schedule_id.
Inputs: pipeline_schedule_id (required), project_id.
gitlab_delete_pipeline_triggerDelete Pipeline Trigger TokenADestructive
Delete a pipeline trigger token permanently; systems that use it can no longer start pipelines. Requires trigger_id. Recommended pre-check: gitlab_list_pipeline_triggers.
Inputs: trigger_id (required), project_id.
gitlab_delete_project_snippetDelete Project SnippetADestructive
Delete a project snippet and all of its files permanently. Irreversible. Requires snippet_id. Recommended pre-check: gitlab_get_project_snippet.
Inputs: snippet_id (required), project_id.
gitlab_delete_releaseDelete ReleaseADestructive
Delete the release record for tag_name permanently. Irreversible for the release entry. Requires tag_name. Recommended pre-check: gitlab_get_release or gitlab_list_releases.
Inputs: tag_name (required), project_id.
gitlab_delete_review_app_environmentsDelete Review App EnvironmentsADestructive
Find stopped review-app environments older than before (default 30 days ago) and, with dry_run=false, schedule their deletion one week later. dry_run defaults to true and only previews.
Inputs: limit, before, dry_run, project_id.
gitlab_delete_tagDelete TagADestructive
Delete a repository tag permanently. Irreversible for tag_name. Requires tag_name. Recommended pre-check: gitlab_get_tag or gitlab_list_tags.
Inputs: tag_name (required), project_id.
gitlab_delete_webhookDelete WebhookADestructive
Delete a project or group webhook permanently; GitLab stops sending its events. Irreversible. Requires hook_id. Recommended pre-check: gitlab_list_webhooks.
Inputs: hook_id (required), group_id, project_id.
gitlab_delete_wiki_pageDelete Wiki PageADestructive
Delete a wiki page permanently. Irreversible. Requires slug. Recommended pre-check: gitlab_get_wiki_page or gitlab_list_wiki_pages.
Inputs: slug (required), project_id.
gitlab_delete_work_item_emoji_reactionDelete Work Item Emoji ReactionADestructive
Remove the current user's emoji reaction from a work item by emoji name. Requires iid and name.
Inputs: iid (required), name (required), project_id.
gitlab_delete_work_item_note_emoji_reactionDelete Work Item Note Emoji ReactionADestructive
Remove the current user's emoji reaction from a work item note by GraphQL note_id and emoji name.
Inputs: iid (required), name (required), note_id (required), project_id.
gitlab_discover_toolsDiscover GitLab ToolsBRead-onlyIdempotent
Search the complete tool registry without mutating session state. Results explain whether each tool is currently enabled.
Inputs: limit, query, toolset, capability, +1 more.
gitlab_dismiss_vulnerabilityDismiss VulnerabilityB
Dismiss a vulnerability of project_id with a reason (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) and an optional comment. Ultimate.
Inputs: reason (required), vulnerability_id (required), comment, project_id.
gitlab_download_attachmentDownload AttachmentCRead-onlyIdempotent
Download attachment by URL/path and return base64.
Inputs: secret, filename, project_id, url_or_path.
gitlab_download_job_artifactsDownload Job ArtifactsBRead-onlyIdempotent
Download the full job artifacts archive as base64 content.
Inputs: job_id (required), project_id.
gitlab_download_job_artifacts_localDownload Job Artifacts LocalC
Download the full job artifacts archive to a local directory.
Inputs: job_id (required), local_path, project_id.
gitlab_download_release_assetDownload Release AssetBRead-onlyIdempotent
Download a release asset using its direct asset path.
Inputs: tag_name (required), direct_asset_path (required), project_id.
gitlab_erase_pipeline_jobErase Pipeline JobADestructive
Erase a finished job's log and artifacts permanently; the job record remains. Irreversible. Requires job_id. Recommended pre-check: gitlab_get_pipeline_job.
Inputs: job_id (required), project_id.
gitlab_execute_graphql_mutationExecute GraphQL MutationA
Execute a GraphQL mutation. Readonly mode disables this tool; modify mode rejects destructive mutation-root fields.
Inputs: query (required), variables.
gitlab_execute_graphql_queryExecute GraphQL QueryCRead-onlyIdempotent
Execute read-only GraphQL query.
Inputs: query (required), variables.
gitlab_fork_repositoryFork RepositoryC
Fork an existing project to another namespace.
Inputs: name, path, namespace, project_id, +4 more.
gitlab_get_branchGet BranchBRead-onlyIdempotent
Get details for one repository branch.
Inputs: branch (required), project_id.
gitlab_get_branch_diffsGet Branch DiffsCRead-onlyIdempotent
Compare two branches/refs and return diffs.
Inputs: to (required), from (required), straight, project_id, +1 more.
gitlab_get_ci_catalog_resourceGet CI/CD Catalog ResourceBRead-onlyIdempotent
Get one GitLab CI/CD Catalog resource, including paginated versions and components.
Inputs: id, full_path, version_after, version_limit, +4 more.
gitlab_get_commitGet CommitCRead-onlyIdempotent
Get one commit by SHA.
Inputs: sha (required), stats, project_id.
gitlab_get_commit_diffGet Commit DiffCRead-onlyIdempotent
Get diff for one commit.
Inputs: sha (required), page, per_page, full_diff, +1 more.
gitlab_get_deploymentGet DeploymentBRead-onlyIdempotent
Get one deployment by ID.
Inputs: deployment_id (required), project_id.
gitlab_get_draft_noteGet Draft NoteBRead-onlyIdempotent
Get a single merge-request draft note.
Inputs: draft_note_id (required), merge_request_iid (required), project_id.
gitlab_get_environmentGet EnvironmentCRead-onlyIdempotent
Get one environment by ID.
Inputs: environment_id (required), project_id.
gitlab_get_file_blameGet File BlameARead-onlyIdempotent
Get git blame for a repository file at a given ref. Optional line range must provide both range_start and range_end.
Inputs: ref (required), file_path (required), range_end, project_id, +1 more.
gitlab_get_file_contentsGet File ContentsCRead-onlyIdempotent
Get a file in repository by path and ref.
Inputs: file_path (required), ref, project_id, decode_base64.
gitlab_get_group_milestoneGet Group MilestoneCRead-onlyIdempotent
Get one group milestone by its ID.
Inputs: group_id (required), milestone_id (required).
gitlab_get_group_milestone_burndown_eventsGet Group Milestone Burndown EventsCRead-onlyIdempotent
Get burndown chart events for a group milestone. Premium/Ultimate.
Inputs: group_id (required), milestone_id (required), page, per_page.
gitlab_get_group_wiki_pageGet Group Wiki PageCRead-onlyIdempotent
Get group wiki page by slug.
Inputs: slug (required), group_id (required), version, render_html.
gitlab_get_issueGet IssueCRead-onlyIdempotent
Get issue by IID.
Inputs: issue_iid (required), project_id, full_response.
gitlab_get_issue_linkGet Issue LinkCRead-onlyIdempotent
Get a single issue link by ID.
Inputs: issue_iid (required), issue_link_id (required), project_id.
gitlab_get_job_artifact_fileGet Job Artifact FileCRead-onlyIdempotent
Return one file from a job artifacts archive as inline UTF-8 or base64 content.
Inputs: job_id (required), artifact_path (required), project_id.
gitlab_get_job_artifact_file_localGet Job Artifact File LocalC
Save one file from a job artifacts archive to a local directory.
Inputs: job_id (required), artifact_path (required), local_path, project_id.
gitlab_get_labelGet LabelCRead-onlyIdempotent
Get one label by ID.
Inputs: label_id (required), project_id, include_ancestor_groups.
gitlab_get_merge_requestGet Merge RequestCRead-onlyIdempotent
Get one merge request.
Inputs: project_id, source_branch, include_summaries, merge_request_iid.
gitlab_get_merge_request_approval_stateGet Merge Request Approval StateCRead-onlyIdempotent
Get approval state for MR.
Inputs: merge_request_iid (required), project_id.
gitlab_get_merge_request_code_contextGet Merge Request Code ContextCRead-onlyIdempotent
High-signal MR code context with include/exclude filters, sorting, and token-budgeted output.
Inputs: merge_request_iid (required), mode, sort, languages, +8 more.
gitlab_get_merge_request_conflictsGet Merge Request ConflictsCRead-onlyIdempotent
Get conflict details for MR.
Inputs: merge_request_iid (required), project_id.
gitlab_get_merge_request_diffsGet Merge Request DiffsCRead-onlyIdempotent
Get MR diffs with changed files.
Inputs: merge_request_iid (required), view, project_id, excluded_file_patterns.
gitlab_get_merge_request_discussionGet Merge Request DiscussionARead-onlyIdempotent
Get one MR discussion thread by discussion_id with all its notes and resolution state. Use gitlab_list_merge_request_discussions to find IDs.
Inputs: discussion_id (required), merge_request_iid (required), project_id.
gitlab_get_merge_request_file_diffGet Merge Request File DiffBRead-onlyIdempotent
Step 2 for large MR review: fetch diffs for specific files from a merge request.
Inputs: file_paths (required), unidiff, project_id, source_branch, +1 more.
gitlab_get_merge_request_noteGet Merge Request NoteBRead-onlyIdempotent
Get a single MR note.
Inputs: note_id (required), merge_request_iid (required), project_id.
gitlab_get_merge_request_versionGet Merge Request VersionCRead-onlyIdempotent
Get one MR diff version.
Inputs: version_id (required), merge_request_iid (required), unidiff, project_id.
gitlab_get_milestoneGet MilestoneCRead-onlyIdempotent
Get a milestone by ID.
Inputs: milestone_id (required), project_id.
gitlab_get_milestone_burndown_eventsGet Milestone Burndown EventsCRead-onlyIdempotent
List burndown events for a milestone.
Inputs: milestone_id (required), page, per_page, project_id.
gitlab_get_milestone_issueGet Milestone IssuesCRead-onlyIdempotent
List issues assigned to a milestone.
Inputs: milestone_id (required), project_id.
gitlab_get_milestone_merge_requestsGet Milestone Merge RequestsCRead-onlyIdempotent
List merge requests assigned to a milestone.
Inputs: milestone_id (required), page, per_page, project_id.
gitlab_get_namespaceGet NamespaceBRead-onlyIdempotent
Get namespace by ID or path.
Inputs: namespace_id, namespace_id_or_path.
gitlab_get_pipelineGet PipelineCRead-onlyIdempotent
Get one pipeline.
Inputs: pipeline_id (required), project_id.
gitlab_get_pipeline_jobGet Pipeline JobCRead-onlyIdempotent
Get one job by job ID.
Inputs: job_id (required), project_id.
gitlab_get_pipeline_job_outputGet Pipeline Job OutputBRead-onlyIdempotent
Get a bounded, untrusted job trace window (at most 1,000 lines from the end), or pass search (a substring or list of substrings, case-insensitive by default) to return only matching lines with context from the loaded log.
Inputs: job_id (required), limit, offset, search, +4 more.
gitlab_get_pipeline_scheduleGet Pipeline ScheduleARead-onlyIdempotent
Get one pipeline schedule with its last pipeline, inputs, and variable metadata. Variable values require GITLAB_ALLOW_CI_VARIABLE_VALUES=true and include_variable_values=true.
Inputs: pipeline_schedule_id (required), project_id, include_variable_values.
gitlab_get_pipeline_test_reportGet Pipeline Test ReportARead-onlyIdempotent
Get the unit test report for a pipeline: totals plus each suite's test cases with status, timing, and stack traces. Pass test_case_status (for example ["failed","error"]) to keep only matching cases.
Inputs: pipeline_id (required), project_id, test_case_status.
gitlab_get_pipeline_test_report_summaryGet Pipeline Test Report SummaryARead-onlyIdempotent
Get per-suite test counts and totals for a pipeline without individual test cases. Use gitlab_get_pipeline_test_report for failures.
Inputs: pipeline_id (required), project_id.
gitlab_get_pipeline_triggerGet Pipeline Trigger TokenBRead-onlyIdempotent
Get one pipeline trigger token's metadata. The token value is never returned.
Inputs: trigger_id (required), project_id.
gitlab_get_pipeline_variablesGet Pipeline VariablesARead-onlyIdempotent
List the variables a pipeline was started with. Values require GITLAB_ALLOW_CI_VARIABLE_VALUES=true and include_value=true.
Inputs: pipeline_id (required), page, per_page, project_id, +1 more.
gitlab_get_projectGet ProjectARead-onlyIdempotent
Get project details by ID or path.
Inputs: project_id.
gitlab_get_project_eventsGet Project EventsCRead-onlyIdempotent
List events for a specific project.
Inputs: page, sort, after, action, +4 more.
gitlab_get_project_snippetGet Project SnippetARead-onlyIdempotent
Get a project snippet's metadata. Set include_content=true to also return the raw content of up to 10 files; ref overrides the snippet revision.
Inputs: snippet_id (required), ref, project_id, include_content.
gitlab_get_protected_branchGet Protected BranchCRead-onlyIdempotent
Get one protected branch or wildcard rule.
Inputs: branch (required), project_id.
gitlab_get_protected_tagGet Protected TagBRead-onlyIdempotent
Get one protected tag rule by tag name or wildcard.
Inputs: name (required), project_id.
gitlab_get_releaseGet ReleaseCRead-onlyIdempotent
Get one release by tag name.
Inputs: tag_name (required), project_id, include_html_description.
gitlab_get_repository_treeGet Repository TreeBRead-onlyIdempotent
List files and directories in a repository tree. For large trees pass pagination=keyset and follow next_page_token as page_token; offset page/per_page also work.
Inputs: ref, page, path, per_page, +4 more.
gitlab_get_runnerGet RunnerARead-onlyIdempotent
Get one runner's tag_list, run_untagged, locked, access_level, status, and version. The runner must be available to project_id; runner authentication tokens are never returned.
Inputs: runner_id (required), project_id.
gitlab_get_tagGet TagARead-onlyIdempotent
Get a repository tag by name.
Inputs: tag_name (required), project_id.
gitlab_get_tag_signatureGet Tag SignatureBRead-onlyIdempotent
Get the X.509 signature for a signed repository tag.
Inputs: tag_name (required), project_id.
gitlab_get_timeline_eventsGet Timeline EventsBRead-onlyIdempotent
List timeline events for an incident work item.
Inputs: incident_iid (required), project_id.
gitlab_get_userGet UserARead-onlyIdempotent
Get one user by ID.
Inputs: user_id (required).
gitlab_get_usersGet UsersCRead-onlyIdempotent
Search users.
Inputs: page, active, search, per_page, +3 more.
gitlab_get_vulnerabilityGet VulnerabilityBRead-onlyIdempotent
Get one vulnerability with its description, identifiers, links, and location. The vulnerability must belong to project_id. Ultimate.
Inputs: vulnerability_id (required), project_id.
gitlab_get_webhook_eventGet Webhook EventARead-onlyIdempotent
Find one webhook event by ID. Provide page when known, otherwise scans up to 500 recent events.
Inputs: hook_id (required), event_id (required), page, group_id, +1 more.
gitlab_get_wiki_pageGet Wiki PageCRead-onlyIdempotent
Get wiki page by slug.
Inputs: slug (required), version, project_id, render_html.
gitlab_get_work_itemGet Work ItemBRead-onlyIdempotent
Get a single work item with full widget details including status, hierarchy, labels, assignees, linked items, custom fields, and development data.
Inputs: iid (required), project_id.
gitlab_list_branchesList BranchesCRead-onlyIdempotent
List repository branches.
Inputs: page, sort, regex, search, +2 more.
gitlab_list_ci_catalog_resourcesList CI/CD Catalog ResourcesBRead-onlyIdempotent
List GitLab CI/CD Catalog resources with cursor pagination and catalog filters.
Inputs: sort, after, first, scope, +4 more.
gitlab_list_commitsList CommitsDRead-onlyIdempotent
List commits in a project.
Inputs: all, page, path, order, +9 more.
gitlab_list_commit_statusesList Commit StatusesCRead-onlyIdempotent
List statuses for a commit.
Inputs: sha (required), all, ref, name, +7 more.
gitlab_list_custom_field_definitionsList Custom Field DefinitionsARead-onlyIdempotent
List custom field definitions for a work item type, including field IDs, types, options, and supported work item types.
Inputs: project_id, work_item_type.
gitlab_list_deployment_merge_requestsList Deployment Merge RequestsBRead-onlyIdempotent
List merge requests shipped with a deployment, for release notes and change tracking. Supports state, ordering, and pagination.
Inputs: deployment_id (required), page, sort, state, +3 more.
gitlab_list_deploymentsList DeploymentsCRead-onlyIdempotent
List deployments in a project.
Inputs: ref, sha, page, sort, +7 more.
gitlab_list_draft_notesList Draft NotesCRead-onlyIdempotent
List draft notes on a merge request.
Inputs: merge_request_iid (required), project_id.
gitlab_list_environmentsList EnvironmentsCRead-onlyIdempotent
List environments in a project.
Inputs: name, page, search, states, +2 more.
gitlab_list_eventsList EventsCRead-onlyIdempotent
List current user events.
Inputs: page, sort, after, scope, +4 more.
gitlab_list_group_iteration_cadencesList Group Iteration CadencesARead-onlyIdempotent
List a group's iteration cadences (GraphQL; no REST endpoint exists). Filters: active, automatic, title, duration_in_weeks, include_ancestor_groups. Returned IDs are cadence global IDs. Premium/Ultimate.
Inputs: group_id (required), title, active, automatic, +2 more.
gitlab_list_group_iterationsList Group IterationsDRead-onlyIdempotent
List iterations for a group.
Inputs: group_id (required), page, state, search, +6 more.
gitlab_list_group_membersList Group MembersARead-onlyIdempotent
List direct group members by default, for example to find reviewers or assignees by name; set include_inheritance=true to include members inherited from parent groups.
Inputs: group_id (required), page, query, per_page, +3 more.
gitlab_list_group_merge_requestsList Group Merge RequestsARead-onlyIdempotent
List merge requests across every project in a group and its subgroups, with the same filters as gitlab_list_merge_requests. non_archived=true skips archived projects.
Inputs: group_id (required), wip, page, sort, +22 more.
gitlab_list_group_milestone_issuesList Group Milestone IssuesBRead-onlyIdempotent
List issues assigned to a group milestone across the group's projects.
Inputs: group_id (required), milestone_id (required), page, per_page.
gitlab_list_group_milestone_merge_requestsList Group Milestone Merge RequestsBRead-onlyIdempotent
List merge requests assigned to a group milestone across the group's projects.
Inputs: group_id (required), milestone_id (required), page, per_page.
gitlab_list_group_milestonesList Group MilestonesARead-onlyIdempotent
List milestones defined on a group. Supports iids, state, title, search, ancestor/descendant inclusion, and date filters.
Inputs: group_id (required), iids, page, state, +11 more.
gitlab_list_group_projectsList Group ProjectsCRead-onlyIdempotent
List projects under a group.
Inputs: group_id (required), page, sort, topic, +14 more.
gitlab_list_group_wiki_pagesList Group Wiki PagesCRead-onlyIdempotent
List wiki pages in a group.
Inputs: group_id (required), page, per_page, render_html, +1 more.
gitlab_list_issue_discussionsList Issue DiscussionsCRead-onlyIdempotent
List issue discussions.
Inputs: issue_iid (required), page, per_page, project_id.
gitlab_list_issue_emoji_reactionsList Issue Emoji ReactionsCRead-onlyIdempotent
List emoji reactions on an issue.
Inputs: issue_iid (required), page, per_page, project_id.
gitlab_list_issue_linksList Issue LinksCRead-onlyIdempotent
List related issue links for an issue.
Inputs: issue_iid (required), project_id.
gitlab_list_issue_note_emoji_reactionsList Issue Note Emoji ReactionsCRead-onlyIdempotent
List emoji reactions on an issue note. Pass discussion_id for discussion replies.
Inputs: note_id (required), issue_iid (required), page, per_page, +2 more.
gitlab_list_issuesList IssuesCRead-onlyIdempotent
List issues in project.
Inputs: page, scope, state, labels, +17 more.
gitlab_list_job_artifactsList Job ArtifactsCRead-onlyIdempotent
List files and directories inside a job artifacts archive.
Inputs: job_id (required), path, recursive, project_id.
gitlab_list_labelsList LabelsCRead-onlyIdempotent
List project labels.
Inputs: page, search, per_page, project_id, +2 more.
gitlab_list_merge_request_changed_filesList Merge Request Changed FilesBRead-onlyIdempotent
Step 1 for large MR review: return changed file metadata without diff content.
Inputs: project_id, source_branch, merge_request_iid, excluded_file_patterns.
gitlab_list_merge_request_diffsList Merge Request DiffsCRead-onlyIdempotent
List detailed MR diffs (versions/changes view).
Inputs: merge_request_iid (required), page, unidiff, per_page, +1 more.
gitlab_list_merge_request_discussionsList Merge Request DiscussionsCRead-onlyIdempotent
List MR discussions.
Inputs: merge_request_iid (required), page, per_page, project_id.
gitlab_list_merge_request_emoji_reactionsList Merge Request Emoji ReactionsCRead-onlyIdempotent
List emoji reactions on a merge request.
Inputs: merge_request_iid (required), page, per_page, project_id.
gitlab_list_merge_request_note_emoji_reactionsList MR Note Emoji ReactionsBRead-onlyIdempotent
List emoji reactions on a merge request note. Pass discussion_id for discussion replies.
Inputs: note_id (required), merge_request_iid (required), page, per_page, +2 more.
gitlab_list_merge_request_notesList Merge Request NotesCRead-onlyIdempotent
List top-level notes for an MR.
Inputs: merge_request_iid (required), page, sort, order_by, +2 more.
gitlab_list_merge_request_pipelinesList Merge Request PipelinesCRead-onlyIdempotent
List pipelines associated with a merge request.
Inputs: merge_request_iid (required), page, per_page, project_id.
gitlab_list_merge_requestsList Merge RequestsCRead-onlyIdempotent
List merge requests for a project.
Inputs: wip, page, sort, scope, +21 more.
gitlab_list_merge_request_versionsList Merge Request VersionsCRead-onlyIdempotent
List MR diff versions.
Inputs: merge_request_iid (required), project_id.
gitlab_list_milestonesList MilestonesCRead-onlyIdempotent
List project milestones.
Inputs: iids, page, state, title, +6 more.
gitlab_list_namespacesList NamespacesCRead-onlyIdempotent
List namespaces visible to user.
Inputs: page, owned, search, per_page.
gitlab_list_pipeline_jobsList Pipeline JobsDRead-onlyIdempotent
List jobs in a pipeline.
Inputs: pipeline_id (required), page, scope, per_page, +2 more.
gitlab_list_pipelinesList PipelinesCRead-onlyIdempotent
List pipelines for a project.
Inputs: ref, sha, page, sort, +10 more.
gitlab_list_pipeline_schedule_pipelinesList Pipeline Schedule PipelinesBRead-onlyIdempotent
List pipelines triggered by one pipeline schedule, with scope, status, sort, and date filters.
Inputs: pipeline_schedule_id (required), page, sort, scope, +7 more.
gitlab_list_pipeline_schedulesList Pipeline SchedulesBRead-onlyIdempotent
List scheduled pipelines with cron, timezone, next_run_at, owner, and active state. Use gitlab_get_pipeline_schedule for variables and inputs.
Inputs: page, scope, per_page, project_id.
gitlab_list_pipeline_trigger_jobsList Pipeline Trigger JobsCRead-onlyIdempotent
List downstream/bridge trigger jobs in a pipeline.
Inputs: pipeline_id (required), page, scope, per_page, +1 more.
gitlab_list_pipeline_triggersList Pipeline Trigger TokensBRead-onlyIdempotent
List pipeline trigger tokens with description, owner, and last_used. Token values are never returned.
Inputs: page, per_page, project_id.
gitlab_list_project_iterationsList Project IterationsBRead-onlyIdempotent
List iterations available to a project (those of its group hierarchy). Supports state, search, search_in, include_ancestors, and date filters. Premium/Ultimate.
Inputs: page, state, search, per_page, +5 more.
gitlab_list_project_membersList Project MembersARead-onlyIdempotent
List direct project members by default; set include_inheritance=true to include inherited members.
Inputs: page, query, per_page, user_ids, +3 more.
gitlab_list_project_runnersList Project RunnersARead-onlyIdempotent
List runners a project can use, including group and instance runners. Supports type, status, paused, and tag_list filters. Use gitlab_get_runner for tags and settings of one runner.
Inputs: page, type, paused, status, +3 more.
gitlab_list_projectsList ProjectsCRead-onlyIdempotent
List projects available to the current user.
Inputs: page, sort, owned, topic, +11 more.
gitlab_list_project_snippetsList Project SnippetsBRead-onlyIdempotent
List a project's snippets with title, visibility, author, and file names.
Inputs: page, per_page, project_id.
gitlab_list_project_vulnerabilitiesList Project VulnerabilitiesARead-onlyIdempotent
List a project's vulnerabilities with severity, state, scanner, identifiers (CVE/CWE), and location. Filter by state, severity, and report_type; page with first and the returned page_info.end_cursor as after. Ultimate.
Inputs: after, first, state, severity, +2 more.
gitlab_list_protected_branchesList Protected BranchesCRead-onlyIdempotent
List protected branch rules for a project.
Inputs: page, search, per_page, project_id.
gitlab_list_protected_tagsList Protected TagsBRead-onlyIdempotent
List protected tag rules (names or wildcards such as v*) with their create access levels.
Inputs: page, per_page, project_id.
gitlab_list_releasesList ReleasesCRead-onlyIdempotent
List project releases.
Inputs: page, sort, order_by, per_page, +2 more.
gitlab_list_tagsList TagsCRead-onlyIdempotent
List repository tags for a project.
Inputs: page, sort, search, order_by, +2 more.
gitlab_list_todosList TodosCRead-onlyIdempotent
List to-do items for the current authenticated user.
Inputs: page, type, state, action, +4 more.
gitlab_list_webhook_eventsList Webhook EventsBRead-onlyIdempotent
List recent webhook events for a project or group webhook. Use summary mode for overviews.
Inputs: hook_id (required), page, status, summary, +3 more.
gitlab_list_webhooksList WebhooksCRead-onlyIdempotent
List configured webhooks for a project or group.
Inputs: page, group_id, per_page, project_id.
gitlab_list_wiki_pagesList Wiki PagesCRead-onlyIdempotent
List wiki pages in a project.
Inputs: page, per_page, project_id, render_html, +1 more.
gitlab_list_work_item_emoji_reactionsList Work Item Emoji ReactionsCRead-onlyIdempotent
List emoji reactions on a work item.
Inputs: iid (required), project_id.
gitlab_list_work_item_note_emoji_reactionsList Work Item Note Emoji ReactionsBRead-onlyIdempotent
List emoji reactions on a work item note by GraphQL note_id.
Inputs: iid (required), note_id (required), project_id.
gitlab_list_work_item_notesList Work Item NotesCRead-onlyIdempotent
List threaded discussions and notes on a work item.
Inputs: iid (required), sort, after, page_size, +1 more.
gitlab_list_work_itemsList Work ItemsBRead-onlyIdempotent
List work items in a project with filters for type, state, search, assignees, and labels.
Inputs: after, first, state, types, +4 more.
gitlab_list_work_item_statusesList Work Item StatusesARead-onlyIdempotent
List available statuses and allowed hierarchy/conversion types for a work item type.
Inputs: project_id, work_item_type.
gitlab_mark_all_todos_doneMark All Todos DoneA
Mark all pending to-do items as done for the current authenticated user.
Inputs: no named parameters.
gitlab_mark_todo_doneMark Todo DoneC
Mark one to-do item as done.
Inputs: todo_id (required).
gitlab_merge_merge_requestMerge Merge RequestC
Merge an existing merge request.
Inputs: sha, squash, auto_merge, project_id, +6 more.
gitlab_move_work_itemMove Work ItemC
Move a work item to a different project.
Inputs: iid (required), target_project_id (required), project_id.
gitlab_my_issuesMy IssuesCRead-onlyIdempotent
List issues assigned to the current authenticated user.
Inputs: page, state, labels, search, +7 more.
gitlab_play_pipeline_jobPlay Pipeline JobC
Play a manual job, optionally with job_variables_attributes ([{key, value}]) and typed job_inputs.
Inputs: job_id (required), job_inputs, project_id, job_variables_attributes.
gitlab_play_pipeline_schedulePlay Pipeline ScheduleA
Run a pipeline schedule now without changing next_run_at. GitLab rate-limits this per schedule.
Inputs: pipeline_schedule_id (required), project_id.
gitlab_promote_milestonePromote MilestoneC
Promote a project milestone to a group milestone.
Inputs: milestone_id (required), project_id.
gitlab_protect_branchProtect BranchB
Protect a branch or wildcard rule and configure role-based push, merge, and unprotect access.
Inputs: branch (required), project_id, allow_force_push, push_access_level, +3 more.
gitlab_protect_tagProtect TagA
Protect a tag name or wildcard (for example v*) so only allowed roles can create it and protected CI/CD variables reach its pipelines. create_access_level: 0 no one, 30 Developer, 40 Maintainer (default), 60 Admin.
Inputs: name (required), project_id, allowed_to_create, create_access_level.
gitlab_publish_draft_notePublish Draft NoteB
Publish one merge-request draft note.
Inputs: draft_note_id (required), merge_request_iid (required), project_id.
gitlab_push_filesPush FilesC
Create a commit with multiple file actions.
Inputs: branch (required), commit_message (required), files, force, +5 more.
gitlab_rebase_merge_requestRebase Merge RequestA
Rebase a merge request's source branch onto its target (GitLab force-pushes the source branch). With wait=true (default) it polls up to timeout_seconds (default 60, max 300) and reports previous_sha, sha, head_changed, and merge_error. Use gitlab_get_merge_request_conflicts for conflicts.
Inputs: merge_request_iid (required), wait, skip_ci, project_id, +1 more.
gitlab_reorder_issueReorder IssueA
Change an issue's relative position in boards and manually sorted lists. move_after_id and move_before_id take global issue IDs (the id field, not iid) of the neighbors: move_after_id is the issue that should follow this one and move_before_id the issue that should precede it.
Inputs: issue_iid (required), project_id, move_after_id, move_before_id.
gitlab_resolve_merge_request_threadResolve Merge Request ThreadC
Resolve/unresolve an MR discussion note.
Inputs: note_id (required), discussion_id (required), merge_request_iid (required), resolved, +1 more.
gitlab_retry_pipelineRetry PipelineC
Retry failed jobs in pipeline.
Inputs: pipeline_id (required), project_id.
gitlab_retry_pipeline_jobRetry Pipeline JobB
Retry one failed job. job_inputs overrides typed values for the job's inputs definitions.
Inputs: job_id (required), job_inputs, project_id.
gitlab_search_codeSearch CodeBRead-onlyIdempotent
Search code across all projects on the GitLab instance. Requires GitLab code search support.
Inputs: search (required), page, path, filename, +2 more.
gitlab_search_code_blobsSearch Code BlobsCRead-onlyIdempotent
Search repository code blobs in a specific project.
Inputs: search (required), ref, page, path, +4 more.
gitlab_search_group_codeSearch Group CodeCRead-onlyIdempotent
Search code in a specific group.
Inputs: search (required), group_id (required), page, path, +3 more.
gitlab_search_project_codeSearch Project CodeCRead-onlyIdempotent
Search code in a specific project.
Inputs: search (required), ref, page, path, +4 more.
gitlab_search_repositoriesSearch RepositoriesCRead-onlyIdempotent
Search repositories by keyword.
Inputs: search (required), page, per_page.
gitlab_stop_environmentStop EnvironmentADestructive
Stop an environment, which runs its on_stop job and typically tears down the deployed app. force=true stops it without running on_stop. Recommended pre-check: gitlab_get_environment.
Inputs: environment_id (required), force, project_id.
gitlab_stop_stale_environmentsStop Stale EnvironmentsADestructive
Stop every environment last modified or deployed before an ISO 8601 date (between 10 years and 1 week ago). GitLab skips protected environments; this stops but does not delete.
Inputs: before (required), project_id.
gitlab_take_ownership_pipeline_scheduleTake Ownership of Pipeline ScheduleB
Make the current user the owner of a pipeline schedule; scheduled pipelines then run as this user.
Inputs: pipeline_schedule_id (required), project_id.
gitlab_trigger_pipelineTrigger Pipeline With TokenA
Start a pipeline with a pipeline trigger token or CI/CD job token, as used by external systems and multi-project pipelines. Use gitlab_create_pipeline when acting with your own credentials. The token is sent in the request body and never echoed.
Inputs: ref (required), token (required), inputs, variables, +1 more.
gitlab_unapprove_merge_requestUnapprove Merge RequestB
Remove current user approval from MR.
Inputs: merge_request_iid (required), project_id.
gitlab_unprotect_branchUnprotect BranchADestructive
Remove protection from a branch or wildcard rule. This immediately permits actions previously blocked. Requires branch. Recommended pre-check: gitlab_get_protected_branch.
Inputs: branch (required), project_id.
gitlab_unprotect_tagUnprotect TagADestructive
Remove protection from a tag name or wildcard, allowing any developer to create matching tags. Requires name. Recommended pre-check: gitlab_get_protected_tag.
Inputs: name (required), project_id.
gitlab_update_default_branchUpdate Default BranchC
Change a project's default branch to an existing branch.
Inputs: default_branch (required), project_id.
gitlab_update_deploymentUpdate DeploymentB
Change the status of a deployment created outside GitLab CI/CD.
Inputs: status (required), deployment_id (required), project_id.
gitlab_update_draft_noteUpdate Draft NoteC
Update a merge-request draft note.
Inputs: draft_note_id (required), merge_request_iid (required), body, position, +2 more.
gitlab_update_environmentUpdate EnvironmentA
Update an environment's external URL, tier, description, Kubernetes settings, or auto-stop behavior. GitLab does not allow renaming environments.
Inputs: environment_id (required), tier, project_id, description, +5 more.
gitlab_update_group_iterationUpdate Group IterationA
Update a group iteration's title, description, or dates. iteration_id is the numeric ID from the iteration list or its global ID. Premium/Ultimate.
Inputs: group_id (required), iteration_id (required), title, due_date, +2 more.
gitlab_update_group_iteration_cadenceUpdate Group Iteration CadenceB
Update an iteration cadence of the group. iteration_cadence_id is a numeric ID or cadence global ID from gitlab_list_group_iteration_cadences. Premium/Ultimate.
Inputs: group_id (required), iteration_cadence_id (required), title, active, +6 more.
gitlab_update_group_milestoneUpdate Group MilestoneB
Update a group milestone's title, description, dates, or state (state_event close or activate).
Inputs: group_id (required), milestone_id (required), title, due_date, +3 more.
gitlab_update_group_wiki_pageUpdate Group Wiki PageC
Update group wiki page by slug.
Inputs: slug (required), group_id (required), title, format, +1 more.
gitlab_update_issueUpdate IssueC
Update issue fields.
Inputs: issue_iid (required), title, labels, weight, +10 more.
gitlab_update_issue_description_patchUpdate Issue Description PatchC
Apply a search/replace or unified diff patch to an issue description without sending the full replacement text.
Inputs: patch (required), issue_iid (required), patch_type (required), dry_run, +3 more.
gitlab_update_issue_noteUpdate Issue NoteC
Update an issue discussion note body or resolved state.
Inputs: note_id (required), issue_iid (required), discussion_id (required), body, +2 more.
gitlab_update_labelUpdate LabelD
Update a label.
Inputs: name, color, label_id, new_name, +3 more.
gitlab_update_merge_requestUpdate Merge RequestA
Update merge request fields. labels replaces every label; add_labels and remove_labels change only the named ones. milestone_id 0 unassigns the milestone.
Inputs: merge_request_iid (required), draft, title, labels, +15 more.
gitlab_update_merge_request_discussion_noteUpdate MR Discussion NoteC
Update note body/resolved state in MR discussion.
Inputs: note_id (required), discussion_id (required), merge_request_iid (required), body, +2 more.
gitlab_update_merge_request_noteUpdate Merge Request NoteB
Update MR note body.
Inputs: body (required), note_id (required), merge_request_iid (required), project_id.
gitlab_update_milestoneUpdate MilestoneC
Update milestone fields.
Inputs: milestone_id (required), title, due_date, project_id, +3 more.
gitlab_update_pipeline_metadataUpdate Pipeline MetadataB
Rename a pipeline. Only the pipeline name can be changed.
Inputs: name (required), pipeline_id (required), project_id.
gitlab_update_pipeline_scheduleUpdate Pipeline ScheduleA
Change a pipeline schedule. Pass active=false to pause it. To remove an input, pass {name, destroy: true}. Take ownership first when the schedule belongs to another user.
Inputs: pipeline_schedule_id (required), ref, cron, active, +4 more.
gitlab_update_pipeline_triggerUpdate Pipeline Trigger TokenB
Change a pipeline trigger token's description. The token value is never returned.
Inputs: trigger_id (required), description (required), project_id.
gitlab_update_projectUpdate ProjectC
Update an allowlisted set of project metadata, merge defaults, and feature access levels.
Inputs: name, topics, project_id, visibility, +17 more.
gitlab_update_project_snippetUpdate Project SnippetB
Update a project snippet's title, description, visibility, or files. Each file change needs action create, update, delete, or move (move requires previous_path).
Inputs: snippet_id (required), files, title, project_id, +2 more.
gitlab_update_protected_branchUpdate Protected BranchA
Change an existing branch protection rule in place: allow_force_push, code_owner_approval_required, and allowed_to_push/allowed_to_merge/allowed_to_unprotect entries. Add an entry with one of access_level, user_id, group_id, or deploy_key_id (push only); change one with its id; remove one with {id, _destroy: true}. Read entry ids with gitlab_get_protected_branch. Changes that would leave nobody allowed to unprotect are refused.
Inputs: branch (required), project_id, allowed_to_push, allow_force_push, +3 more.
gitlab_update_releaseUpdate ReleaseD
Update existing release.
Inputs: tag_name (required), name, assets, milestones, +3 more.
gitlab_update_webhookUpdate WebhookB
Update a project or group webhook's URL, secret token, events, or SSL verification. Omitted fields keep their values.
Inputs: hook_id (required), url, name, token, +25 more.
gitlab_update_wiki_pageUpdate Wiki PageC
Update wiki page by slug.
Inputs: slug (required), content (required), title, format, +1 more.
gitlab_update_work_itemUpdate Work ItemC
Update a work item title, description, labels, assignees, state, status, hierarchy, linked items, custom fields, dates, milestone, iteration, and incident metadata.
Inputs: iid (required), title, status, weight, +22 more.
gitlab_upload_markdownUpload MarkdownC
Upload markdown file/attachment to project.
Inputs: content, filename, file_path, project_id.
gitlab_validate_ci_lintValidate CI LintCRead-onlyIdempotent
Validate provided GitLab CI/CD YAML content for a project.
Inputs: content (required), ref, dry_run, project_id, +1 more.
gitlab_validate_project_ci_lintValidate Project CI LintCRead-onlyIdempotent
Validate an existing project CI/CD configuration.
Inputs: dry_run, project_id, content_ref, dry_run_ref, +1 more.
gitlab_verify_namespaceVerify NamespaceARead-onlyIdempotent
Verify if namespace path exists.
Inputs: path (required), parent_id.
gitlab_wait_for_jobWait for JobARead-onlyIdempotent
Poll a job until it reaches success, failed, canceled, skipped, or manual, or until timeout_seconds (default 60, max 300) elapses. Returns completed=false with the last status on timeout; call again to keep waiting.
Inputs: job_id (required), project_id, timeout_seconds, poll_interval_seconds.
gitlab_wait_for_pipelineWait for PipelineARead-onlyIdempotent
Poll a pipeline until it reaches success, failed, canceled, skipped, or manual, or until timeout_seconds (default 60, max 300) elapses. Returns completed=false with the last status on timeout; call again to keep waiting.
Inputs: pipeline_id (required), project_id, timeout_seconds, poll_interval_seconds.
gitlab_whoamiWho Am IARead-onlyIdempotent
Get the current authenticated user.
Inputs: no named parameters.
health_checkHealth CheckARead-onlyIdempotent
Return server liveness, name, and version. Set check_gitlab=true to also verify that GitLab is reachable, that the configured credential authenticates, and which GitLab version answers.
Inputs: check_gitlab.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 268 tools
With 268 tools there are many near-duplicates: gitlab_search_code, gitlab_search_code_blobs, gitlab_search_project_code, gitlab_search_group_code, and gitlab_search_repositories overlap heavily; issue tools and work-item tools often target the same underlying objects; note creation exists as gitlab_create_note, gitlab_create_issue_note, gitlab_create_merge_request_note, and gitlab_create_work_item_note. Descriptions are detailed and often clarify, but the sheer breadth guarantees that agents will frequently face unclear selection boundaries.
The dominant pattern is a consistent gitlab_verb_noun convention (gitlab_list_issues, gitlab_create_branch, gitlab_delete_tag), and even scoped variants like gitlab_list_group_milestones and gitlab_get_merge_request_note follow it. A handful of outliers (health_check, gitlab_whoami, gitlab_my_issues, gitlab_discover_tools) deviate but are limited and readable.
268 tools is far beyond a well-scoped set for a single MCP server. The domain is huge, but the surface includes narrow administrative operations (emoji reactions on notes, draft note lifecycle, iteration cadences, protected branch entry micro-edits) that overwhelm tool selection.
Coverage is exhaustive: full CRUD across projects, groups, issues, merge requests, work items, milestones, iterations, pipelines, jobs, schedules, environments, deployments, releases, tags, branches, webhooks, snippets, wiki pages, vulnerabilities, runners, and GraphQL escape hatches. Almost no lifecycle or administrative operation appears to be missing.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProduction-ready MCP server providing GitLab integration with OAuth authentication, enabling AI assistants to manage projects, issues, merge requests, branches, files, and commits across GitLab instances.MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for GitLab integration, enabling AI assistants to manage projects, merge requests, pipelines, issues, releases, and more.MIT
- AlicenseAqualityCmaintenanceMCP server for GitLab REST API enabling AI agents to manage pipelines, merge requests, diffs, and local reviews.159 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server enabling AI assistants to understand GitLab repositories through on-demand source code analysis using specialized AI agents.-