Skip to main content
Glama
godrix

@godrix/mcp-gitlab-utils

by godrix

@godrix/gitlab-utils-mcp

Install MCP Server

Node.js MCP server for the GitLab REST API — built for AI agents (pipelines, merge requests, diffs, local review, and context discovery).

Version 0.3.1gitlab_-prefixed tools, full MR lifecycle, read-only mode, server instructions, prompts, and resources.

Prerequisites

  • Node.js 18+

  • GitLab PAT with api and read_repository (write scope for merge/comment/approve)

  • Git on PATH (for repo_path, worktrees, and local review)

Related MCP server: gitlab-mcp

Quick install (npx)

No clone or local build — the published npm package includes compiled JavaScript.

Cursor / Claude Desktop (mcp.json)

{
  "mcpServers": {
    "gitlab-utils": {
      "command": "npx",
      "args": ["-y", "@godrix/gitlab-utils-mcp"],
      "env": {
        "GITLAB_TOKEN": "glpat-...",
        "GITLAB_BASE_URL": "https://gitlab.example.com",
        "GITLAB_READ_ONLY": "false"
      }
    }
  }
}

Restart your MCP client after saving. Optional variables: GITLAB_PROJECT_ID, WORKTREE_DIR.

Global install (alternative)

npm install -g @godrix/gitlab-utils-mcp

Then use "command": "gitlab-utils-mcp" in mcp.json (no npx).

Environment variables

Variable

Required

Description

GITLAB_TOKEN

Yes

Sent as PRIVATE-TOKEN header

GITLAB_BASE_URL

Yes

e.g. https://gitlab.example.com

GITLAB_PROJECT_ID

No

Fallback group/repo or numeric ID

WORKTREE_DIR

No

Default: /tmp/referencia_ao_mcp_worktree

GITLAB_READ_ONLY

No

Default: false. When true, blocks writes (merge, comment, approve, pipeline control, prepare_review)

Project resolution: pass project_id on a tool, or repo_path (local clone) to infer group/repo from origin, or set GITLAB_PROJECT_ID.

MR without IID: with repo_path, the current branch resolves the open MR (source_branch); errors if zero or multiple MRs match. Use gitlab_resolve_context to discover the IID.

Tools

Discovery

Tool

Description

gitlab_resolve_context

Resolve project_path, branch, and MR from repo_path

gitlab_search_projects

Search projects accessible by the token

Merge requests

Tool

Description

gitlab_get_merge_request

MR metadata (state, reviewers, pipeline)

gitlab_get_mr_merge_status

Mergeability: conflicts, draft, pipeline, approvals, blockers

gitlab_get_mr_context

Diff/changes + optional CI traces and discussions

gitlab_get_mr_discussions

Review threads and comments

gitlab_add_mr_inline_comment

Inline comment on a diff line

gitlab_manage_merge_requests

list, get, create, update, approve, unapprove, comment, merge, close, reopen, mark_draft, mark_ready

CI/CD

Tool

Description

gitlab_list_pipelines

List pipelines (by ref, MR, or status)

gitlab_get_pipeline

Pipeline + jobs

gitlab_get_job_trace

Job log

gitlab_control_pipeline

list_jobs, play, retry_job, retry_pipeline, cancel_pipeline

Repository

Tool

Description

gitlab_get_file

Read remote file at a ref (e.g. .gitlab-ci.yml)

gitlab_compare

Diff between two refs

Local review

Tool

Description

gitlab_prepare_review

git worktree + npm ci / composer install

Prompts (workflows)

Prompt

Use

review_merge_request

Full MR review with checklist

merge_merge_request

Validate mergeability and merge

fix_failed_ci

Diagnose and fix failed pipeline

create_mr_from_branch

Create MR from current branch

triage_open_mrs

Prioritize open MRs

Resources

URI

Content

gitlab://guide

Markdown agent guide (tools and flows)

gitlab://project/{project_ref}

Project metadata JSON

Read-only mode

With GITLAB_READ_ONLY=true:

  • Allowed: reads (MR, diff, pipeline, merge status, list/get)

  • Blocked: merge, comment, inline comment, approve, create/update MR, pipeline control, prepare_review

Useful for analysis/review agents without mutating GitLab.

Migration 0.2 → 0.3

New tools and actions (no breaking changes to existing names):

Addition

Description

gitlab_get_mr_merge_status

Mergeability state and blockers

gitlab_add_mr_inline_comment

Inline diff comment

gitlab_manage_merge_requests

New actions: merge, close, reopen, mark_draft, mark_ready

Migration 0.1 → 0.2

Legacy names were renamed with the gitlab_ prefix:

0.1.0

0.2.0

control_pipeline

gitlab_control_pipeline

get_mr_context

gitlab_get_mr_context

manage_mrs

gitlab_manage_merge_requests

prepare_review

gitlab_prepare_review

gitlab_control_pipeline: retryretry_job; new actions retry_pipeline and cancel_pipeline.

MCPB install (Claude Desktop / local bundle)

Alternative to npx for clients that support .mcpb files:

  1. Clone the repo: git clone ... && npm install && npm run build

  2. npm run pack:mcpb — produces .mcpb with manifest.json, dist/, and node_modules

  3. For a smaller bundle: npm run pack:mcpb:slim

  4. Install the .mcpb in your client and fill in token + URL

Local development

To contribute or test changes before publishing to npm:

git clone https://github.com/godrix/mcp-gitlab-utils.git
cd mcp-gitlab-utils
npm install
cp .env.example .env   # set GITLAB_TOKEN and GITLAB_BASE_URL
npm run dev            # tsx, stdio
# or
npm run build && npm start

Cursor config pointing at the clone (instead of npx):

{
  "mcpServers": {
    "gitlab-utils": {
      "command": "node",
      "args": ["/absolute/path/mcp-gitlab-utils/dist/main.js"],
      "env": {
        "GITLAB_TOKEN": "glpat-...",
        "GITLAB_BASE_URL": "https://gitlab.example.com",
        "GITLAB_READ_ONLY": "false"
      }
    }
  }
}

Extra requirements for local review: npm and/or composer depending on the target repo.

License

MIT

Available Tools

15 tools
gitlab_add_mr_inline_commentInline MR diff commentA

Creates a review thread on a specific diff line (file + new_line or old_line). Requires write permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text.
new_lineNoLine in the new file (additions/changes).
new_pathNoNew path if the file was renamed; default=file_path.
old_lineNoLine in the old file (deletions).
old_pathNoOld path if the file was renamed; default=file_path.
file_pathYesFile path in the diff (e.g. src/app.ts).
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate mutability (not read-only, not destructive). The description adds context that it creates a thread on a specific diff line. No contradiction, and it discloses the core behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: first states the purpose, second adds permission requirement. No filler or redundancy; front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 9 parameters and no output schema, the description omits important details like mutual exclusivity of new_line/old_line, error scenarios, or what a 'review thread' entails. This leaves gaps for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description briefly mentions 'new_line or old_line' but adds no additional parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (creates a review thread) on a specific resource (diff line) with file and line identifiers. It distinguishes from sibling tools like gitlab_get_mr_discussions which retrieves threads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite (write permissions) but does not provide guidance on when to use this tool versus alternatives like gitlab_prepare_review or gitlab_manage_merge_requests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_compareCompare branches or commitsA
Read-only

Diff between two refs (branches, tags, or SHAs). Returns commits and file diffs.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget ref (branch, tag, or SHA).
fromYesSource ref (branch, tag, or SHA).
straightNoWhen true, direct comparison without merge-base.
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that it returns commits and file diffs, which is useful behavioral context but not rich beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the core function and output. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should clarify return format. It mentions 'commits and file diffs' but lacks detail on structure, pagination, or error conditions. Adequate for a simple tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description does not need to add parameter details. It mentions ref types (branches, tags, SHAs) which aligns with parameter descriptions but adds no new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it computes diffs between two Git refs (branches, tags, or SHAs) and returns commits and file diffs. It distinguishes from siblings by specifying arbitrary refs rather than just MRs, though not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for comparing any two refs but does not provide when-to-use or when-not-to-use guidance relative to siblings like gitlab_get_mr_merge_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_control_pipelineControl pipeline and jobsC

Lists jobs, plays manual jobs, retries job/pipeline, or cancels pipeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
job_idNo
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
pipeline_idNo
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation destructiveHint=false contradicts the description's mention of 'cancels pipeline', which is a destructive action. The description does not clarify behavioral traits like permissions, idempotency, or side effects beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but it is a list of actions without structure. It could be improved by grouping actions or adding context, but it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters and multiple actions, the description is insufficient. It does not explain return values (no output schema) or how to combine parameters for each action, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add any meaning beyond the input schema. It fails to explain how parameters relate to actions (e.g., which parameters are needed for 'play' vs 'retry'). Schema coverage is 50%, but the description offers no compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly lists the tool's actions (list jobs, play, retry, cancel), indicating it controls pipelines and jobs. However, it does not distinguish from sibling tools like gitlab_get_pipeline or gitlab_list_pipelines, lacking specificity about what makes this tool unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, forbidden combinations, or scenarios where another tool would be better.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_fileRead repository fileA
Read-only

Returns file content at a ref (branch, tag, or commit SHA). Useful for .gitlab-ci.yml or configs without a local clone.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or SHA. Default: project default_branch.
file_pathYesFile path in the repo (e.g. .gitlab-ci.yml, src/main.ts).
max_charsNo
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool is read-only and non-destructive. The description adds that it works without a local clone, which is useful context. It does not detail error handling, truncation behavior, or file existence checks, but with the annotations, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, very concise, and front-loaded with the core functionality. Every sentence serves a purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple file reading tool, the description covers the essential behavior and use case. It does not mention the max_chars parameter or output format, but the schema provides those details. Overall, it is complete for typical usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed descriptions for 4 of 5 parameters (80% coverage). The tool description adds no additional parameter information beyond that, making it sufficient but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns file content at a specified ref, using a specific verb and resource. It distinguishes from sibling tools, which are focused on MRs, pipelines, etc., by being a file reading operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a use case example ('.gitlab-ci.yml or configs without a local clone'), giving contextual guidance. It does not explicitly mention when not to use it or list alternatives, but given the sibling context, it is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_job_traceCI job logA
Read-only

Returns the trace (full or truncated log) for a job by job_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID (not to be confused with pipeline_id).
max_charsNo
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds context about truncation ('full or truncated log') but does not specify truncation conditions, encoding, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 13 words, front-loaded with the action, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should clarify return format and truncation behavior. It is adequate but missing details on what the trace looks like (e.g., plain text) and error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 75% of parameters with descriptions. The description mentions 'full or truncated log' but does not clarify the max_chars parameter or add significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns the trace (log) for a job by job_id, which is distinct from sibling tools like gitlab_get_pipeline or gitlab_get_mr_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (when you need a job's log), but no explicit guidance on when to use this versus alternatives or any exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_merge_requestMerge request detailsA
Read-only

Returns MR metadata: title, state, branches, reviewers, labels, head pipeline, approvals, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's statement 'Returns MR metadata' aligns but doesn't add significantly. However, it lists specific fields returned, which gives the agent a concrete sense of the output shape. This adds moderate value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Returns MR metadata') and enumerates key fields. There is no extraneous information, and every word contributes to understanding what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the specific metadata fields returned, which compensates for the lack of an output schema. It provides enough context for an agent to understand the tool's output shape. For a read-only tool with good annotations and a clear purpose, this is sufficient, though it could mention that the URL is included.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well-documented. The tool description does not repeat parameter details but adds context about conditional resolution ('Omit with repo_path to resolve from current branch') via the schema's own description of merge_request_iid. This reinforces usage but does not add substantial new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns specific MR metadata (title, state, branches, reviewers, labels, head pipeline, approvals, URL), establishing a specific verb+resource combination. This distinguishes it from siblings like gitlab_get_mr_merge_status (which returns only merge status) and gitlab_get_mr_context (which returns context). The description is unambiguous about what the tool retrieves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not mention when not to use it, nor does it reference sibling tools or conditions for using one over another. While the sibling list is provided externally, the description itself offers no usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_mr_contextMR context (diff + pipeline + discussions)A
Read-only

Returns MR changes/diff and optionally failed job traces and review discussions.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
trace_max_charsNo
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.
include_discussionsNoWhen true, includes discussion threads and inline comments.
discussions_per_pageNo
include_failed_jobs_traceNoWhen true, attaches logs from failed jobs on head_pipeline.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds that it returns diffs and optionally traces/discussions. No contradictions or missing behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that clearly states the tool's primary function. No superfluous information; every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, so the description should explain return format. It states the returned content types (diff, traces, discussions) but lacks detail on structure or how they are combined. While adequate for simple use, completeness is limited.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, so baseline is 3. The tool description adds no additional meaning beyond the schema's parameter descriptions. The schema already explains project_id, repo_path, and merge_request_iid, so the description does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'MR context (diff + pipeline + discussions)' and description explicitly state the tool returns changes/diff and optionally failed job traces and review discussions. This clearly distinguishes it from siblings like gitlab_get_merge_request (which returns metadata) and gitlab_get_mr_discussions (which only gets discussions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when needing combined diff, traces, and discussions) but does not explicitly state when to prefer this over alternatives or mention exclusions. Given sibling tools for individual components, explicit guidance would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_mr_discussionsMerge request discussionsA
Read-only

Lists review threads, inline comments, and general MR notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNo
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the specific types of content listed (review threads, inline comments, general MR notes), but does not disclose pagination behavior or any other traits beyond the annotations. Acceptable but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One succinct sentence that front-loads the core action. No filler or redundant information; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is functional but minimal given the absence of an output schema and the presence of sibling tools. It does not explain the return structure, pagination, or how the repo_path parameter influences behavior. Adequate for a straightforward list tool, but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, with three parameters documented. The description does not add any parameter-level meaning beyond the schema. Per_page lacks a description, and the tool description does not compensate. Baseline 3 is appropriate for high coverage without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists review threads, inline comments, and general MR notes. This specific verb-resource combination distinguishes it from siblings like gitlab_get_merge_request and gitlab_add_mr_inline_comment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites or context where this tool is appropriate, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_mr_merge_statusMR merge statusA
Read-only

Summarizes whether the MR can be merged: conflicts, draft, pipeline, approvals, blocking discussions, and actionable blockers.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as readOnlyHint=true. The description adds valuable behavioral context by listing exactly what it checks (conflicts, draft, pipeline, approvals, blocking discussions, actionable blockers), going beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately states the action ('Summarizes') and includes a concise list of what is checked. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status check tool with good annotations and full schema coverage, the description is complete. It explains the tool's purpose and scope adequately, and the lack of output schema is acceptable as the output format is implied by 'summarizes'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have descriptions in the schema (100% coverage). The tool description does not add additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool summarizes merge readiness, listing specific aspects like conflicts, draft, pipeline, approvals, and blockers. This distinguishes it from sibling tools like gitlab_get_merge_request which returns full details, or gitlab_get_mr_context which may provide broader context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For example, it does not explain that this tool is for quick merge readiness checks while gitlab_get_merge_request provides comprehensive MR data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_get_pipelinePipeline detailsA
Read-only

Returns pipeline state and job list with summary (name, stage, status, duration).

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
pipeline_idNo
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and non-destructive. The description adds value by specifying the return content (pipeline state and job list with summary fields), providing behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant words. It is front-loaded with the verb 'Returns' and directly states the output. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple query tool but lacks guidance on how parameters interact (e.g., using pipeline_id alone vs. repo_path with merge_request_iid). No output schema is provided, so the agent cannot verify the full response structure beyond the summary fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (3 of 4 parameters described). The tool description does not add any additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate because the schema carries most of the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns pipeline state and job list with specific summary fields (name, stage, status, duration). It distinguishes from siblings like gitlab_control_pipeline (which mutates) and gitlab_list_pipelines (which returns a list without job details).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites, required parameter combinations, or when not to use it. The description only states what it returns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_list_pipelinesList pipelinesA
Read-only

Lists recent project pipelines, filtering by ref (branch/tag), MR, or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch ou tag (ex.: main, feature/foo).
statusNoFilter by pipeline status.
per_pageNo
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's 'lists' is consistent. It adds the 'recent' qualifier, which is useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste, front-loaded with key action and filters. Very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with 6 parameters and no output schema, the description coveres core functionality and main filters. Could clarify that at least one identifier is needed, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (83%), so baseline is 3. The description adds value by summarizing the three main filter categories (ref, MR, status) which groups parameters meaningfully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists project pipelines with filtering options (ref, MR, status). It distinguishes from siblings like gitlab_get_pipeline (single pipeline) and gitlab_control_pipeline (control).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing with filters but does not explicitly say when to use this vs alternatives like gitlab_get_pipeline. No exclusions or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_manage_merge_requestsManage merge requestsC

List, create, update, approve, merge, close, reopen, draft/ready, or comment on merge requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
shaNoExpected source branch SHA (GitLab merge validation).
stateNoFilter for list action.
titleNoTitle (create/update).
actionYes
labelsNoComma-separated labels (create/update).
squashNoSquash commits when merging.
commentNoComment body (comment action).
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
descriptionNoDescription (create/update).
list_per_pageNo
source_branchNoFilter for list or branch for create.
target_branchNoTarget branch for create (default: project default_branch).
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.
merge_commit_messageNoMerge commit message.
remove_source_branchNoRemove branch after merge (create/update/merge).
squash_commit_messageNoSquash commit message.
merge_when_pipeline_succeedsNoSchedule merge when pipeline succeeds.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds little behavioral context beyond listing actions. It does not disclose permission requirements, side effects of actions like merge or close, or any rate limits. The description lacks detail that would help an agent understand behavior beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence) and front-loads the actions, but it is merely a list without any structuring or explanation. It could be improved by grouping actions or mentioning typical workflows, but it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 18 parameters, no output schema, and a wide range of actions, the description is incomplete. It does not explain return values, error conditions, or action-specific parameter requirements. The agent would need to consult the schema heavily.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, so most parameters already have descriptions in the schema. The description does not add any parameter-level semantics; it only lists the available actions. Baseline of 3 is appropriate since schema handles the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool manages merge requests with a list of specific actions (list, create, update, approve, merge, close, etc.), which distinguishes it from sibling tools that are more narrowly focused (e.g., gitlab_get_merge_request). However, it could be more precise about the exact resource (GitLab merge requests).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are siblings like gitlab_get_merge_request for reading a single MR, but the description does not mention trade-offs or exclusions. The agent must infer usage from the action list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_prepare_reviewPrepare review folder (worktree + install)A

Creates a worktree from local repo (repo_path) or shallow HTTPS clone with token. Runs npm ci or composer install by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoAbsolute local clone path; resolves project and MR from current branch.
project_idNoNumeric ID or group/repo path on GitLab.
install_commandNoShell command at worktree root (e.g. npm ci). Omit to auto-detect.
merge_request_iidNoMerge request IID. Omit with repo_path to resolve from current branch.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds context about two modes (local repo or HTTPS clone) and default install commands, but does not disclose potential side effects (e.g., disk space usage) or error conditions (e.g., missing token).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loads the core action and includes key details (worktree creation, install command). No wasted words; excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain return values or success indicators, but it does not. However, the parameter descriptions and annotations are rich, and the behavior is mostly clear for a preparation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so the baseline is 3. The description summarizes the workflow but does not add significant meaning beyond the parameter descriptions already provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a worktree and runs install commands, but it does not explicitly differentiate itself from sibling tools like gitlab_get_merge_request or gitlab_control_pipeline, which have distinct purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as gitlab_get_mr_context or gitlab_resolve_context. The description implies usage for setting up a review environment but does not state when not to use it or mention prerequisites like token availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_resolve_contextResolve local GitLab contextA
Read-only

Discovers project_id, current branch, and merge_request_iid from repo_path. Use before other tools when working in a local clone.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYesAbsolute path to local clone.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and openWorldHint. The description adds value by specifying exactly what is discovered (project_id, branch, MR iid) and the need to use it as a prerequisite, which is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise, front-loaded sentences with no extraneous information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only discovery tool with no output schema, the description fully explains what it does (discovers three items), its input (repo_path), and its usage context (before other tools in a local clone). It is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of repo_path. The tool description adds usage context but no additional parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool discovers project_id, current branch, and merge_request_iid from repo_path. It uses a specific verb ('Discovers') and resource ('local GitLab context'), and it differentiates from siblings by emphasizing the local clone aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool before other tools when working in a local clone. While it doesn't mention when not to use it, the context is clear and it provides a practical sequence hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_search_projectsSearch GitLab projectsA
Read-only

Lists projects accessible by the token, with optional name or path filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch term (name or path).
per_pageNo
membershipNoWhen true, only projects where the user is a member.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that projects are accessible by the token, but does not disclose pagination behavior, effects of omitting search, or default membership. Adds moderate context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that immediately states the action and scope. No unnecessary words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description omits default values for membership and per_page, pagination behavior, and return format. For a simple list tool, it covers the core but misses details that aid full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description's 'optional name or path filter' redundantly echoes the search parameter description. It adds no meaning for membership or per_page beyond the schema. With 67% schema coverage, baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool lists projects accessible by the token with an optional name or path filter. It uses a specific verb ('Lists') and resource ('projects'), and no sibling tool shares this exact function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives are provided. The description implies use for searching projects by name/path, but does not contrast with siblings like gitlab_get_file or gitlab_manage_merge_requests. Usage is implied but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.3.1
    • First observedgitlab_add_mr_inline_comment
    • First observedgitlab_compare
    • First observedgitlab_control_pipeline
    • First observedgitlab_get_file
    • First observedgitlab_get_job_trace
    • First observedgitlab_get_merge_request
    • First observedgitlab_get_mr_context
    • First observedgitlab_get_mr_discussions
    • First observedgitlab_get_mr_merge_status
    • First observedgitlab_get_pipeline
    • First observedgitlab_list_pipelines
    • First observedgitlab_manage_merge_requests
    • First observedgitlab_prepare_review
    • First observedgitlab_resolve_context
    • First observedgitlab_search_projects

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose. Even related MR tools (get_merge_request, get_mr_context, get_mr_discussions, get_mr_merge_status) are well-differentiated by their descriptions and scope.

Naming Consistency5/5

All tools follow the consistent pattern 'gitlab_verb_noun' in snake_case, with verbs like get, list, add, control, manage, prepare, resolve, search. No mixing of conventions.

Tool Count5/5

With 15 tools, the set is well-scoped for a GitLab utilities server covering MR, pipeline, file, and project operations. Neither too sparse nor too overwhelming.

Completeness4/5

The tool surface covers core MR and pipeline workflows, file retrieval, comparison, and local repository setup. Minor gaps like lack of explicit pipeline creation or branch listing are acceptable for the domain.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    A production-ready MCP server for GitLab enabling AI assistants to read and manage GitLab projects, merge requests, issues, pipelines, wikis, releases, and more through a unified interface.
    100
    302
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI agents to perform automated code reviews on GitLab merge requests, including fetching details, reading diffs, posting inline comments, managing labels, and approving or unapproving MRs.
    302
    MIT

Latest Blog Posts

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/godrix/mcp-gitlab-utils'

If you have feedback or need assistance with the MCP directory API, please join our Discord server