GitLab MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Listen address for hosted mode. Default: 0.0.0.0 | 0.0.0.0 |
| PORT | No | Listen port for hosted mode. Default: 8080 | 8080 |
| GITLAB_URL | No | Instance URL. A trailing /api/v4 is accepted and stripped. Default: https://gitlab.com | https://gitlab.com |
| GITLAB_TOKEN | No | Access token. | |
| LANDING_PATH | No | Page served at / in hosted mode. Default: ./landing.html | ./landing.html |
| CI_SERVER_URL | No | Alias for GITLAB_URL. Instance URL. | |
| MCP_TRANSPORT | No | stdio or http to start the HTTP server. Default: stdio | stdio |
| GITLAB_API_URL | No | Alias for GITLAB_URL. Instance URL. | |
| GITLAB_AUTH_TYPE | No | pat or oauth — send the token as Authorization: Bearer. Default: pat | pat |
| GITLAB_READ_ONLY | No | true — every mutating tool is refused. Default: false | false |
| GITLAB_PROJECT_ID | No | Default project: 42 or group/subgroup/project. | |
| GITLAB_TIMEOUT_MS | No | Per-request timeout. Default: 60000 | 60000 |
| GITLAB_ACCESS_TOKEN | No | Alias for GITLAB_TOKEN. Access token. | |
| GITLAB_PROJECT_LOCK | No | true — hard isolation inside GITLAB_PROJECT_ID. Default: false | false |
| GITLAB_ALLOWED_INSTANCES | No | Comma-separated hostnames; when set, only these instances may be targeted. | |
| GITLAB_MAX_ATTACHMENT_BYTES | No | Size cap for downloaded attachments. Default: 8388608 | 8388608 |
| GITLAB_PERSONAL_ACCESS_TOKEN | No | Alias for GITLAB_TOKEN. Access token. | |
| GITLAB_TLS_REJECT_UNAUTHORIZED | No | false — skip TLS verification (private CA). Default: true | true |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gitlab_whoamiA | Returns the authenticated user, the configured GitLab instance URL and the instance version. Use this first to verify GITLAB_URL/GITLAB_TOKEN are wired correctly. |
| gitlab_searchA | Global, group or project search across projects, issues, merge requests, code blobs, commits, wiki and notes. |
| gitlab_list_todosA | Lists the authenticated user's todo items (assignments, mentions, review requests). |
| gitlab_mark_todo_doneA | Marks a single todo as done, or all pending todos when todo_id is omitted. |
| gitlab_list_eventsB | Activity stream for the current user or a project (pushes, comments, merges, ...). |
| gitlab_list_usersA | Searches instance users by username or free text. |
| gitlab_get_userB | Fetches a single user by id. |
| gitlab_markdown_renderA | Renders markdown through GitLab so relative upload links and issue references are expanded to absolute URLs — handy before downloading attachments. |
| gitlab_api_requestB | Escape hatch that calls ANY GitLab REST API v4 endpoint with the configured credentials. Use it for endpoints without a dedicated tool (epics, packages, feature flags, admin, custom instance routes). See https://docs.gitlab.com/ee/api/api_resources.html |
| gitlab_list_projectsA | Lists projects visible to the token, with search and membership filters. |
| gitlab_get_projectA | Full details for one project, including default branch, namespace and web URL. |
| gitlab_create_projectA | Creates a new project, optionally inside a group. |
| gitlab_update_projectC | Edits project settings. |
| gitlab_delete_projectA | Deletes (or schedules deletion of) a project. Irreversible on most instances. |
| gitlab_fork_projectC | Forks a project into a namespace. |
| gitlab_list_project_membersC | Members of a project, optionally including inherited group members. |
| gitlab_add_project_memberC | Grants a user access to a project. |
| gitlab_list_groupsB | Lists groups visible to the token. |
| gitlab_get_groupC | Details for one group. |
| gitlab_list_group_projectsA | Projects inside a group, optionally recursing into subgroups. |
| gitlab_list_group_membersD | Members of a group. |
| gitlab_list_issuesA | Lists issues for a project, a group, or the whole instance (omit project_id and group_id) with the usual filters. |
| gitlab_get_issueA | Full issue: description, labels, assignees, milestone, plus (by default) every comment and the URLs of every attached screenshot/file. Feed those URLs to gitlab_read_attachment to actually view the images. |
| gitlab_create_issueC | Creates an issue in a project. |
| gitlab_update_issueA | Edits an issue, including closing/reopening it. |
| gitlab_delete_issueA | Permanently deletes an issue. |
| gitlab_list_notesA | Lists comments (notes) on an issue, merge request, snippet or epic. |
| gitlab_create_noteA | Posts a comment on an issue, merge request, snippet, epic or commit. Embed uploaded screenshots with the markdown returned by gitlab_upload_file. |
| gitlab_update_noteC | Edits an existing comment. |
| gitlab_list_discussionsA | Threaded discussions, including code-review threads with their file/line position and resolved state. |
| gitlab_reply_to_discussionB | Adds a reply to an existing discussion thread. |
| gitlab_issue_linksA | Lists, creates or removes links between issues (relates to / blocks / blocked by). |
| gitlab_issue_time_trackingB | Reads or updates estimate and spent time on an issue. |
| gitlab_issue_related_merge_requestsB | Merge requests that reference or close this issue. |
| gitlab_list_labelsC | Labels of a project or group. |
| gitlab_create_labelC | Creates a project label. |
| gitlab_list_milestonesC | Milestones of a project or group. |
| gitlab_list_boardsB | Issue boards and their lists for a project or group. |
| gitlab_list_merge_requestsA | Lists merge requests for a project, a group, or the whole instance (omit both ids) with the usual filters. |
| gitlab_get_merge_requestA | Full merge request: branches, approvals, merge status, pipeline, plus optional comments and attachment/screenshot URLs. |
| gitlab_get_merge_request_diffA | The actual code changes of a merge request, file by file. Truncated to stay readable. |
| gitlab_create_merge_requestC | Opens a merge request between two branches. |
| gitlab_update_merge_requestC | Edits a merge request. |
| gitlab_merge_merge_requestA | Merges a merge request, optionally waiting for the pipeline to pass. |
| gitlab_merge_request_actionA | Approve/unapprove, rebase, cancel auto-merge, or inspect approvals, commits, participants, closed issues and pipelines of a merge request. |
| gitlab_create_merge_request_threadA | Starts a review thread. With file_path + line + diff_refs it anchors to a specific line; without them it posts a general discussion. Get diff_refs from gitlab_get_merge_request. |
| gitlab_resolve_merge_request_threadA | Marks a review thread resolved or unresolved. |
| gitlab_list_repo_treeB | Lists files and directories in the repository tree. |
| gitlab_get_fileA | Reads a file from the repository. Text comes back decoded; set as_image=true to look at an image committed to the repo. |
| gitlab_create_or_update_fileB | Creates or updates a single file in a branch. |
| gitlab_commit_filesB | Creates one commit that touches several files at once (create/update/delete/move). |
| gitlab_list_branchesC | Branches of a project. |
| gitlab_branch_actionB | Gets, creates or deletes branches. |
| gitlab_list_commitsC | Commit history with optional path and date filters. |
| gitlab_get_commitA | One commit with stats and optionally its diff. |
| gitlab_compareA | Diff between two branches, tags or commits, including the commit list. |
| gitlab_list_tagsC | Repository tags. |
| gitlab_tag_actionC | Creates or deletes a tag. |
| gitlab_list_releasesC | Releases of a project. |
| gitlab_create_releaseB | Publishes a release for a tag. |
| gitlab_list_protected_branchesB | Protection rules for branches (who may push/merge). |
| gitlab_blame_fileC | Per-line authorship for a file. |
| gitlab_list_pipelinesB | CI pipelines with status and ref filters. |
| gitlab_get_pipelineB | A pipeline with its jobs, durations and failure reasons. |
| gitlab_pipeline_actionA | Triggers a new pipeline, or retries/cancels/deletes an existing one. |
| gitlab_list_jobsB | Jobs of a pipeline or of the whole project. |
| gitlab_get_job_logA | Downloads the trace/log of a CI job — the fastest way to find out why a pipeline failed. Returns the tail by default. |
| gitlab_job_actionB | Inspects, retries, cancels, runs or erases a CI job. |
| gitlab_get_job_artifactA | Downloads a CI artifact. A single image path (Playwright/Cypress screenshot, coverage badge) comes back as a viewable image. |
| gitlab_ci_variablesB | Manages project CI/CD variables. Values of masked variables are not returned by GitLab. |
| gitlab_lint_ci_configA | Validates CI configuration against the project's context before committing it. |
| gitlab_list_environmentsD | Deployment environments of a project. |
| gitlab_list_deploymentsC | Deployment history of a project. |
| gitlab_list_pipeline_schedulesC | Scheduled pipelines of a project. |
| gitlab_read_attachmentA | Downloads an attached file from GitLab with authentication and returns it. PNG/JPEG/GIF/WebP images come back as viewable images, text files as text, anything else as a base64 resource. This is how you look at screenshots pasted into issues, merge requests and comments. |
| gitlab_list_attachmentsA | Scans the description and comments of an issue, merge request or epic and returns every attached file/screenshot with a ready-to-use URL for gitlab_read_attachment. |
| gitlab_upload_fileA | Uploads a local file to the project's upload store and returns the markdown snippet to embed it in an issue, MR or comment. |
| gitlab_download_urlA | Authenticated GET of an arbitrary URL on the GitLab instance — job artifacts, raw files, avatars, design files. Returns images as images and text as text. |
| gitlab_wikiB | Lists, reads and edits wiki pages of a project. |
| gitlab_snippetsC | Manages project snippets, including raw content. |
| gitlab_project_hooksC | Lists, creates and deletes project webhooks. |
| gitlab_list_packagesD | Packages published to the project registry. |
| gitlab_list_registry_repositoriesA | Container registry repositories of a project, optionally with tags. |
| gitlab_award_emojiC | Lists, adds or removes emoji reactions. |
| gitlab_project_statisticsB | Languages, contributors and repository size for a project. |
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/amalychev/gitlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server