← @godrix/mcp-gitlab-utils

@godrix/mcp-gitlab-utils 0.3.3

npm · @godrix/gitlab-utils-mcp · current release

15
Tools
1
Resources
1
Templates
5
Prompts

Observation

Observed 2026-08-23T00:20:44.329Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  },
  "completions": {}
}

Tools 15

ToolCategoryAnnotationsRisk
gitlab_add_mr_inline_commentCreates a review thread on a specific diff line (file + new_line or old_line). Requires write permissions.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Comment text."
    },
    "file_path": {
      "type": "string",
      "description": "File path in the diff (e.g. src/app.ts)."
    },
    "new_line": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Line in the new file (additions/changes)."
    },
    "old_line": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Line in the old file (deletions)."
    },
    "old_path": {
      "type": "string",
      "description": "Old path if the file was renamed; default=file_path."
    },
    "new_path": {
      "type": "string",
      "description": "New path if the file was renamed; default=file_path."
    }
  },
  "required": [
    "body",
    "file_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
Writes · Non-destructive
gitlab_compareDiff between two refs (branches, tags, or SHAs). Returns commits and file diffs.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "from": {
      "type": "string",
      "description": "Source ref (branch, tag, or SHA)."
    },
    "to": {
      "type": "string",
      "description": "Target ref (branch, tag, or SHA)."
    },
    "straight": {
      "type": "boolean",
      "default": false,
      "description": "When true, direct comparison without merge-base."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_control_pipelineLists jobs, plays manual jobs, retries job/pipeline, or cancels pipeline.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "action": {
      "type": "string",
      "enum": [
        "list_jobs",
        "play",
        "retry_job",
        "retry_pipeline",
        "cancel_pipeline"
      ]
    },
    "pipeline_id": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    }
  },
  "required": [
    "action"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
Writes · Non-destructive
gitlab_get_fileReturns file content at a ref (branch, tag, or commit SHA). Useful for .gitlab-ci.yml or configs without a local clone.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "file_path": {
      "type": "string",
      "description": "File path in the repo (e.g. .gitlab-ci.yml, src/main.ts)."
    },
    "ref": {
      "type": "string",
      "description": "Branch, tag, or SHA. Default: project default_branch."
    },
    "max_chars": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500000,
      "default": 100000
    }
  },
  "required": [
    "file_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_job_traceReturns the trace (full or truncated log) for a job by job_id.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Job ID (not to be confused with pipeline_id)."
    },
    "max_chars": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500000,
      "default": 48000
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_merge_requestReturns MR metadata: title, state, branches, reviewers, labels, head pipeline, approvals, and URL.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_mr_contextReturns MR changes/diff and optionally failed job traces and review discussions.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "include_failed_jobs_trace": {
      "type": "boolean",
      "default": false,
      "description": "When true, attaches logs from failed jobs on head_pipeline."
    },
    "include_discussions": {
      "type": "boolean",
      "default": false,
      "description": "When true, includes discussion threads and inline comments."
    },
    "trace_max_chars": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500000,
      "default": 24000
    },
    "discussions_per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_mr_discussionsLists review threads, inline comments, and general MR notes.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_mr_merge_statusSummarizes whether the MR can be merged: conflicts, draft, pipeline, approvals, blocking discussions, and actionable blockers.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_get_pipelineReturns pipeline state and job list with summary (name, stage, status, duration).
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "pipeline_id": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_list_pipelinesLists recent project pipelines, filtering by ref (branch/tag), MR, or status.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "ref": {
      "type": "string",
      "description": "Branch ou tag (ex.: main, feature/foo)."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "status": {
      "type": "string",
      "enum": [
        "created",
        "waiting_for_resource",
        "preparing",
        "pending",
        "running",
        "success",
        "failed",
        "canceled",
        "skipped",
        "manual",
        "scheduled"
      ],
      "description": "Filter by pipeline status."
    },
    "per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_manage_merge_requestsList, create, update, approve, merge, close, reopen, draft/ready, or comment on merge requests.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "action": {
      "type": "string",
      "enum": [
        "list",
        "get",
        "create",
        "update",
        "approve",
        "unapprove",
        "comment",
        "merge",
        "close",
        "reopen",
        "mark_draft",
        "mark_ready"
      ]
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "state": {
      "type": "string",
      "enum": [
        "opened",
        "closed",
        "merged",
        "all"
      ],
      "description": "Filter for list action."
    },
    "source_branch": {
      "type": "string",
      "description": "Filter for list or branch for create."
    },
    "target_branch": {
      "type": "string",
      "description": "Target branch for create (default: project default_branch)."
    },
    "title": {
      "type": "string",
      "description": "Title (create/update)."
    },
    "description": {
      "type": "string",
      "description": "Description (create/update)."
    },
    "labels": {
      "type": "string",
      "description": "Comma-separated labels (create/update)."
    },
    "remove_source_branch": {
      "type": "boolean",
      "description": "Remove branch after merge (create/update/merge)."
    },
    "comment": {
      "type": "string",
      "description": "Comment body (comment action)."
    },
    "squash": {
      "type": "boolean",
      "description": "Squash commits when merging."
    },
    "merge_commit_message": {
      "type": "string",
      "description": "Merge commit message."
    },
    "squash_commit_message": {
      "type": "string",
      "description": "Squash commit message."
    },
    "merge_when_pipeline_succeeds": {
      "type": "boolean",
      "description": "Schedule merge when pipeline succeeds."
    },
    "sha": {
      "type": "string",
      "description": "Expected source branch SHA (GitLab merge validation)."
    },
    "list_per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "required": [
    "action"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
Writes · Non-destructive
gitlab_prepare_reviewCreates a worktree from local repo (repo_path) or shallow HTTPS clone with token. Runs npm ci or composer install by default.
Input schema
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "description": "Numeric ID or group/repo path on GitLab."
    },
    "repo_path": {
      "type": "string",
      "description": "Absolute local clone path; resolves project and MR from current branch."
    },
    "merge_request_iid": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Merge request IID. Omit with repo_path to resolve from current branch."
    },
    "install_command": {
      "type": "string",
      "description": "Shell command at worktree root (e.g. npm ci). Omit to auto-detect."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "openWorldHint": true
}
Writes · Non-destructive
gitlab_resolve_contextDiscovers project_id, current branch, and merge_request_iid from repo_path. Use before other tools when working in a local clone.
Input schema
{
  "type": "object",
  "properties": {
    "repo_path": {
      "type": "string",
      "description": "Absolute path to local clone."
    }
  },
  "required": [
    "repo_path"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive
gitlab_search_projectsLists projects accessible by the token, with optional name or path filter.
Input schema
{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Search term (name or path)."
    },
    "membership": {
      "type": "boolean",
      "default": true,
      "description": "When true, only projects where the user is a member."
    },
    "per_page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "openWorldHint": true
}
Read only · Non-destructive

Resources 1

Resource templates 1

Prompts 5

Let’s talk about MCP security.

Share your details and our security team will contact you.