gitlab-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | SSE listen address | |
| MCP_PORT | No | SSE listen port | |
| GITLAB_URL | Yes | GitLab instance base URL | |
| GITLAB_TOKEN | Yes | Personal or project access token | |
| MCP_TRANSPORT | No | Transport type: stdio (default) or sse | stdio |
| GITLAB_DEFAULT_PROJECT | No | Default project path (e.g. group/project) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gitlab_get_jobA | Get the current status of a GitLab CI job by ID. Args: job_id: The numeric job ID (visible in the GitLab UI URL). project_path: GitLab project path, e.g. 'group/project'. Defaults to GITLAB_DEFAULT_PROJECT env var if not provided. |
| gitlab_poll_jobA | Poll a GitLab CI job until it reaches a terminal state. Checks every interval_seconds and gives up after timeout_minutes. Returns the final job status summary. Args: job_id: The numeric job ID. project_path: GitLab project path, e.g. 'group/project'. interval_seconds: How often to poll (default 30s). timeout_minutes: Stop polling after this many minutes (default 30). |
| gitlab_get_pipelineA | Get the status and summary of a GitLab CI pipeline. Args: pipeline_id: The numeric pipeline ID. project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_list_pipelinesA | List the most recent pipelines for a project. Args: project_path: GitLab project path, e.g. 'group/project'. limit: Number of pipelines to return (default 10, max 100). |
| gitlab_list_jobsB | List all jobs in a specific pipeline with their statuses. Args: pipeline_id: The numeric pipeline ID. project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_get_job_logA | Fetch the raw log output of a CI job. Args: job_id: The numeric job ID. project_path: GitLab project path, e.g. 'group/project'. tail: Return only the last N lines (default 100, 0 = all lines). |
| gitlab_retry_jobA | Retry a failed or cancelled CI job. Args: job_id: The numeric job ID to retry. project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_cancel_jobA | Cancel a running CI job. Args: job_id: The numeric job ID to cancel. project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_retry_pipelineC | Retry all failed jobs in a pipeline. Args: pipeline_id: The numeric pipeline ID. project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_trigger_pipelineA | Trigger a new CI pipeline on the given branch or tag. Args: ref: Branch name, tag, or SHA to run the pipeline on. project_path: GitLab project path, e.g. 'group/project'. variables: Optional dict of CI variable key/value pairs to inject. |
| gitlab_list_projectsA | List GitLab projects accessible to the authenticated user. Args: search: Optional keyword to filter projects by name. limit: Max projects to return (default 20, max 100). |
| gitlab_get_projectB | Get metadata for a GitLab project. Args: project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_list_branchesA | List branches in a project. Args: project_path: GitLab project path, e.g. 'group/project'. search: Optional keyword to filter branch names. limit: Max branches to return (default 20, max 100). |
| gitlab_get_fileA | Retrieve the contents of a file from the repository. Args: file_path: Path to the file within the repo, e.g. 'src/main.py'. ref: Branch, tag, or commit SHA (default 'HEAD'). project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_list_merge_requestsA | List merge requests for a project. Args: project_path: GitLab project path, e.g. 'group/project'. state: Filter by state: 'opened', 'closed', 'merged', or 'all' (default 'opened'). limit: Max MRs to return (default 20, max 100). |
| gitlab_get_merge_requestA | Get details of a merge request by its project-level IID. Args: mr_iid: The merge request IID (shown in the GitLab UI as !123). project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_create_merge_requestB | Create a new merge request. Args: title: MR title. source_branch: Branch to merge from. target_branch: Branch to merge into. project_path: GitLab project path, e.g. 'group/project'. description: Optional MR description / body text. remove_source_branch: Delete source branch after merge (default False). squash: Squash commits on merge (default False). |
| gitlab_add_mr_noteB | Add a comment to a merge request. Args: mr_iid: The merge request IID (e.g. 42 for !42). body: Comment text (markdown supported). project_path: GitLab project path, e.g. 'group/project'. |
| gitlab_list_commitsA | List commits on a branch or ref. Args: project_path: GitLab project path, e.g. 'group/project'. ref: Branch, tag, or commit SHA (default 'HEAD'). limit: Max commits to return (default 20, max 100). |
| gitlab_get_commitB | Get details and diff stats for a specific commit. Args: sha: Full or short commit SHA. project_path: GitLab project path, e.g. 'group/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
- 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/LeonRLewis/gitlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server