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 |
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 |
|---|---|
| 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