Skip to main content
Glama

GitLab MR MCP

CI PyPI version Python Versions License: MIT Code style: black

Connect your AI assistant to GitLab. Ask questions like "List open merge requests", "Show me reviews for MR #123", "Get commit discussions for MR #456", or "Find merge requests for the feature branch" directly in your chat.

Table of Contents

Related MCP server: GitLab MCP Server

Quick Setup

Installation

# Using pipx (recommended)
pipx install gitlab-mr-mcp

# Or using uv
uv tool install gitlab-mr-mcp

# Or using pip
pip install gitlab-mr-mcp

Note: Using pipx or uv tool is recommended as they automatically add the gitlab-mcp command to your PATH. If using pip install, ensure your Python scripts directory is in PATH, or use the full path to the command.

Get your GitLab token

  1. Go to GitLab → Settings → Access Tokens

  2. Create token with read_api scope (add api scope if you want write access)

  3. Copy the token

Configure your MCP client

For working with multiple GitLab projects, add to your global MCP config (~/.cursor/mcp.json for Cursor):

{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "gitlab-mcp",
      "env": {
        "GITLAB_URL": "https://gitlab.com",
        "GITLAB_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

This single configuration works across all your projects. Use search_projects or list_my_projects to find project IDs, then specify project_id in your requests.

Single-Project Setup

For working with a single project, you can set a default project ID:

{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "gitlab-mcp",
      "env": {
        "GITLAB_URL": "https://gitlab.com",
        "GITLAB_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx",
        "GITLAB_PROJECT_ID": "12345"
      }
    }
  }
}

Restart your MCP client and start asking GitLab questions!

What You Can Do

Once connected, try these commands in your chat:

Multi-Project Workflow

  • "What projects do I have access to?"

  • "Search for the backend project"

  • "Show open MRs for project 12345"

  • "List merge requests for group/my-project"

Single-Project Commands

  • "List open merge requests"

  • "Show me details for merge request 456"

  • "Get reviews and discussions for MR #123"

  • "Show me the test summary for MR #456"

  • "What tests failed in merge request #789?"

  • "Show me the pipeline for MR #456"

  • "Get the failed job logs for merge request #789"

  • "Show me commit discussions for MR #456"

  • "Get all comments on commits in merge request #789"

  • "Find merge requests for the feature/auth-improvements branch"

  • "Show me closed merge requests targeting main"

  • "Reply to discussion abc123 in MR #456 with 'Thanks for the feedback!'"

  • "Create a new review comment in MR #789 asking about the error handling"

  • "Resolve discussion def456 in MR #123"

  • "Approve merge request #456"

  • "Merge MR #123 with squash"

  • "Merge MR #789 when pipeline succeeds"

Working with Review Comments

The enhanced review tools allow you to interact with merge request discussions:

  1. First, get the reviews to see discussion IDs:

    "Show me reviews for MR #123"
  2. Reply to specific discussions using the discussion ID:

    "Reply to discussion abc123 in MR #456 with 'I'll fix this in the next commit'"
  3. Create new discussion threads to start conversations:

    "Create a review comment in MR #789 asking 'Could you add error handling here?'"
  4. Resolve discussions when issues are addressed:

    "Resolve discussion def456 in MR #123"

Note: The get_merge_request_reviews tool now displays discussion IDs and note IDs in the output, making it easy to reference specific discussions when replying or resolving.

Approving and Merging

Complete the MR lifecycle with approval and merge tools:

  1. Approve a merge request:

    "Approve MR #123"
  2. Merge with options:

    "Merge MR #456 with squash"
    "Merge MR #789 and remove source branch"
    "Merge MR #123 when pipeline succeeds"
  3. Revoke approval (if needed):

    "Unapprove MR #456"

Merge Options:

  • squash - Squash commits into a single commit

  • should_remove_source_branch - Delete source branch after merge

  • merge_when_pipeline_succeeds - Auto-merge when pipeline passes

  • sha - Ensure HEAD hasn't changed (safety check)

Note: You cannot approve your own MRs. The merge will fail if the MR has conflicts, is in draft status, or doesn't meet approval requirements.

GitLab provides two tools for checking test results - use the summary for quick checks, and the full report for detailed debugging:

Option 1: Test Summary (Fast & Lightweight) ⚡

Use get_pipeline_test_summary for a quick overview:

"Show me the test summary for MR #123"
"How many tests passed in MR #456?"

What You Get:

  • 📊 Pass/fail counts per test suite

  • ⏱️ Total execution time

  • 🎯 Pass rate percentage

  • Fast - doesn't include detailed error messages

Option 2: Full Test Report (Detailed) 🔍

Use get_merge_request_test_report for detailed debugging:

"Show me the test report for MR #123"
"What tests failed in merge request #456?"

What You Get:

  • Specific test names that passed/failed

  • Error messages and stack traces

  • 📦 Test suites organized by class/file

  • ⏱️ Execution time for each test

  • 📊 Pass rate and summary statistics

  • 📄 File paths and line numbers

How Both Work:

  • Automatically fetch the latest pipeline for the merge request

  • Retrieve test data from that pipeline (uses GitLab's /pipelines/:pipeline_id/test_report or /test_report_summary API)

Example Output:

## Summary

**Total**: 45 | **Passed**: 42 | **Failed**: 3 | **Errors**: 0
**Pass Rate**: 93.3%

## Failed Tests

### [FAIL] test_login_with_invalid_password

**Duration**: 0.300s
**Class**: `tests.auth_test.TestAuth`

**Error Output**:
AssertionError: Expected 401, got 200

Why Use This Instead of Job Logs?

  • 🎯 No noise: Only test results, no build/setup output

  • 📊 Structured data: Easy for AI to understand and suggest fixes

  • 🚀 Fast: Much smaller than full job logs

  • 🔍 Precise: Shows exact test names and error locations

Requirements:

Your CI must upload test results using artifacts:reports:junit in .gitlab-ci.yml:

test:
  script:
    - pytest --junitxml=report.xml
  artifacts:
    reports:
      junit: report.xml

Working with Pipeline Jobs and Logs

The pipeline tools provide a two-step workflow for debugging test failures:

Step 1: Get Pipeline Overview

Use get_merge_request_pipeline to see all jobs and their statuses:

"Show me the pipeline for MR #456"

What You Get:

  • Pipeline overview (status, duration, coverage)

  • All jobs grouped by status (failed, running, success)

  • Job IDs for each job (use these to fetch logs)

  • Direct links to view jobs in GitLab

  • Job-level timing and stage information

Step 2: Get Specific Job Logs

Use get_job_log with a job ID to fetch the actual output:

"Get the log for job 12345"
"Show me the output of job 67890"

What You Get:

  • Complete job output/trace

  • Log size and line count

  • Automatically truncated to last 15,000 characters for very long logs

Typical Workflow:

You: "Show me the pipeline for MR #123"
AI: "Pipeline failed. 2 jobs failed:
     - test-unit (Job ID: 12345)
     - test-integration (Job ID: 67890)"

You: "Get the log for job 12345"
AI: [Shows full test output with error details]

You: "Fix the failing test"
AI: [Analyzes the log and suggests fixes]

Why Two Tools?

  • Performance: Only fetch logs when needed (not all at once)

  • Flexibility: Check any job's log (failed, successful, or running)

  • Context Efficient: Avoid dumping huge logs unnecessarily

Working with Commit Discussions

The get_commit_discussions tool provides comprehensive insights into discussions and comments on individual commits within a merge request:

  1. View all commit discussions for a merge request:

    "Show me commit discussions for MR #123"
  2. Get detailed commit conversation history:

    "Get all comments on commits in merge request #456"

This tool is particularly useful for:

  • Code Review Tracking: See all feedback on specific commits

  • Discussion History: Understand the evolution of code discussions

  • Commit-Level Context: View comments tied to specific code changes

  • Review Progress: Monitor which commits have been discussed

Technical Implementation:

  • Uses /projects/:project_id/merge_requests/:merge_request_iid/commits to get all commits with proper pagination

  • Fetches ALL merge request discussions using /projects/:project_id/merge_requests/:merge_request_iid/discussions with pagination support

  • Filters discussions by commit SHA using position data to show commit-specific conversations

  • Handles both individual comments and discussion threads correctly

The output includes:

  • Summary of total commits and discussion counts

  • Individual commit details (SHA, title, author, date)

  • All discussions and comments for each commit with file positions

  • Complete conversation threads with replies

  • File positions for diff-related comments

  • Thread conversations with replies

Configuration Options

Configure environment variables directly in your MCP client config as shown in Quick Setup. This keeps project-specific settings with the project.

Environment Variables

Alternatively, set environment variables in your shell:

export GITLAB_PROJECT_ID=12345
export GITLAB_ACCESS_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
export GITLAB_URL=https://gitlab.com

SOCKS Proxy Support

Route all GitLab API requests through a SOCKS5 proxy by setting SOCKS_PROXY:

{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "gitlab-mcp",
      "env": {
        "GITLAB_URL": "https://gitlab.com",
        "GITLAB_ACCESS_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx",
        "GITLAB_PROJECT_ID": "12345",
        "SOCKS_PROXY": "socks5://127.0.0.1:1080"
      }
    }
  }
}

Or via environment variable:

export SOCKS_PROXY=socks5://127.0.0.1:1080

When SOCKS_PROXY is not set, connections are made directly (no proxy).

Find Your Project ID

  • Go to your GitLab project → Settings → General → Project ID

  • Or check the URL: https://gitlab.com/username/project (use the numeric ID)

Troubleshooting

Authentication Error: Verify your token has read_api permissions and is not expired.

Project Not Found: Double-check your project ID is correct (it's a number, not the project name).

Connection Issues: Make sure your GitLab URL is accessible and correct.

Script Not Found: Ensure the path in your MCP config points to the actual server location and the script is executable.

Tool Reference

Project Discovery Tools

Tool

Description

Parameters

search_projects

Primary - Fast search by name (use this first)

search, membership, limit

list_my_projects

List all projects (slower, use for browsing)

owned, limit

Merge Request Tools

All project-scoped tools accept an optional project_id parameter. If not provided, falls back to GITLAB_PROJECT_ID env var.

Tool

Description

Parameters

list_merge_requests

List merge requests

project_id, state, target_branch, limit

get_merge_request_details

Get MR details

project_id, merge_request_iid

create_merge_request

Create a new merge request

project_id, source_branch, target_branch, title...

update_merge_request

Update an existing merge request

project_id, merge_request_iid, title, assignees...

merge_merge_request

Merge an MR

project_id, merge_request_iid, squash, sha...

approve_merge_request

Approve an MR

project_id, merge_request_iid, sha

unapprove_merge_request

Revoke approval from an MR

project_id, merge_request_iid

get_pipeline_test_summary

Get test summary (fast overview)

project_id, merge_request_iid

get_merge_request_test_report

Get detailed test failure reports

project_id, merge_request_iid

get_merge_request_pipeline

Get pipeline with all jobs

project_id, merge_request_iid

get_job_log

Get trace/output for specific job

project_id, job_id

get_merge_request_reviews

Get reviews/discussions

project_id, merge_request_iid

get_commit_discussions

Get discussions on commits

project_id, merge_request_iid

get_branch_merge_requests

Find MRs for branch

project_id, branch_name

reply_to_review_comment

Reply to existing discussion

project_id, merge_request_iid, discussion_id, body

create_review_comment

Create new discussion thread

project_id, merge_request_iid, body

resolve_review_discussion

Resolve/unresolve discussion

project_id, merge_request_iid, discussion_id

list_project_members

List project members

project_id

list_project_labels

List project labels

project_id

Roadmap

Recently Added

  • v1.4.0: Project discovery tools, MCP best practices (tool titles, annotations), improved prompts

  • v1.3.1: Fixed multi-workspace environment variable conflict in Cursor

  • v1.3.0: SOCKS5 proxy support for routing GitLab API requests

  • v1.2.0: Merge, approve, and unapprove MR tools - complete MR lifecycle

  • v1.1.0: Create and update MR tools, cleaner output formatting

Coming Next

  • Issue Management - List, create, update issues and add comments

  • Inline Comments - Add code review comments on specific lines

Considering

  • Lightweight file list for MRs (changed files without full diff)

  • Rebase MR via API

Out of Scope

Branch operations, file content fetching, and full diffs are intentionally not included - use git locally for these tasks, it's faster and more capable.

Have a feature request? Open an issue!

Development

Project Structure

gitlab_mr_mcp/
├── __init__.py          # Package version
├── __main__.py          # Entry point for python -m
├── server.py            # MCP server implementation
├── config.py            # Configuration management
├── gitlab_api.py        # GitLab API client
├── utils.py             # Utility functions
├── logging_config.py    # Logging configuration
└── tools/               # Tool implementations
    ├── __init__.py
    ├── list_merge_requests.py
    ├── get_merge_request_details.py
    ├── create_merge_request.py
    ├── update_merge_request.py
    └── ... (more tools)

Adding Tools

  1. Create new file in gitlab_mr_mcp/tools/ directory

  2. Add import and export to gitlab_mr_mcp/tools/__init__.py

  3. Add to list_tools() in gitlab_mr_mcp/server.py

  4. Add handler to call_tool() in gitlab_mr_mcp/server.py

Adding Prompts

Prompts provide workflow guidance to AI assistants. Add new prompts in gitlab_mr_mcp/prompts.py:

  1. Define the prompt content as a string constant

  2. Add entry to the PROMPTS dictionary with title, description, and content

NEW_PROMPT = """
Your prompt content here - focus on decision trees and when to use which tool.
"""

PROMPTS = {
    # ... existing prompts ...
    "new-prompt": {
        "title": "Human Readable Title",
        "description": "Short description for prompt list",
        "content": NEW_PROMPT,
    },
}

Development Setup

  1. Install development dependencies:

make install
# or: uv pip install -e ".[dev]"
  1. Available make commands:

make install   # Install in editable mode with dev deps
make dev       # Build and install wheel locally
make test      # Run tests
make lint      # Run linters
make format    # Format code
make check     # Lint + test
make clean     # Remove build artifacts
  1. Set up pre-commit hooks:

pre-commit install

This will automatically check and format your code for:

  • Trailing whitespace - auto-removed

  • 📄 End-of-file issues - auto-fixed

  • 🎨 Code formatting (black) - auto-formatted

  • 📦 Import sorting (isort) - auto-organized

  • 🐍 Python style (flake8) - linted with bugbear & print detection

  • 🔒 Security issues (bandit) - security checks

  • 📋 YAML/JSON formatting - validated

  1. Format all existing code (first time only):

make format
# or: black --line-length=120 . && isort --profile black --line-length=120 .
  1. Run pre-commit manually on all files:

pre-commit run --all-files

Running Tests

make test
# or: uv run pytest tests/ -v

Security Notes

  • Never commit access tokens to version control

  • Use project-specific tokens with minimal permissions (read_api scope)

  • Rotate tokens regularly

  • Store tokens in your MCP config (which should not be committed)

Support

License

MIT License - see LICENSE file for details.

Available Tools

12 tools
create_review_commentC

Create a new discussion thread in a merge request review

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request
bodyYesContent of the new discussion comment

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether this requires specific permissions, if it's idempotent, what happens on failure, or any rate limits, which is inadequate for a mutation tool.

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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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 mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on permissions, error handling, return values, and differentiation from siblings, leaving significant gaps in understanding how to use it effectively.

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 fully documents both parameters. The description adds no additional meaning beyond implying the 'body' is for discussion content, which is already clear from the schema. This meets the baseline for high coverage.

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 action ('Create a new discussion thread') and resource ('in a merge request review'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'reply_to_review_comment' or 'resolve_review_discussion', which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'reply_to_review_comment' for responding to existing discussions or 'get_merge_request_reviews' for viewing reviews, leaving the agent without context for selection.

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

get_branch_merge_requestsB

Get all merge requests for a specific branch

ParametersJSON Schema
NameRequiredDescriptionDefault
branch_nameYesName of the branch

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get all merge requests' implies a read-only operation, it doesn't specify whether this requires authentication, what format the results are in (e.g., list, paginated), or any rate limits or constraints. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse quickly. Every word earns its place, with no redundancy or fluff.

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 the tool's simplicity (one parameter, no annotations, no output schema), the description is minimally adequate. It states what the tool does but lacks context on usage, behavior, or output format. For a read operation with no output schema, more detail on return values would be helpful, but the description doesn't provide it, leaving 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 100%, with the single parameter 'branch_name' clearly documented in the schema as 'Name of the branch'. The description adds no additional semantic context beyond what the schema provides, such as examples or constraints on branch naming. This meets the baseline for high schema coverage but doesn't enhance parameter understanding.

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 action ('Get all merge requests') and the target resource ('for a specific branch'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_merge_requests' or 'get_merge_request_details', which could cause confusion about when to use this specific tool versus alternatives.

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?

The description provides no guidance on when to use this tool versus alternatives like 'list_merge_requests' or 'get_merge_request_details'. It states what the tool does but offers no context about appropriate use cases, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.

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

get_commit_discussionsC

Get discussions and comments on commits within a specific merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states a read operation ('Get') but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves.

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 without unnecessary details. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured.

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 no annotations, no output schema, and a read operation with one parameter, the description is incomplete. It lacks details on return values, error handling, or operational constraints, which are crucial for an agent to use the tool effectively in context.

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%, with the parameter 'merge_request_iid' fully documented in the schema. The description adds no additional meaning beyond implying the parameter's role in scoping discussions, matching the baseline for high schema coverage.

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 verb 'Get' and the resource 'discussions and comments on commits', specifying the scope 'within a specific merge request'. It distinguishes from siblings like 'get_merge_request_details' or 'get_merge_request_reviews' by focusing on commit-level discussions, but doesn't explicitly differentiate them.

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 like 'get_merge_request_reviews' or 'create_review_comment'. The description implies usage for commit discussions within merge requests, but lacks context on prerequisites, exclusions, or comparative use cases.

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

get_job_logA

Get the trace/log output for a specific pipeline job. Perfect for debugging failed tests and understanding CI/CD failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesID of the pipeline job (obtained from get_merge_request_pipeline)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool's purpose (retrieving logs for debugging) which implies it's a read-only operation, but doesn't explicitly state whether it requires authentication, has rate limits, or what format the output takes. The description adds some context but leaves important behavioral aspects unspecified.

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 perfectly concise with just two sentences that each earn their place. The first sentence states the core functionality, and the second provides valuable context about when to use it. There's no wasted language or unnecessary elaboration.

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?

For a single-parameter read operation with no output schema, the description provides adequate but minimal context. It explains what the tool does and when to use it, but doesn't address potential limitations, error conditions, or output format details that would be helpful for an agent to properly invoke and interpret results from this 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?

The schema description coverage is 100%, with the single parameter 'job_id' well-documented in the schema itself. The description doesn't add any additional parameter information beyond what's already in the schema, so it meets the baseline expectation but doesn't provide extra value regarding parameter usage or constraints.

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 specific action ('Get the trace/log output') and resource ('for a specific pipeline job'), distinguishing it from siblings like get_merge_request_test_report or get_pipeline_test_summary. It provides a concrete use case ('debugging failed tests and understanding CI/CD failures') that makes the purpose immediately understandable.

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 clear context about when to use this tool ('Perfect for debugging failed tests and understanding CI/CD failures'), which helps the agent understand the appropriate scenarios. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools, which would be needed for a perfect score.

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

get_merge_request_detailsC

Get detailed information about a specific merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, returns paginated data, or what format the output takes. For a tool with zero annotation coverage, this is a significant gap in transparency.

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 directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('Get detailed information'), making it easy to parse. Every part of the sentence earns its place by conveying essential information.

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 complexity (a read operation with no output schema) and lack of annotations, the description is incomplete. It doesn't explain what 'detailed information' entails, potential errors (e.g., invalid ID), or behavioral traits like authentication needs. For a tool with no structured output or annotations, more context is needed to guide the agent effectively.

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 has 100% description coverage, with the parameter 'merge_request_iid' clearly documented as 'Internal ID of the merge request'. The description adds no additional meaning beyond this, as it doesn't explain the parameter's role or constraints. According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.

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 verb ('Get') and resource ('detailed information about a specific merge request'), making the purpose unambiguous. It distinguishes from siblings like 'list_merge_requests' (which lists multiple) and 'get_merge_request_reviews' (which focuses on reviews). However, it doesn't specify what 'detailed information' includes, leaving some ambiguity compared to a perfect 5.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a merge request ID), exclusions, or comparisons to siblings like 'get_merge_request_reviews' or 'list_merge_requests'. This lack of context leaves the agent to infer usage based on the name alone.

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

get_merge_request_pipelineA

Get the last pipeline data for a specific merge request, including all jobs and their statuses. Returns job IDs that can be used with get_job_log to fetch detailed output.

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool returns pipeline data with job statuses and IDs, which is useful behavioral context. However, it doesn't mention potential limitations like error handling, rate limits, authentication needs, or whether it's a read-only operation, leaving gaps for a tool with no annotation coverage.

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 efficiently structured in two sentences: the first states the purpose and scope, the second explains the utility of returned data. Every sentence adds value without redundancy, making it appropriately sized and front-loaded.

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 annotations and no output schema, the description partially compensates by explaining the return data includes jobs and statuses with IDs usable for get_job_log. However, for a tool that fetches pipeline data, it lacks details on response format, error cases, or data freshness, leaving room for improvement in completeness.

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 fully documents the merge_request_iid parameter. The description doesn't add any parameter-specific details beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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 specific action ('Get the last pipeline data'), target resource ('for a specific merge request'), and scope ('including all jobs and their statuses'). It distinguishes from siblings like get_merge_request_details or get_pipeline_test_summary by focusing on pipeline data rather than general MR info or test summaries.

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 clear context by specifying it retrieves 'the last pipeline data' and mentions job IDs can be used with get_job_log, implicitly suggesting when to use this tool versus get_job_log. However, it doesn't explicitly state when not to use it or compare with alternatives like get_merge_request_test_report or get_pipeline_test_summary.

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

get_merge_request_reviewsC

Get reviews and discussions for a specific merge request

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Get') but does not describe traits like read-only nature, potential rate limits, authentication needs, response format, or pagination. This leaves significant gaps for an agent to understand how the tool behaves beyond its basic function.

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, direct sentence with no wasted words, front-loading the core action and resource. It efficiently communicates the essential purpose without unnecessary elaboration, making it easy for an agent to parse quickly.

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 lack of annotations and output schema, the description is incomplete for a tool that retrieves data. It does not explain what 'reviews and discussions' entail, the return format, or any behavioral constraints. For a read operation with no structured output documentation, more context is needed to guide effective use.

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 has 100% description coverage, with the parameter 'merge_request_iid' clearly documented as the 'Internal ID of the merge request'. The description adds no additional semantic context beyond this, such as examples or usage notes, so it meets the baseline of 3 where the schema does the heavy lifting.

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 verb ('Get') and resource ('reviews and discussions for a specific merge request'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_merge_request_details' or 'get_commit_discussions', which might also retrieve related information, preventing a score of 5.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'get_merge_request_details' for general info or 'get_commit_discussions' for commit-specific discussions. It lacks any context about prerequisites, exclusions, or recommended scenarios, relying solely on the implied need for merge request reviews.

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

get_merge_request_test_reportA

Get structured test report for a merge request with specific test failures, error messages, and stack traces. Shows the same test data visible on the GitLab MR page. Best for debugging test failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool retrieves test data (implying read-only behavior) and specifies the content includes failures, errors, and stack traces. However, it lacks details on permissions, rate limits, or response format, which are important for a tool with no output schema.

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 front-loaded with the core purpose, followed by specific details and usage guidance in just two sentences. Every sentence adds value: the first defines the tool's function and scope, and the second provides clear usage context without 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 the tool has no annotations and no output schema, the description is moderately complete. It covers purpose and usage well but lacks details on behavioral aspects like authentication or response structure, which are important for debugging tools. It compensates somewhat with specific content details but leaves gaps.

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 the single parameter (merge_request_iid) with its type and description. The description does not add any additional meaning or context about the parameter beyond what the schema provides, meeting the baseline for high coverage.

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 specific action ('Get structured test report') and resource ('for a merge request'), distinguishing it from siblings like get_merge_request_details or get_pipeline_test_summary by focusing on test failures, error messages, and stack traces. It explicitly mentions the data is 'the same test data visible on the GitLab MR page,' which adds specificity.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Best for debugging test failures.' This clearly indicates its primary use case and distinguishes it from alternatives like get_pipeline_test_summary (which might show summaries) or get_merge_request_details (which covers general info).

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

get_pipeline_test_summaryA

Get test summary for a merge request - a lightweight overview showing pass/fail counts per test suite. Faster than full test report. Great for quick status checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it's a read operation ('Get'), provides a 'lightweight overview' with 'pass/fail counts per test suite', and is performance-optimized ('Faster than full test report'). It doesn't mention rate limits or authentication needs, but covers core functionality adequately.

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 perfectly concise and front-loaded: three sentences that each earn their place by defining purpose, differentiating from alternatives, and providing usage context with zero wasted words.

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 read tool with one parameter and no output schema, the description is nearly complete: it explains what the tool returns ('pass/fail counts per test suite') and its performance characteristics. It could mention the return format more explicitly, but given the low complexity, it's sufficient.

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 fully documents the single parameter. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high coverage.

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's purpose with specific verbs ('get test summary') and resource ('for a merge request'), distinguishing it from siblings like 'get_merge_request_test_report' by emphasizing it's a 'lightweight overview' and 'faster than full test report'.

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

Usage Guidelines5/5

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

It explicitly provides usage guidance by stating when to use this tool ('Great for quick status checks') and when to use an alternative ('Faster than full test report'), clearly differentiating it from 'get_merge_request_test_report' without needing to name it directly.

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

list_merge_requestsC

List merge requests for the GitLab project

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoFilter by merge request stateopened
target_branchNoFilter by target branch (optional)
limitNoMaximum number of results

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description doesn't mention pagination behavior, rate limits, authentication requirements, or what the return format looks like (e.g., list of MR objects with basic fields). For a listing tool with no annotation coverage, this is a significant gap.

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 gets straight to the point with zero wasted words. It's appropriately sized for a straightforward listing tool and front-loads the essential information.

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 no annotations and no output schema, the description is incomplete for a tool with 3 parameters. It doesn't explain what the tool returns (e.g., array of MR objects with IDs/titles), pagination behavior, or error conditions. For a listing tool that likely returns structured data, more context is needed.

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 three parameters with descriptions, defaults, and constraints. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score of 3.

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 action ('List') and resource ('merge requests for the GitLab project'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get_branch_merge_requests' or 'get_merge_request_details', which also deal with merge requests in different ways.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_branch_merge_requests' (which likely filters by branch) and 'get_merge_request_details' (which likely gets details for a specific MR), there's no indication of when this general listing tool is preferred over those more specific options.

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

reply_to_review_commentC

Reply to a specific discussion thread in a merge request review

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request
discussion_idYesID of the discussion thread to reply to
bodyYesContent of the reply comment

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Reply to' implies a write operation, it doesn't specify permissions required, whether replies are editable/deletable, rate limits, or what happens on success/failure. This leaves significant gaps for a mutation tool.

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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place.

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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't address behavioral aspects like permissions, side effects, or response format, leaving the agent with incomplete understanding of how to properly invoke and interpret results.

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 three parameters thoroughly. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score of 3 for adequate but not enhanced coverage.

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 action ('Reply to') and target ('a specific discussion thread in a merge request review'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'create_review_comment' or 'resolve_review_discussion', which would be needed for a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives like 'create_review_comment' or 'resolve_review_discussion'. It states what the tool does but offers no context about appropriate use cases, prerequisites, or exclusions.

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

resolve_review_discussionB

Resolve or unresolve a discussion thread in a merge request review

ParametersJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request
discussion_idYesID of the discussion thread to resolve/unresolve
resolvedNoWhether to resolve (true) or unresolve (false) the discussion

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose required permissions, whether resolution is reversible, effects on notifications, or error conditions (e.g., invalid IDs). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 ('resolve or unresolve a discussion thread') with essential context ('in a merge request review'). There is zero wasted verbiage, and every word earns its place by specifying the action, target, and scope.

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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on permissions, side effects, error handling, and return values. While concise, it doesn't compensate for the missing structured data, leaving the agent with insufficient context for safe and effective use.

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 parameters are fully documented in the schema. The description adds no additional semantic context beyond implying the tool operates on discussions within merge requests, which is already clear from parameter names and schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.

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 specific action ('resolve or unresolve'), target resource ('discussion thread'), and context ('in a merge request review'). It distinguishes from siblings like 'create_review_comment' (adds new comments) and 'get_merge_request_reviews' (reads reviews) by focusing on resolution state changes.

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 when needing to toggle discussion resolution status, but provides no explicit guidance on when to use this vs. alternatives like 'reply_to_review_comment' for ongoing discussions or prerequisites like required permissions. It mentions the context ('merge request review') but lacks when-not scenarios or clear alternatives.

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.

  1. 12 tool updatesv1.0.0
    • Changedcreate_review_comment1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_branch_merge_requests1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_commit_discussions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_job_log1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_merge_request_details1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_merge_request_pipeline1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_merge_request_reviews1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_merge_request_test_report1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_pipeline_test_summary1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_merge_requests1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreply_to_review_comment1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedresolve_review_discussion1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  2. 12 tool updates
    • First observedcreate_review_comment
    • First observedget_branch_merge_requests
    • First observedget_commit_discussions
    • First observedget_job_log
    • First observedget_merge_request_details
    • First observedget_merge_request_pipeline
    • First observedget_merge_request_reviews
    • First observedget_merge_request_test_report
    • First observedget_pipeline_test_summary
    • First observedlist_merge_requests
    • First observedreply_to_review_comment
    • First observedresolve_review_discussion

TDQS

A3.6/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have distinct purposes, but some overlap exists: get_merge_request_reviews and get_merge_request_details both provide MR information, and get_merge_request_test_report and get_pipeline_test_summary both handle test data, though descriptions clarify their differences (full report vs. summary).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case, such as get_merge_request_details and create_review_comment. This predictability makes it easy for agents to understand and use the toolset.

Tool Count5/5

With 12 tools, the server is well-scoped for GitLab merge request and pipeline management. Each tool serves a specific function, covering review discussions, MR details, pipelines, and test reports without being overwhelming.

Completeness4/5

The toolset covers key aspects of merge requests, reviews, pipelines, and tests, but lacks broader GitLab operations like repository management or issue tracking. Within its focused domain, it provides good lifecycle coverage with minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects AI assistants to GitLab projects, enabling natural language queries for merge requests, code reviews, test reports, pipeline status, and discussions with support for commenting and resolving threads.
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects AI assistants to GitLab, enabling natural language queries for merge requests, reviews, discussions, pipeline tests, and job logs with the ability to respond to comments and resolve discussions.
    -