0.3.3npm · @godrix/gitlab-utils-mcp · current release
Observed 2026-08-23T00:20:44.329Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
},
"completions": {}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
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 | — |
Tool reference, context resolution, and recommended workflows.
{
"resource_key": "gitlab://guide",
"uri": "gitlab://guide",
"name": "gitlab_agent_guide",
"description": "Tool reference, context resolution, and recommended workflows.",
"mime_type": "text/markdown",
"annotations": null,
"metadata_hash": "c6b724d9a48d50b9b205334fb5be763ada65f0629a483bec7890dc5a08ca36ca"
}Project info: default_branch, web_url, visibility, and basic stats.
{
"template_key": "gitlab://project/{project_ref}",
"uri_template": "gitlab://project/{project_ref}",
"name": "gitlab_project",
"description": "Project info: default_branch, web_url, visibility, and basic stats.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "4d2fd1ff5338902324e9560520b53802c0221013ff7f736c597f8449c1ace790"
}Open a merge request with title and description from branch work.
{
"prompt_key": "create_mr_from_branch",
"name": "create_mr_from_branch",
"description": "Open a merge request with title and description from branch work.",
"arguments": [
{
"name": "repo_path",
"description": "Absolute path to local clone.",
"required": true
},
{
"name": "target_branch",
"description": "Target branch (default: project default).",
"required": false
},
{
"name": "draft",
"description": "true for draft MR.",
"required": false
}
],
"metadata_hash": "fd7ca4b1709c84754a398d3a149469c0c4a84429233f0e8d8fda1e1bc7816f6f"
}Workflow to diagnose and fix failed jobs on the MR or branch pipeline.
{
"prompt_key": "fix_failed_ci",
"name": "fix_failed_ci",
"description": "Workflow to diagnose and fix failed jobs on the MR or branch pipeline.",
"arguments": [
{
"name": "repo_path",
"required": false
},
{
"name": "merge_request_iid",
"required": false
},
{
"name": "project_id",
"required": false
}
],
"metadata_hash": "6f2174901349de2ecc362463ec991e57c9eeff7bffe0cedc35d75321b2f8b01d"
}Workflow to validate mergeability and merge (or schedule merge_when_pipeline_succeeds).
{
"prompt_key": "merge_merge_request",
"name": "merge_merge_request",
"description": "Workflow to validate mergeability and merge (or schedule merge_when_pipeline_succeeds).",
"arguments": [
{
"name": "repo_path",
"description": "Local clone path (recommended).",
"required": false
},
{
"name": "merge_request_iid",
"description": "MR IID if known.",
"required": false
},
{
"name": "project_id",
"description": "ID or group/repo when repo_path is not set.",
"required": false
},
{
"name": "squash",
"description": "true to squash commits on merge.",
"required": false
},
{
"name": "remove_source_branch",
"description": "true to delete source branch after merge.",
"required": false
},
{
"name": "wait_for_pipeline",
"description": "true for merge_when_pipeline_succeeds while CI is running.",
"required": false
}
],
"metadata_hash": "f5c785b4cbd1b90a414efba61e10a89cb32e7789fc629c7d494fe7b5a494e5a3"
}Agent workflow to review an MR: context, diff, discussions, and quality checklist.
{
"prompt_key": "review_merge_request",
"name": "review_merge_request",
"description": "Agent workflow to review an MR: context, diff, discussions, and quality checklist.",
"arguments": [
{
"name": "repo_path",
"description": "Local clone path (recommended).",
"required": false
},
{
"name": "merge_request_iid",
"description": "MR IID if known.",
"required": false
},
{
"name": "project_id",
"description": "ID or group/repo when repo_path is not set.",
"required": false
},
{
"name": "focus",
"description": "Extra scope: security, performance, tests, etc.",
"required": false
}
],
"metadata_hash": "dcf18526234c52a5b01d42892d4467e4a21784c87682a1e3e00415a896d10727"
}List and prioritize open merge requests for the project or branch.
{
"prompt_key": "triage_open_mrs",
"name": "triage_open_mrs",
"description": "List and prioritize open merge requests for the project or branch.",
"arguments": [
{
"name": "project_id",
"required": false
},
{
"name": "repo_path",
"required": false
}
],
"metadata_hash": "deacde550b0cb3db7cfc07706ef252ffb4fa1713d9d6ffb26affb9eda72205be"
}