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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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