gitlab-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SSE | No | Enable legacy SSE endpoints | false |
| NO_PROXY | No | Comma-separated hosts to bypass proxy | |
| HTTP_HOST | No | HTTP bind host | 127.0.0.1 |
| HTTP_PORT | No | HTTP server port | 3333 |
| HTTP_PROXY | No | HTTP proxy for outbound requests | |
| HTTPS_PROXY | No | HTTPS proxy for outbound requests | |
| MAX_SESSIONS | No | Maximum concurrent sessions | 1000 |
| USE_PIPELINE | No | Enable pipeline tools | true |
| USE_MILESTONE | No | Enable milestone tools | true |
| GITLAB_API_URL | No | Base API URL for GitLab instance | https://gitlab.com/api/v4 |
| MCP_SERVER_URL | No | Public base URL for download proxy | |
| USE_GITLAB_WIKI | No | Enable wiki tools | true |
| GITLAB_JOB_TOKEN | No | CI job token fallback | |
| GITLAB_MCP_OAUTH | No | Enable MCP OAuth discovery/proxy endpoints | false |
| GITLAB_USE_OAUTH | No | Set to 'true' to use OAuth 2.0 PKCE authentication | |
| GITLAB_TOKEN_FILE | No | Path to file containing token | |
| GITLAB_USER_AGENT | No | Custom User-Agent for GitLab requests | |
| GITLAB_CA_CERT_PATH | No | Custom CA certificate path (PEM) | |
| GITLAB_TOKEN_SCRIPT | No | Path to external script to resolve token | |
| GITLAB_ALLOWED_TOOLS | No | Comma-separated list of allowed tool names | |
| GITLAB_RESPONSE_MODE | No | Response format: json, compact-json, or yaml | json |
| OAUTH_STATELESS_MODE | No | Use stateless Streamable HTTP | false |
| REMOTE_AUTHORIZATION | No | Require per-request token headers in HTTP mode | false |
| GITLAB_READ_ONLY_MODE | No | Enable read-only mode | false |
| GITLAB_HTTP_TIMEOUT_MS | No | Upstream GitLab HTTP timeout in milliseconds | 20000 |
| GITLAB_OAUTH_CLIENT_ID | No | OAuth application client ID (required if GITLAB_USE_OAUTH=true) | |
| GITLAB_AUTH_COOKIE_PATH | No | Path to Netscape cookie file for cookie-based auth | |
| MAX_REQUESTS_PER_MINUTE | No | Per-session rate limit | 300 |
| SESSION_TIMEOUT_SECONDS | No | Idle session timeout in seconds | 3600 |
| GITLAB_CLOUDFLARE_BYPASS | No | Add browser-like headers for Cloudflare-protected instances | false |
| GITLAB_ERROR_DETAIL_MODE | No | Error verbosity: safe or full | safe |
| GITLAB_DENIED_TOOLS_REGEX | No | Regex pattern to deny tools | |
| GITLAB_MAX_RESPONSE_BYTES | No | Maximum response payload size in bytes | 200000 |
| GITLAB_OAUTH_REDIRECT_URI | No | OAuth redirect URI | http://127.0.0.1:8765/callback |
| GITLAB_ALLOWED_PROJECT_IDS | No | Comma-separated list of allowed project IDs | |
| GITLAB_OAUTH_CLIENT_SECRET | No | OAuth client secret for confidential apps | |
| GITLAB_MAX_LOCAL_FILE_BYTES | No | Maximum local file size for downloads | 250000000 |
| GITLAB_DISABLED_CAPABILITIES | No | Comma-separated capabilities to disable | |
| GITLAB_DOWNLOAD_TOKEN_SECRET | No | Secret for short-lived download proxy URLs | |
| GITLAB_PERSONAL_ACCESS_TOKEN | No | Personal access token for GitLab authentication | |
| GITLAB_DOWNLOAD_TOKEN_TTL_SECONDS | No | Lifetime of download proxy URLs in seconds | 300 |
| GITLAB_ALLOW_GRAPHQL_WITH_PROJECT_SCOPE | No | Keep GraphQL tools enabled when project scope restriction is active | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_checkA | Return server liveness and current timestamp. |
| gitlab_discover_toolsA | Search the complete tool registry without mutating session state. Results explain whether each tool is currently enabled. |
| gitlab_get_projectA | Get project details by ID or path. |
| gitlab_list_projectsC | List projects available to the current user. |
| gitlab_update_projectB | Update an allowlisted set of project metadata, merge defaults, and feature access levels. |
| gitlab_create_repositoryC | Create a new GitLab project/repository. |
| gitlab_create_groupC | Create a new GitLab group or subgroup. |
| gitlab_list_project_membersA | List direct project members by default; set include_inheritance=true to include inherited members. |
| gitlab_list_group_projectsC | List projects under a group. |
| gitlab_list_group_iterationsC | List iterations for a group. |
| gitlab_search_repositoriesC | Search repositories by keyword. |
| gitlab_search_code_blobsC | Search repository code blobs in a specific project. |
| gitlab_search_codeB | Search code across all projects on the GitLab instance. Requires GitLab code search support. |
| gitlab_search_project_codeB | Search code in a specific project. |
| gitlab_search_group_codeB | Search code in a specific group. |
| gitlab_get_repository_treeC | List files and directories in a repository tree. |
| gitlab_get_file_contentsB | Get a file in repository by path and ref. |
| gitlab_get_file_blameA | Get git blame for a repository file at a given ref. Optional line range must provide both range_start and range_end. |
| gitlab_create_or_update_fileC | Create or update one file in repository. |
| gitlab_push_filesC | Create a commit with multiple file actions. |
| gitlab_create_branchB | Create a new branch from an existing ref. |
| gitlab_list_branchesC | List repository branches. |
| gitlab_get_branchB | Get details for one repository branch. |
| gitlab_list_protected_branchesB | List protected branch rules for a project. |
| gitlab_get_protected_branchC | Get one protected branch or wildcard rule. |
| gitlab_protect_branchB | Protect a branch or wildcard rule and configure role-based push, merge, and unprotect access. |
| gitlab_unprotect_branchA | Remove protection from a branch or wildcard rule. This immediately permits actions previously blocked. Requires branch. Recommended pre-check: gitlab_get_protected_branch. |
| gitlab_update_default_branchC | Change a project's default branch to an existing branch. |
| gitlab_delete_branchA | Delete a repository branch permanently. Requires branch. Recommended pre-check: gitlab_get_branch. |
| gitlab_get_branch_diffsB | Compare two branches/refs and return diffs. |
| gitlab_list_commitsC | List commits in a project. |
| gitlab_get_commitB | Get one commit by SHA. |
| gitlab_get_commit_diffC | Get diff for one commit. |
| gitlab_list_commit_statusesC | List statuses for a commit. |
| gitlab_create_commit_statusC | Create or update the status of a commit. |
| gitlab_list_merge_requestsC | List merge requests for a project. |
| gitlab_get_merge_requestC | Get one merge request. |
| gitlab_list_merge_request_pipelinesB | List pipelines associated with a merge request. |
| gitlab_create_merge_requestC | Create a merge request. |
| gitlab_fork_repositoryC | Fork an existing project to another namespace. |
| gitlab_update_merge_requestC | Update merge request fields. |
| gitlab_merge_merge_requestC | Merge an existing merge request. |
| gitlab_get_merge_request_diffsC | Get MR diffs with changed files. |
| gitlab_list_merge_request_changed_filesA | Step 1 for large MR review: return changed file metadata without diff content. |
| gitlab_list_merge_request_diffsC | List detailed MR diffs (versions/changes view). |
| gitlab_get_merge_request_file_diffA | Step 2 for large MR review: fetch diffs for specific files from a merge request. |
| gitlab_get_merge_request_code_contextC | High-signal MR code context with include/exclude filters, sorting, and token-budgeted output. |
| gitlab_list_merge_request_versionsC | List MR diff versions. |
| gitlab_get_merge_request_versionC | Get one MR diff version. |
| gitlab_approve_merge_requestC | Approve a merge request. |
| gitlab_unapprove_merge_requestB | Remove current user approval from MR. |
| gitlab_get_merge_request_approval_stateC | Get approval state for MR. |
| gitlab_get_merge_request_conflictsC | Get conflict details for MR. |
| gitlab_list_merge_request_discussionsC | List MR discussions. |
| gitlab_create_merge_request_threadC | Create a new MR discussion thread (supports diff positions). |
| gitlab_create_merge_request_discussion_noteC | Add note to existing MR discussion thread. |
| gitlab_update_merge_request_discussion_noteC | Update note body/resolved state in MR discussion. |
| gitlab_delete_merge_request_discussion_noteA | Delete an MR discussion note permanently. Irreversible. Requires merge_request_iid, discussion_id, and note_id. Recommended pre-check: gitlab_list_merge_request_discussions. |
| gitlab_resolve_merge_request_threadC | Resolve/unresolve an MR discussion note. |
| gitlab_list_merge_request_notesC | List top-level notes for an MR. |
| gitlab_get_draft_noteB | Get a single merge-request draft note. |
| gitlab_list_draft_notesC | List draft notes on a merge request. |
| gitlab_create_draft_noteC | Create a merge-request draft note. |
| gitlab_update_draft_noteC | Update a merge-request draft note. |
| gitlab_delete_draft_noteA | 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. |
| gitlab_publish_draft_noteB | Publish one merge-request draft note. |
| gitlab_bulk_publish_draft_notesC | Publish all merge-request draft notes. |
| gitlab_get_merge_request_noteB | Get a single MR note. |
| gitlab_create_merge_request_noteC | Create a top-level MR note. |
| gitlab_create_noteC | Create a note on an issue or merge request. |
| gitlab_update_merge_request_noteB | Update MR note body. |
| gitlab_delete_merge_request_noteA | 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. |
| gitlab_list_merge_request_emoji_reactionsC | List emoji reactions on a merge request. |
| gitlab_list_merge_request_note_emoji_reactionsA | List emoji reactions on a merge request note. Pass discussion_id for discussion replies. |
| gitlab_create_merge_request_emoji_reactionA | Add an emoji reaction to a merge request, for example thumbsup, rocket, or eyes. |
| gitlab_delete_merge_request_emoji_reactionA | 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. |
| gitlab_create_merge_request_note_emoji_reactionA | Add an emoji reaction to a merge request note. Pass discussion_id for discussion replies. |
| gitlab_delete_merge_request_note_emoji_reactionA | 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. |
| gitlab_list_issuesC | List issues in project. |
| gitlab_my_issuesA | List issues assigned to the current authenticated user. |
| gitlab_list_todosC | List to-do items for the current authenticated user. |
| gitlab_mark_todo_doneC | Mark one to-do item as done. |
| gitlab_mark_all_todos_doneA | Mark all pending to-do items as done for the current authenticated user. |
| gitlab_get_issueC | Get issue by IID. |
| gitlab_create_issueD | Create a new issue. |
| gitlab_update_issueD | Update issue fields. |
| gitlab_update_issue_description_patchC | Apply a search/replace or unified diff patch to an issue description without sending the full replacement text. |
| gitlab_delete_issueA | Delete an issue permanently. Irreversible. Requires issue_iid. Recommended pre-check: gitlab_get_issue. |
| gitlab_list_issue_discussionsC | List issue discussions. |
| gitlab_create_issue_noteB | Create issue comment (top-level or discussion note). |
| gitlab_update_issue_noteB | Update an issue discussion note body or resolved state. |
| gitlab_list_issue_emoji_reactionsC | List emoji reactions on an issue. |
| gitlab_list_issue_note_emoji_reactionsA | List emoji reactions on an issue note. Pass discussion_id for discussion replies. |
| gitlab_create_issue_emoji_reactionC | Add an emoji reaction to an issue, for example thumbsup, rocket, or eyes. |
| gitlab_delete_issue_emoji_reactionA | 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. |
| gitlab_create_issue_note_emoji_reactionA | Add an emoji reaction to an issue note. Pass discussion_id for discussion replies. |
| gitlab_delete_issue_note_emoji_reactionA | 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. |
| gitlab_list_issue_linksC | List related issue links for an issue. |
| gitlab_get_issue_linkC | Get a single issue link by ID. |
| gitlab_create_issue_linkC | Create a relation between two issues. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpland/gitlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server