Skip to main content
Glama

MCP GitLab Server

CI codecov Documentation Status Python Version License MCP

A Model Context Protocol (MCP) server that provides comprehensive GitLab API integration. This server enables LLMs to interact with GitLab repositories, manage merge requests, issues, and perform various Git operations.

Features

Core Features

  • 🔐 Authentication & Users - Get current user info and lookup user profiles

  • 🔍 Project Management - List, search, and get details about GitLab projects

  • 📝 Issues - List, read, search, and comment on issues

  • 🔀 Merge Requests - List, read, update, approve, and merge MRs

  • 📁 Repository Files - Browse, read, and commit changes to files

  • 🌳 Branches & Tags - List and manage branches and tags

  • 🔧 CI/CD Pipelines - View pipeline status, jobs, and artifacts

  • 💬 Discussions - Read and resolve merge request discussions

  • 🎯 Smart Operations - Batch operations, AI summaries, and smart diffs

Advanced Features

  • Batch Operations - Execute multiple GitLab operations atomically with rollback support

  • AI-Optimized Summaries - Generate concise summaries of MRs, issues, and pipelines

  • Smart Diffs - Get structured diffs with configurable context and size limits

  • Safe Preview - Preview file changes before committing

  • Cross-Reference Support - Reference results from previous operations in batch mode

Related MCP server: GitLab MCP Server

Installation

# Run directly without installation
uvx mcp-gitlab

From source

# Clone the repository
git clone https://github.com/Vijay-Duke/mcp-gitlab.git
cd mcp-gitlab

# Install dependencies and run with uv
uv sync
uv run mcp-gitlab

# Or install in development mode with test dependencies
uv sync --all-extras
uv run pytest  # to run tests

Configuration

Environment Variables

Set one of the following authentication tokens:

# Private token (recommended for personal use)
export GITLAB_PRIVATE_TOKEN="your-private-token"

# OAuth token
export GITLAB_OAUTH_TOKEN="your-oauth-token"

# GitLab URL (optional, defaults to https://gitlab.com)
export GITLAB_URL="https://gitlab.example.com"

Getting a GitLab Token

  1. Go to your GitLab profile settings

  2. Navigate to "Access Tokens"

  3. Create a new token with the following scopes:

    • api - Full API access

    • read_repository - Read repository content

    • write_repository - Write repository content (for commits)

Usage

With Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcp-gitlab": {
    "command": "uvx",
    "args": ["mcp-gitlab"],
    "env": {
      "GITLAB_PRIVATE_TOKEN": "your-token-here"
    }
  }
}

Using uv (if you've cloned the repository):

{
  "mcp-gitlab": {
    "command": "uv",
    "args": ["run", "mcp-gitlab"],
    "cwd": "/path/to/mcp-gitlab",
    "env": {
      "GITLAB_PRIVATE_TOKEN": "your-token-here"
    }
  }
}

Replace /path/to/mcp-gitlab with the full path to where you cloned the repository.

Running with uvx

The easiest way to run the MCP GitLab server is using uvx:

# Set your GitLab token
export GITLAB_PRIVATE_TOKEN="your-token-here"

# Run the server directly with uvx
uvx mcp-gitlab

Standalone Usage

# If running from source (after uv sync)
uv run mcp-gitlab

# Or run the Python module directly
uv run python -m mcp_gitlab

Available Tools

Authentication & User Info

gitlab_get_current_user

Get the currently authenticated user's profile information.

{}

Returns comprehensive information including:

  • Basic info: ID, username, name, email

  • Profile details: bio, organization, job title

  • Account status: state, creation date, admin status

  • Permissions: can_create_group, can_create_project

  • Security: two_factor_enabled, external status

gitlab_get_user

Get details for a specific user by ID or username.

{
  "user_id": 12345
}

or

{
  "username": "johndoe"
}

Returns user information including:

  • Basic info: ID, username, name

  • Profile: avatar_url, web_url, bio

  • Organization details: company, job title

  • Account status and creation date

Project Management

gitlab_list_projects

List accessible GitLab projects with pagination and search.

{
  "owned": false,
  "search": "my-project",
  "per_page": 20,
  "page": 1
}

gitlab_get_project

Get detailed information about a specific project.

{
  "project_id": "group/project"
}

gitlab_get_current_project

Get the GitLab project information from the current git repository.

{
  "path": "."
}

Issues

gitlab_list_issues

List project issues with state filtering.

{
  "project_id": "group/project",
  "state": "opened",
  "per_page": 20
}

gitlab_get_issue

Get a single issue with full details.

{
  "project_id": "group/project",
  "issue_iid": 123
}

gitlab_add_issue_comment

Add a comment to an issue.

{
  "project_id": "group/project",
  "issue_iid": 123,
  "body": "Thanks for reporting this!"
}

Merge Requests

gitlab_list_merge_requests

List merge requests with filtering options.

{
  "project_id": "group/project",
  "state": "opened"
}

gitlab_get_merge_request

Get detailed merge request information.

{
  "project_id": "group/project",
  "mr_iid": 456
}

gitlab_update_merge_request

Update merge request fields.

{
  "project_id": "group/project",
  "mr_iid": 456,
  "title": "Updated title",
  "description": "New description",
  "labels": "bug,priority"
}

gitlab_merge_merge_request

Merge a merge request with options.

{
  "project_id": "group/project",
  "mr_iid": 456,
  "squash": true,
  "should_remove_source_branch": true
}

gitlab_approve_merge_request

Approve a merge request.

{
  "project_id": "group/project",
  "mr_iid": 456
}

Repository Operations

gitlab_get_file_content

Read file content from the repository.

{
  "project_id": "group/project",
  "file_path": "src/main.py",
  "ref": "main"
}

gitlab_create_commit

Create a commit with multiple file changes.

{
  "project_id": "group/project",
  "branch": "feature-branch",
  "commit_message": "Add new features",
  "actions": [
    {
      "action": "create",
      "file_path": "new_file.py",
      "content": "print('Hello')"
    },
    {
      "action": "update",
      "file_path": "existing.py",
      "content": "# Updated content"
    }
  ]
}

gitlab_compare_refs

Compare two branches, tags, or commits.

{
  "project_id": "group/project",
  "from_ref": "main",
  "to_ref": "feature-branch"
}

CI/CD Jobs and Artifacts

gitlab_list_pipeline_jobs

List jobs in a specific CI/CD pipeline.

{
  "project_id": "group/project",
  "pipeline_id": 789,
  "per_page": 20,
  "page": 1
}

gitlab_list_project_jobs

List jobs for a project with optional scope filtering.

{
  "project_id": "group/project",
  "scope": "failed",
  "per_page": 25
}

gitlab_download_job_artifact

Get information about job artifacts (security note: content not downloaded).

{
  "project_id": "group/project",
  "job_id": 456,
  "artifact_path": "build.zip"
}

Advanced Tools

gitlab_batch_operations

Execute multiple operations atomically with rollback support.

{
  "project_id": "group/project",
  "operations": [
    {
      "name": "get_issue",
      "tool": "gitlab_get_issue",
      "arguments": {"issue_iid": 123}
    },
    {
      "name": "create_mr",
      "tool": "gitlab_create_merge_request",
      "arguments": {
        "source_branch": "fix-{{get_issue.iid}}",
        "target_branch": "main",
        "title": "Fix: {{get_issue.title}}"
      }
    }
  ]
}

gitlab_summarize_merge_request

Generate an AI-friendly summary of a merge request.

{
  "project_id": "group/project",
  "mr_iid": 456,
  "max_length": 500
}

gitlab_smart_diff

Get a structured diff with context and size limits.

{
  "project_id": "group/project",
  "from_ref": "main",
  "to_ref": "feature",
  "context_lines": 3,
  "max_file_size": 50000
}

User & Profile Management

gitlab_search_user

Search for GitLab users by name, username, or email.

{
  "search": "John",
  "per_page": 10
}

gitlab_get_user_details

Get comprehensive user profile and metadata.

{
  "username": "johndoe"
}

gitlab_get_my_profile

Get the current authenticated user's complete profile.

{}

gitlab_get_user_contributions_summary

Summarize user's recent contributions across issues, MRs, and commits.

{
  "username": "johndoe",
  "since": "2024-01-01",
  "until": "2024-01-31"
}

gitlab_get_user_activity_feed

Retrieve user's complete activity/events timeline.

{
  "username": "johndoe", 
  "target_type": "Issue",
  "after": "2024-01-01"
}

User's Issues & Merge Requests

gitlab_get_user_open_mrs

Get all open merge requests authored by a user.

{
  "username": "johndoe",
  "sort": "updated"
}

gitlab_get_user_review_requests

Get MRs where user is assigned as reviewer with pending action.

{
  "username": "johndoe",
  "priority": "high",
  "sort": "urgency"
}

gitlab_get_user_open_issues

Get open issues assigned to a user, prioritized by severity/SLA.

{
  "username": "johndoe",
  "sla_status": "overdue",
  "sort": "priority"
}

gitlab_get_user_reported_issues

Get issues reported/created by a user.

{
  "username": "johndoe",
  "state": "opened",
  "since": "2024-01-01"
}

gitlab_get_user_resolved_issues

Get issues closed/resolved by a user.

{
  "username": "johndoe",
  "since": "2024-01-01",
  "until": "2024-03-31"
}

User's Code & Commits

gitlab_get_user_commits

Get commits authored by a user within date range or branch.

{
  "username": "johndoe", 
  "branch": "main",
  "since": "2024-01-01",
  "include_stats": true
}

Complete Tool List

  • Projects: gitlab_list_projects, gitlab_get_project, gitlab_get_current_project, gitlab_search_projects

  • Issues: gitlab_list_issues, gitlab_get_issue, gitlab_add_issue_comment, gitlab_summarize_issue

  • Merge Requests: gitlab_list_merge_requests, gitlab_get_merge_request, gitlab_update_merge_request, gitlab_close_merge_request, gitlab_merge_merge_request, gitlab_add_merge_request_comment, gitlab_get_merge_request_notes, gitlab_approve_merge_request, gitlab_get_merge_request_approvals, gitlab_get_merge_request_discussions, gitlab_resolve_discussion, gitlab_get_merge_request_changes, gitlab_rebase_merge_request

  • Repository: gitlab_get_file_content, gitlab_list_repository_tree, gitlab_list_commits, gitlab_get_commit, gitlab_get_commit_diff, gitlab_create_commit, gitlab_cherry_pick_commit, gitlab_compare_refs, gitlab_list_tags

  • Branches: gitlab_list_branches

  • Pipelines & Jobs: gitlab_list_pipelines, gitlab_list_pipeline_jobs, gitlab_list_project_jobs, gitlab_download_job_artifact, gitlab_summarize_pipeline

  • Search: gitlab_search_projects, gitlab_search_in_project

  • Users: gitlab_get_current_user, gitlab_get_user, gitlab_list_user_events, gitlab_list_project_members

  • User & Profile: gitlab_search_user, gitlab_get_user_details, gitlab_get_my_profile, gitlab_get_user_contributions_summary, gitlab_get_user_activity_feed

  • User's Issues & MRs: gitlab_get_user_open_mrs, gitlab_get_user_review_requests, gitlab_get_user_open_issues, gitlab_get_user_reported_issues, gitlab_get_user_resolved_issues

  • User's Code & Commits: gitlab_get_user_commits

  • Releases: gitlab_list_releases

  • Webhooks: gitlab_list_project_hooks

  • AI Tools: gitlab_summarize_merge_request, gitlab_summarize_issue, gitlab_summarize_pipeline

  • Advanced: gitlab_batch_operations, gitlab_smart_diff, gitlab_safe_preview_commit

Examples

Auto-detect and List Issues

# First get current project from git repo
project = await session.call_tool("gitlab_get_current_project")

# Then list open issues
issues = await session.call_tool("gitlab_list_issues", {
    "state": "opened"
})

Create a Fix with Batch Operations

# Atomically: get issue → create branch → commit fix → create MR
result = await session.call_tool("gitlab_batch_operations", {
    "operations": [
        {
            "name": "issue",
            "tool": "gitlab_get_issue", 
            "arguments": {"issue_iid": 123}
        },
        {
            "name": "fix",
            "tool": "gitlab_create_commit",
            "arguments": {
                "branch": "fix-issue-{{issue.iid}}",
                "commit_message": "Fix: {{issue.title}}",
                "actions": [{
                    "action": "update",
                    "file_path": "src/bug.py",
                    "content": "# Fixed code here"
                }]
            }
        },
        {
            "name": "mr",
            "tool": "gitlab_create_merge_request",
            "arguments": {
                "source_branch": "fix-issue-{{issue.iid}}",
                "target_branch": "main",
                "title": "Fix: {{issue.title}}",
                "description": "Fixes #{{issue.iid}}"
            }
        }
    ]
})

Development

Quick Start

# Install development dependencies
make install-dev

# Run all checks locally
make ci-local

# Format code
make format

# Run tests with coverage
make test-cov

CI/CD Pipeline

This project uses GitHub Actions for continuous integration and deployment:

  • CI Pipeline: Runs on every push and PR

    • Linting (Ruff, Black, isort, MyPy)

    • Testing (pytest with coverage)

    • Security scanning (Bandit, Safety, pip-audit)

    • Multi-version Python testing (3.10, 3.11, 3.12)

  • Code Quality:

    • SonarCloud analysis

    • CodeQL security analysis

    • Complexity metrics (Radon, Xenon)

  • Release Pipeline: Automated releases on version tags

    • PyPI package publishing

    • Docker image building and publishing

    • GitHub release creation

Running Tests

# Run all tests
uv run pytest tests/ -v

# Run with coverage
uv run pytest tests/ --cov=mcp_gitlab

# Run specific test file
uv run pytest tests/test_gitlab_client.py -v

Code Style

The project uses:

  • Black for code formatting

  • isort for import sorting

  • flake8 for linting

  • mypy for type checking

# Format code
black src/ tests/
isort src/ tests/

# Run linters
flake8 src/ tests/
mypy src/

Troubleshooting

Authentication Issues

  • Ensure your token has the required scopes (api, read_repository, write_repository)

  • Check token expiration date

  • Verify GitLab URL if using self-hosted instance

Rate Limiting

GitLab API has rate limits. The server handles rate limit errors gracefully and returns appropriate error messages.

Large Responses

Responses are automatically truncated if they exceed size limits. Use pagination parameters to retrieve data in chunks.

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Acknowledgments

Available Tools

72 tools
gitlab_add_issue_commentA

Add comment to issue Returns: Created comment object Use when: Providing feedback, updates Supports: Markdown, mentions, references

Example: "Fixed in PR !456. Please test and confirm."

Related tools:

  • gitlab_get_issue: Read issue first

  • gitlab_list_issues: Find issues

Inputs: issue_iid (required), body (required), project_id.

gitlab_add_merge_request_commentA

Add comment to merge request Returns: Created comment object Use when: Code review feedback, discussions Supports: Markdown, mentions, slash commands

Example: "LGTM! 👍 Just one minor suggestion..."

Related tools:

  • gitlab_get_merge_request_notes: Read existing

  • gitlab_get_merge_request_discussions: Threaded view

Inputs: mr_iid (required), body (required), project_id.

gitlab_approve_merge_requestA

Approve a merge request Returns: Approval status Use when: Code review complete, changes approved Note: Cannot approve your own MRs

Related tools:

  • gitlab_get_merge_request_approvals: Check status

  • gitlab_merge_merge_request: Merge after approval

Inputs: mr_iid (required), project_id.

gitlab_batch_operationsA

Execute multiple operations atomically Returns: Results of all operations or rollback Use when: Complex multi-step workflows Feature: Reference previous operation results

Key benefits:

  • All-or-nothing execution

  • Operation chaining

  • Automatic rollback

  • Result references: {{op1.field}}

Example workflow:

  1. Create branch

  2. Add files

  3. Create MR All succeed or all rolled back

Related tools:

  • Individual operation tools

  • gitlab_safe_preview_commit: Test first

Inputs: operations (required), project_id, stop_on_error.

gitlab_cherry_pick_commitA

Apply commit to another branch Returns: New commit on target branch Use when: Backporting fixes, selective changes Creates: New commit with same changes

Example: Backport bug fix to stable

  • commit: "abc123" (fix from main)

  • branch: "stable-1.0" (apply here)

Related tools:

  • gitlab_get_commit: Find commit to pick

  • gitlab_create_merge_request: MR for picked commit

Inputs: commit_sha (required), branch (required), project_id.

gitlab_close_merge_requestA

Close merge request without merging Returns: Updated MR with closed state Use when: Abandoning changes, deferring work Note: Can be reopened later

Related tools:

  • gitlab_update_merge_request: Reopen or other updates

  • gitlab_merge_merge_request: Merge instead

Inputs: mr_iid (required), project_id.

gitlab_compare_refsA

Compare two git references Returns: Commits and diffs between refs Use when: Reviewing changes before merge Shows: What changed between two points

Example: Compare feature branch to main

  • from: "main"

  • to: "feature/new-feature" Shows all changes in feature branch

Related tools:

  • gitlab_create_merge_request: Create MR from comparison

  • gitlab_smart_diff: Advanced diff options

Inputs: from_ref (required), to_ref (required), project_id, straight.

gitlab_create_commitA

Create commit with file changes Returns: New commit details Use when: Making changes via API Supports: Multiple file operations in one commit

Key features:

  • Atomic: All changes or none

  • Multiple files: Up to 100 operations

  • All operations: create, update, delete, move

Example: Add feature with test { "branch": "feature/new-feature", "commit_message": "Add new feature with tests", "actions": [ {"action": "create", "file_path": "src/feature.py", "content": "..."}, {"action": "create", "file_path": "tests/test_feature.py", "content": "..."} ] }

Related tools:

  • gitlab_safe_preview_commit: Preview first

  • gitlab_list_repository_tree: Check existing files

Inputs: branch (required), commit_message (required), actions (required), project_id, +2 more.

gitlab_create_snippetA

Create a new code snippet Creates: New snippet with specified content and metadata Use when: Saving reusable code, sharing solutions, documenting examples Required: title, file_name, content Optional: description, visibility

Example usage: { "title": "Docker Compose Template", "file_name": "docker-compose.yml", "content": "version: '3.8'\nservices:\n app:\n image: nginx", "description": "Basic Docker Compose setup", "visibility": "internal" }

Returns: Created snippet with ID and URLs

Related tools:

  • gitlab_update_snippet: Modify after creation

  • gitlab_list_snippets: View created snippets

Inputs: title (required), file_name (required), content (required), project_id, +2 more.

gitlab_download_job_artifactA

Get information about job artifacts Returns: Artifact metadata and download information Use when: Checking build outputs, downloading test results, accessing reports Security: Returns artifact info only (no actual file download for security) Content: Lists available artifacts with sizes and expiration

Example response: { "job_id": 12345, "job_name": "build:production", "artifacts": [ {"filename": "dist.zip", "size": 1024000}, {"filename": "reports/junit.xml", "size": 5120} ], "artifacts_expire_at": "2023-02-01T00:00:00Z", "download_note": "Use GitLab web interface or CLI for actual downloads" }

Related tools:

  • gitlab_list_pipeline_jobs: Find job IDs with artifacts

  • gitlab_list_project_jobs: Browse all project jobs

Inputs: job_id (required), project_id, artifact_path.

gitlab_get_commitA

Get single commit details Returns: Complete commit information with stats Use when: Examining specific commit Required: Commit SHA (short or full)

Example response: { "id": "e83c5163316f89bfbde7d9ab23ca2e25604af290", "title": "Fix critical bug", "message": "Fix critical bug\n\nDetailed explanation...", "author": {"name": "John Doe", "email": "john@example.com"}, "parent_ids": ["ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"], "stats": { "additions": 15, "deletions": 3, "total": 18 } }

Related tools:

  • gitlab_get_commit_diff: View changes

  • gitlab_cherry_pick_commit: Apply to another branch

  • gitlab_list_commits: Browse history

Inputs: commit_sha (required), project_id, include_stats.

gitlab_get_commit_diffA

Get commit diff/changes Returns: Detailed diff of all changed files Use when: Code review, understanding changes Shows: Added/removed lines, file modifications

Example response: [{ "old_path": "src/main.py", "new_path": "src/main.py", "diff": "@@ -10,3 +10,5 @@\n def main():\n- print('Hello')\n+ print('Hello, World!')\n+ return 0", "new_file": false, "deleted_file": false }]

Related tools:

  • gitlab_get_commit: Commit metadata

  • gitlab_compare_refs: Compare branches

  • gitlab_smart_diff: Advanced diff options

Inputs: commit_sha (required), project_id.

gitlab_get_current_projectA

Auto-detect project from git repository Returns: Same as gitlab_get_project Use when: Working in a git repo with GitLab remote No parameters needed: Examines git remotes

How it works:

  1. Checks git remotes in current/specified directory

  2. Identifies GitLab URLs

  3. Fetches project details from API

Related tools:

  • gitlab_get_project: When you know the project ID

  • gitlab_list_projects: Browse available projects

Inputs: path.

gitlab_get_current_userA

Get the currently authenticated user's profile Returns comprehensive information about the authenticated user including:

  • Basic info: ID, username, name, email

  • Profile details: bio, organization, job title

  • Account status: state, creation date, admin status

  • Permissions: can_create_group, can_create_project

  • Security: two_factor_enabled, external status

Use cases:

  • Verify authentication is working

  • Get user context for automation scripts

  • Check user permissions and capabilities

  • Display user info in applications

Example response: {'id': 123, 'username': 'johndoe', 'name': 'John Doe', ...}

Inputs: no named parameters.

gitlab_get_file_contentA

Get file content from repository Returns: Raw file content as string Use when: Reading source code, configs, documentation Optional: Specify branch/tag/commit (defaults to default branch)

Example:

  • File: 'src/main.py' → Returns Python code

  • File: 'package.json' → Returns JSON content

  • File: 'README.md' → Returns Markdown

Related tools:

  • gitlab_list_repository_tree: Browse files

  • gitlab_create_commit: Modify files

  • gitlab_get_commit_diff: See file changes

Inputs: file_path (required), project_id, ref.

gitlab_get_groupA

Get detailed group information Returns: Complete group metadata, settings, statistics Use when: Need full group details, checking configuration, counting projects Optional: Include first page of projects with with_projects=true

Example response: { "id": 123, "name": "My Group", "full_path": "parent-group/my-group", "description": "Group for team projects", "visibility": "private", "projects_count": 15, "created_at": "2023-01-01T00:00:00Z", "web_url": "https://gitlab.com/groups/my-group" }

Related tools:

  • gitlab_list_groups: Browse available groups

  • gitlab_list_group_projects: List all projects in group

Inputs: group_id (required), with_projects.

gitlab_get_issueA

Get complete issue details Returns: Full issue data including description, comments count Use when: Need complete issue information Required: Issue IID (e.g., 123 for issue #123)

What's IID?: Internal ID - the issue number shown in GitLab Example: For issue #123, use iid=123

Returns: { "iid": 123, "title": "Fix login bug", "description": "Detailed bug description...", "state": "opened", "labels": ["bug"], "milestone": {"title": "v2.0"}, "time_stats": { "time_estimate": 7200, "total_time_spent": 3600 } }

Related tools:

  • gitlab_list_issues: Find issues

  • gitlab_add_issue_comment: Add comment

  • gitlab_update_issue: Modify issue

Inputs: issue_iid (required), project_id.

gitlab_get_merge_requestA

Get complete merge request details Returns: Full MR data with pipelines, approvals, conflicts Use when: Reviewing MR, checking merge status Required: MR IID (e.g., 456 for MR !456)

What's IID?: Internal ID - the MR number shown in GitLab Example: For MR !456, use iid=456

Returns: { "iid": 456, "title": "Add new feature", "state": "opened", "merge_status": "can_be_merged", "pipeline": {"status": "success"}, "approvals_required": 2, "approvals_left": 1, "changes_count": "15", "has_conflicts": false, "diff_stats": { "additions": 150, "deletions": 30 } }

Related tools:

  • gitlab_get_merge_request_changes: See actual diffs

  • gitlab_get_merge_request_discussions: Read reviews

  • gitlab_approve_merge_request: Approve MR

  • gitlab_merge_merge_request: Merge MR

Inputs: mr_iid (required), project_id.

gitlab_get_merge_request_approvalsA

Check MR approval status Returns: Approval requirements and current state Use when: Checking if MR can be merged Shows: Required approvals, who approved

Example response: { "approvals_required": 2, "approvals_left": 1, "approved_by": [ {"user": {"username": "johndoe"}} ], "approval_rules": [...] }

Related tools:

  • gitlab_approve_merge_request: Add approval

  • gitlab_merge_merge_request: Merge when ready

Inputs: mr_iid (required), project_id.

gitlab_get_merge_request_changesA

Get detailed MR file changes Returns: Complete diffs for all files Use when: Reviewing code changes Shows: Full file diffs with context

Similar to commit diff but for entire MR Includes all commits in the MR

Related tools:

  • gitlab_get_merge_request: MR overview

  • gitlab_smart_diff: Customizable diffs

Inputs: mr_iid (required), project_id.

gitlab_get_merge_request_discussionsA

Get MR discussion threads Returns: Threaded discussions with replies Use when: Reading code review comments Better than notes: Shows thread structure

Example response: [{ "id": "abc123...", "notes": [{ "body": "Should we use a different approach here?", "author": {"username": "reviewer"}, "resolvable": true, "resolved": false }, { "body": "Good point, let me refactor this.", "author": {"username": "author"} }] }]

Related tools:

  • gitlab_resolve_discussion: Mark resolved

  • gitlab_add_merge_request_comment: Reply

Inputs: mr_iid (required), project_id, per_page, page.

gitlab_get_merge_request_notesA

List merge request comments Returns: Array of notes/comments with content Use when: Reading MR discussions, reviews Pagination: Yes (default 10 per page) Sorting: By created_at or updated_at

Example response: [{ "id": 789, "body": "Great work! Just one suggestion...", "author": {"username": "reviewer"}, "created_at": "2024-01-15T10:30:00Z", "type": "DiffNote", "resolvable": true, "resolved": false }]

Related tools:

  • gitlab_get_merge_request_discussions: Threaded discussions

  • gitlab_add_merge_request_comment: Add comment

  • gitlab_resolve_discussion: Resolve threads

Inputs: mr_iid (required), project_id, per_page, page, +3 more.

gitlab_get_my_profileA

Get the current authenticated user's complete profile

Retrieve your own comprehensive profile information including private settings and detailed statistics not available via public user APIs.

Returns complete profile including:

  • Personal info: email, name, bio, location

  • Account settings: notifications, preferences

  • Statistics: private/public project counts

  • Security: 2FA status, SSH keys count

  • Activity: recent contributions, sign-in history

Use cases:

  • Display user dashboard information

  • Verify account settings and security

  • Show personalized statistics

  • Export profile data

No parameters required - uses authentication token.

Example usage:

{}

Inputs: no named parameters.

gitlab_get_projectA

Get detailed project information Returns: Complete project metadata, settings, statistics Use when: Need full project details, checking configuration Required: Project ID or path

Example response: { "id": 12345, "name": "my-project", "path_with_namespace": "group/my-project", "default_branch": "main", "visibility": "private", "issues_enabled": true, "merge_requests_enabled": true, "wiki_enabled": true, "statistics": { "commit_count": 1024, "repository_size": 15728640 } }

Related tools:

  • gitlab_list_projects: Find projects

  • gitlab_get_current_project: Auto-detect from git

Inputs: project_id (required).

gitlab_get_snippetA

Get snippet details and content Returns: Complete snippet information with content Use when: Reading snippet code, reviewing implementations Content: Full text content included

Example response: { "id": 123, "title": "API Helper Functions", "file_name": "api_helpers.js", "content": "function fetchData(url) { ... }", "description": "Common API utility functions", "visibility": "internal", "author": {"name": "Jane Smith"}, "created_at": "2023-01-01T00:00:00Z", "web_url": "https://gitlab.com/group/project/snippets/123" }

Related tools:

  • gitlab_list_snippets: Browse available snippets

  • gitlab_update_snippet: Modify snippet

Inputs: snippet_id (required), project_id.

gitlab_get_userA

Get basic profile information for a specific GitLab user by ID or username.

Returns essential user details like name, username, avatar, and public profile info. Use this tool when you have a specific user ID or exact username and need basic profile information.

Parameters:

  • user_id: Numeric user ID (e.g., 12345)

  • username: Username string (e.g., 'johndoe')

Use either user_id OR username, not both.

Examples:

  • Get user profile for @mentions: get_user(username="johndoe")

  • Look up user from commit author: get_user(user_id=12345)

  • Display user info in applications

For searching users with partial information, use 'gitlab_search_user' instead. For comprehensive user activity and contributions, use user activity tools instead.

Inputs: user_id, username.

gitlab_get_user_activity_feedA

Retrieve user's complete activity/events timeline

Get chronological feed of all user activities including commits, issues, MRs, comments, and other interactions across all accessible projects.

Returns activity timeline with:

  • Event details: type, target, description

  • Timestamps: creation and update times

  • Project context: where activity occurred

  • Related objects: linked issues, MRs, commits

  • Action metadata: push details, comment excerpts

Use cases:

  • Track user engagement patterns

  • Monitor team member activities

  • Generate activity reports

  • Debug user workflow issues

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • action: Filter by action type (created, updated, closed, merged, etc.)

  • target_type: Filter by target (Issue, MergeRequest, Project, etc.)

  • after: Events after this date (YYYY-MM-DD)

  • before: Events before this date (YYYY-MM-DD)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get recent issue activities

{
  "username": "johndoe", 
  "target_type": "Issue",
  "after": "2024-01-01"
}

Inputs: user_id, username, action, target_type, +4 more.

gitlab_get_user_code_changes_summaryA

Get lines added/removed and files changed by user over period

Generate comprehensive statistics about a user's code contributions including quantitative metrics and impact analysis.

Returns code change summary with:

  • Volume metrics: lines added, removed, net change

  • File statistics: files created, modified, deleted

  • Language breakdown: contributions by file type

  • Project distribution: changes across repositories

  • Trend analysis: velocity over time periods

Use cases:

  • Development productivity analysis

  • Code contribution reporting

  • Team capacity planning

  • Performance review data

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • since: Analysis period start (YYYY-MM-DD)

  • until: Analysis period end (YYYY-MM-DD)

  • include_languages: Break down by programming language

  • include_trends: Include time-series trend data

  • granularity: Data granularity (daily, weekly, monthly)

Example: Get quarterly code change summary

{
  "username": "johndoe",
  "since": "2024-01-01", 
  "until": "2024-03-31",
  "include_languages": true,
  "granularity": "weekly"
}

Inputs: username (required), project_id, since, until, +1 more.

gitlab_get_user_commitsA

List all commits authored by a specific user across projects or within a project.

Shows commits where the user is the author (wrote the code). Use this tool to see what code changes a user has authored.

Examples:

  • Code contribution analysis: get_user_commits(user_id=123)

  • Developer productivity metrics

  • Code review preparation

For merge commits specifically, use 'gitlab_get_user_merge_commits' instead.

Retrieve all commits authored by the specified user with flexible filtering by time period, branch, or project scope.

Returns commit information with:

  • Commit details: SHA, message, timestamp

  • Code changes: files modified, additions, deletions

  • Context: branch, project, merge request associations

  • Author info: email, committer details

  • Statistics: impact, complexity metrics

Use cases:

  • Code contribution tracking

  • Development velocity analysis

  • Code review preparation

  • Performance evaluations

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • branch: Filter by specific branch

  • since: Commits after date (YYYY-MM-DD)

  • until: Commits before date (YYYY-MM-DD)

  • include_stats: Include file change statistics

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get user commits from main branch last month

{
  "username": "johndoe", 
  "branch": "main",
  "since": "2024-01-01",
  "until": "2024-01-31",
  "include_stats": true
}

Inputs: user_id, username, project_id, branch, +5 more.

gitlab_get_user_contributions_summaryA

Summarize user's recent contributions across issues, MRs, and commits

Get a comprehensive overview of a user's activity and contributions over a specified time period, aggregating data from multiple sources.

Returns contribution summary including:

  • Commit statistics: count, additions, deletions

  • Issue activity: created, closed, commented

  • MR activity: created, merged, reviewed

  • Project involvement: active repositories

  • Trend analysis: activity patterns over time

Use cases:

  • Performance reviews and reports

  • Team contribution tracking

  • Identifying active contributors

  • Project health monitoring

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • since: Start date for analysis (YYYY-MM-DD)

  • until: End date for analysis (YYYY-MM-DD)

  • project_id: Optional project scope filter

Example: Get user contributions for last month

{
  "username": "johndoe",
  "since": "2024-01-01",
  "until": "2024-01-31"
}

Inputs: user_id, username, since, until, +1 more.

gitlab_get_user_detailsA

Get comprehensive activity summary and contributions for a specific user.

Returns detailed information about a user's GitLab activity including recent contributions, project involvement, and activity statistics. Use this tool when you need detailed insights into a user's GitLab activity and contributions.

Examples:

  • Performance reviews: get_user_details(user_id=123)

  • Team member activity overview

  • Contributor analysis for projects

For basic user profile info, use 'gitlab_get_user' instead. For finding users by search, use 'gitlab_search_user' instead.

Returns extended user information:

  • Profile: name, bio, location, company

  • Statistics: public projects, contribution stats

  • Activity: last sign-in, creation date

  • Settings: timezone, preferred language

  • Social: website, LinkedIn, Twitter links

Use cases:

  • Review team member profiles

  • Gather user context for collaboration

  • Audit user activity and contributions

  • Display rich user information in tools

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

Example: Get user details by username

{
  "username": "johndoe"
}

Inputs: user_id, username.

gitlab_get_user_discussion_threadsA

Get all discussion threads started by a user

Find all discussion threads initiated by the specified user across issues, merge requests, and other collaborative contexts.

Returns discussion thread information with:

  • Thread details: initial message, topic, context

  • Engagement: replies, participants, resolution

  • Origin: issue/MR association, project context

  • Timeline: creation, activity, resolution dates

  • Impact: influence on decisions and outcomes

Use cases:

  • Leadership and initiative tracking

  • Communication effectiveness analysis

  • Knowledge sharing assessment

  • Team collaboration insights

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • context_type: Filter by context (Issue, MergeRequest, all)

  • status: Filter by resolution status (active, resolved, all)

  • since: Threads started after date (YYYY-MM-DD)

  • until: Threads started before date (YYYY-MM-DD)

  • sort: Sort order (created, activity, resolution)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get active discussion threads

{
  "username": "johndoe",
  "status": "active",
  "sort": "activity"
}

Inputs: username (required), project_id, thread_status, per_page, +1 more.

gitlab_get_user_issue_commentsA

Get all comments authored by a user on issues

Retrieve all issue comments and notes created by the specified user across all accessible projects and time periods.

Returns comment information with:

  • Comment details: content, timestamp, issue context

  • Issue info: title, state, project association

  • Interaction metrics: replies, reactions, mentions

  • Context: thread position, related discussions

  • Impact: influence on issue resolution

Use cases:

  • Track user engagement in discussions

  • Monitor communication patterns

  • Analyze collaboration effectiveness

  • Generate participation reports

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • since: Comments after date (YYYY-MM-DD)

  • until: Comments before date (YYYY-MM-DD)

  • issue_state: Filter by issue state (opened, closed, all)

  • sort: Sort order (created, updated, project)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get recent issue comments

{
  "username": "johndoe",
  "since": "2024-01-01",
  "sort": "created"
}

Inputs: username (required), project_id, since, until, +2 more.

gitlab_get_user_merge_commitsA

List merge commits where a specific user performed the merge.

Shows commits where the user merged branches (not necessarily the code author). Use this tool to see what merges a user has performed, useful for release management.

Examples:

  • Release management: get_user_merge_commits(user_id=123)

  • Merge activity tracking

  • Integration oversight

For all commits authored by user, use 'gitlab_get_user_commits' instead.

Find all commits that originated from merge requests created by the specified user, tracking their integrated contributions.

Returns merge-related commits with:

  • Commit details: SHA, message, merge info

  • MR context: original MR, review process

  • Integration info: target branch, merge strategy

  • Quality metrics: review feedback, CI results

  • Timeline: development to integration time

Use cases:

  • Track integrated contributions

  • Measure code review effectiveness

  • Analyze development workflows

  • Quality assurance reporting

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • target_branch: Filter by target branch (e.g., main)

  • since: MRs merged after date (YYYY-MM-DD)

  • until: MRs merged before date (YYYY-MM-DD)

  • include_review_metrics: Include review statistics

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get merged contributions to main branch

{
  "username": "johndoe",
  "target_branch": "main", 
  "since": "2024-01-01",
  "include_review_metrics": true
}

Inputs: username (required), project_id, since, until, +2 more.

gitlab_get_user_mr_commentsA

Get all comments authored by a user on merge requests

Find all merge request comments and review feedback provided by the specified user, including code review discussions.

Returns MR comment information with:

  • Comment details: content, type (review/discussion)

  • MR context: title, state, author, project

  • Review info: approval status, code line references

  • Thread info: discussion flow, resolution status

  • Impact: influence on code quality and decisions

Use cases:

  • Code review participation tracking

  • Quality assurance monitoring

  • Mentoring and feedback analysis

  • Team collaboration assessment

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • comment_type: Filter by type (review, discussion, all)

  • since: Comments after date (YYYY-MM-DD)

  • until: Comments before date (YYYY-MM-DD)

  • mr_state: Filter by MR state (opened, merged, closed, all)

  • sort: Sort order (created, updated, project)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get code review comments from last month

{
  "username": "johndoe",
  "comment_type": "review",
  "since": "2024-01-01",
  "until": "2024-01-31"
}

Inputs: username (required), project_id, since, until, +2 more.

gitlab_get_user_open_issuesA

List open issues assigned to or created by a specific user.

Use this tool to see what issues a user is currently working on or responsible for.

Retrieve all currently open issues assigned to the specified user across all accessible projects, with intelligent priority sorting.

Returns prioritized issue list with:

  • Issue details: title, description, labels

  • Priority indicators: severity, SLA status

  • Context: project, milestone, due date

  • Activity: recent updates, comment count

  • Assignment: other assignees, collaboration info

Use cases:

  • Personal issue dashboard and inbox

  • Workload management and planning

  • SLA compliance tracking

  • Sprint and milestone planning

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • severity: Filter by severity level

  • sla_status: Filter by SLA compliance (at_risk, overdue, ok)

  • sort: Sort order (priority, due_date, updated)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get overdue issues for user

{
  "username": "johndoe",
  "sla_status": "overdue",
  "sort": "priority"
}

Inputs: user_id, username, severity, sla_status, +3 more.

gitlab_get_user_open_mrsA

Get all open merge requests authored by a user

Retrieve all currently open MRs created by the specified user across all accessible projects, with priority and urgency indicators.

Returns MR information including:

  • Basic details: title, description, IID

  • Status: draft, conflicts, approvals needed

  • Urgency indicators: age, reviewer assignments

  • CI status: pipeline state, test results

  • Project context: name, namespace

Use cases:

  • Personal MR dashboard

  • Team workload monitoring

  • Code review queue management

  • Sprint planning and tracking

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • sort: Sort order (updated, created, priority)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get user's open MRs sorted by update time

{
  "username": "johndoe",
  "sort": "updated",
  "per_page": 10  
}

Inputs: user_id, username, sort, per_page, +1 more.

gitlab_get_user_reported_issuesA

List all issues created/reported by a specific user (including closed ones).

Shows issues where the user is the original reporter/creator. Use this tool to see what problems or requests a user has reported.

Examples:

  • Bug reporting patterns: get_user_reported_issues(user_id=123)

  • User feedback analysis

  • Historical issue creation

Find all issues originally created by the specified user across all accessible projects, with current status and resolution tracking.

For issues currently assigned to a user, use 'gitlab_get_user_open_issues' instead.

Returns reported issues with:

  • Issue details: title, description, current state

  • Progress tracking: assignees, resolution status

  • Timeline: creation, updates, resolution dates

  • Engagement: comments, watchers, related issues

  • Project context: where issue was reported

Use cases:

  • Track personal issue reporting patterns

  • Follow up on submitted problems

  • Monitor issue resolution progress

  • Generate user engagement reports

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • state: Filter by state (opened, closed, all)

  • since: Issues created after date (YYYY-MM-DD)

  • until: Issues created before date (YYYY-MM-DD)

  • sort: Sort order (created, updated, closed)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get recently reported issues

{
  "username": "johndoe",
  "state": "opened",
  "since": "2024-01-01",
  "sort": "created"
}

Inputs: user_id, username, state, since, +4 more.

gitlab_get_user_resolved_issuesA

Get issues closed/resolved by a user

Find all issues that were closed or resolved by the specified user, showing their problem-solving contributions and impact.

Returns resolved issues with:

  • Issue details: original problem, resolution

  • Resolution info: how it was closed, related MRs

  • Timeline: resolution time, effort indicators

  • Impact: complexity, stakeholders affected

  • Recognition: contribution to project health

Use cases:

  • Track problem resolution contributions

  • Performance reviews and recognition

  • Knowledge base building

  • Team productivity analysis

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • since: Resolved after date (YYYY-MM-DD)

  • until: Resolved before date (YYYY-MM-DD)

  • complexity: Filter by resolution complexity

  • sort: Sort order (closed, complexity, impact)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get issues resolved this quarter

{
  "username": "johndoe",
  "since": "2024-01-01",
  "until": "2024-03-31",
  "sort": "closed"
}

Inputs: user_id, username, since, until, +4 more.

gitlab_get_user_resolved_threadsA

Get threads resolved by a user in reviews

Find all discussion threads that were resolved by the specified user during code reviews and collaborative processes.

Returns resolved thread information with:

  • Thread details: original discussion, resolution

  • Resolution info: how thread was closed, outcome

  • Context: code changes, review process, participants

  • Timeline: discussion duration, resolution time

  • Impact: contribution to code quality and decisions

Use cases:

  • Code review effectiveness tracking

  • Collaboration quality assessment

  • Mentoring and guidance evaluation

  • Team productivity insights

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • project_id: Optional project scope filter

  • resolution_type: How thread was resolved

  • since: Resolved after date (YYYY-MM-DD)

  • until: Resolved before date (YYYY-MM-DD)

  • context_type: Filter by context (MergeRequest, Issue, all)

  • sort: Sort order (resolved, created, impact)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get threads resolved in code reviews

{
  "username": "johndoe",
  "context_type": "MergeRequest",
  "since": "2024-01-01",
  "sort": "resolved"
}

Inputs: username (required), project_id, since, until, +2 more.

gitlab_get_user_review_requestsA

Get MRs where user is assigned as reviewer with pending action

Find all merge requests where the specified user has been assigned as a reviewer and their review/approval is still pending.

Returns pending review requests with:

  • MR details: title, author, description

  • Review status: approvals, pending reviewers

  • Priority indicators: age, CI status, conflicts

  • Action items: what review is needed

  • Project context: urgency, team notifications

Use cases:

  • Personal review queue/inbox

  • Team code review management

  • Review workload balancing

  • SLA compliance monitoring

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • priority: Filter by priority (high, medium, low)

  • sort: Sort order (urgency, age, project)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get high priority review requests

{
  "username": "johndoe",
  "priority": "high",
  "sort": "urgency"
}

Inputs: user_id, username, priority, sort, +2 more.

gitlab_get_user_snippetsA

List all personal and project snippets created by a user

Find all code snippets created by the specified user across personal and project scopes, with content and metadata.

Returns snippet information with:

  • Snippet details: title, description, visibility

  • Content info: file names, language detection

  • Usage context: project association, sharing scope

  • Metadata: creation date, update history

  • Access info: permissions, visibility settings

Use cases:

  • Personal code library management

  • Knowledge sharing and documentation

  • Code reuse and template management

  • Developer portfolio and examples

Parameters:

  • user_id: Numeric user ID

  • username: Username string (use either user_id or username)

  • scope: Snippet scope (personal, project, all)

  • visibility: Filter by visibility (private, internal, public)

  • language: Filter by programming language

  • sort: Sort order (created, updated, name)

  • per_page: Results per page (default: 20)

  • page: Page number (default: 1)

Example: Get user's public snippets

{
  "username": "johndoe",
  "visibility": "public", 
  "sort": "created"
}

Inputs: username (required), per_page, page.

gitlab_list_branchesA

List repository branches Returns: All branches with latest commit info Use when: Checking branches, finding feature branches Optional: Search filter

Example response: [{ "name": "main", "protected": true, "merged": false, "can_push": true, "default": true, "commit": { "id": "abc123...", "short_id": "abc123", "title": "Latest commit" } }]

Related tools:

  • gitlab_create_branch: Create new branch

  • gitlab_delete_branch: Remove branch

  • gitlab_compare_refs: Compare branches

Inputs: project_id.

gitlab_list_commitsA

List repository commits Returns: Array of commits with details Use when: Viewing history, finding specific changes Filtering: By date range, file path, branch Pagination: Yes (default 20 per page)

Example response: [{ "id": "e83c5163316f89bfbde7d9ab23ca2e25604af290", "short_id": "e83c516", "title": "Fix critical bug", "author_name": "John Doe", "committed_date": "2024-01-15T14:30:00Z", "message": "Fix critical bug\n\nDetailed explanation..." }]

Related tools:

  • gitlab_get_commit: Full commit details

  • gitlab_get_commit_diff: See changes

  • gitlab_search_in_project: Search commits

Inputs: project_id, ref_name, since, until, +3 more.

gitlab_list_group_projectsA

List projects within a group Returns: Array of projects belonging to the specified group Use when: Browsing group projects, finding projects in group hierarchy Pagination: Yes (default 50 per page) Options: Include subgroup projects with include_subgroups=true

Example response: [{ "id": 456, "name": "project-one", "path_with_namespace": "my-group/project-one", "description": "First project in group", "web_url": "https://gitlab.com/my-group/project-one" }]

Related tools:

  • gitlab_get_group: Get group details

  • gitlab_get_project: Get full project details

Inputs: group_id (required), search, include_subgroups, per_page, +1 more.

gitlab_list_groupsA

List accessible GitLab groups Returns: Array of groups with ID, name, path, description Use when: Browsing groups, finding group IDs, navigating group hierarchy Pagination: Yes (default 50 per page) Filtering: By ownership, name search

Example response: [{ "id": 123, "name": "My Group", "path": "my-group", "full_path": "parent-group/my-group", "description": "Group for team projects", "web_url": "https://gitlab.com/groups/my-group", "visibility": "private" }]

Related tools:

  • gitlab_get_group: Get full group details

  • gitlab_list_group_projects: List projects in a group

Inputs: search, owned, per_page, page.

gitlab_list_issuesA

List project issues Returns: Array of issues with details Use when: Browsing issues, finding work items Filtering: By state (opened/closed/all) Pagination: Yes (default 20 per page)

Example response: [{ "iid": 123, "title": "Fix login bug", "state": "opened", "labels": ["bug", "high-priority"], "assignees": [{"username": "johndoe"}], "web_url": "https://gitlab.com/group/project/-/issues/123" }]

Related tools:

  • gitlab_get_issue: Get full issue details

  • gitlab_add_issue_comment: Comment on issue

  • gitlab_search_in_project: Search issue content

Inputs: project_id, state, per_page, page.

gitlab_list_merge_requestsA

List project merge requests Returns: Array of MRs with key information Use when: Reviewing MRs, finding specific MRs Filtering: By state (opened/closed/merged/all) Pagination: Yes (default 20 per page)

Example response: [{ "iid": 456, "title": "Add new feature", "state": "opened", "source_branch": "feature/new-feature", "target_branch": "main", "draft": false, "has_conflicts": false, "web_url": "https://gitlab.com/group/project/-/merge_requests/456" }]

Related tools:

  • gitlab_get_merge_request: Full MR details

  • gitlab_get_merge_request_changes: View diffs

  • gitlab_merge_merge_request: Merge an MR

Inputs: project_id, state, per_page, page.

gitlab_list_pipeline_jobsA

List jobs in a specific pipeline Returns: Array of jobs with status, timing, and artifact information Use when: Debugging pipeline failures, checking job status, finding artifacts Pagination: Yes (default 20 per page) Details: Includes job stage, status, duration, runner info

Example response: [{ "id": 12345, "name": "test:unit", "stage": "test", "status": "success", "created_at": "2023-01-01T10:00:00Z", "duration": 120.5, "artifacts": [{"filename": "coverage.xml"}], "web_url": "https://gitlab.com/group/project/-/jobs/12345" }]

Related tools:

  • gitlab_list_pipelines: Find pipeline IDs

  • gitlab_download_job_artifact: Get job artifacts

Inputs: pipeline_id (required), project_id, per_page, page.

gitlab_list_pipelinesA

List CI/CD pipelines Returns: Pipeline runs with status Use when: Checking CI status, finding failures Filtering: By ref (branch), status

Statuses:

  • running: Currently executing

  • pending: Waiting to start

  • success: Passed

  • failed: Failed

  • canceled: Manually canceled

  • skipped: Skipped

Example response: [{ "id": 123456, "status": "success", "ref": "main", "sha": "abc123...", "created_at": "2024-01-15T10:00:00Z", "duration": 300 }]

Related tools:

  • gitlab_get_pipeline: Full pipeline details

  • gitlab_summarize_pipeline: AI-friendly summary

Inputs: project_id, ref.

gitlab_list_project_hooksA

List project webhooks Returns: Configured webhooks Use when: Checking integrations Shows: URLs, events, configuration

Example response: [{ "id": 1, "url": "https://example.com/hook", "push_events": true, "issues_events": true, "merge_requests_events": true, "wiki_page_events": false }]

Related tools:

  • gitlab_create_project_hook: Add webhook

  • gitlab_test_project_hook: Test webhook

Inputs: project_id.

gitlab_list_project_jobsA

List all jobs for a project Returns: Array of jobs across all pipelines with filtering options Use when: Monitoring project CI/CD, finding recent failures, browsing job history Pagination: Yes (default 20 per page) Filtering: By job status/scope (failed, success, running, etc.)

Example response: [{ "id": 67890, "name": "deploy:staging", "stage": "deploy", "status": "failed", "pipeline": {"id": 123, "ref": "main"}, "commit": {"short_id": "abc1234"}, "created_at": "2023-01-01T15:30:00Z", "user": {"name": "Jane Doe"} }]

Related tools:

  • gitlab_list_pipeline_jobs: Jobs for specific pipeline

  • gitlab_list_pipelines: Find pipeline information

Inputs: project_id, scope, per_page, page.

gitlab_list_project_membersA

List project members Returns: Users with access levels Use when: Finding team members, permissions Shows: Direct and inherited members

Access levels:

  • 10: Guest

  • 20: Reporter

  • 30: Developer

  • 40: Maintainer

  • 50: Owner

Related tools:

  • gitlab_add_project_member: Add member

  • gitlab_update_member_role: Change access

Inputs: project_id, query, per_page, page.

gitlab_list_projectsA

List accessible GitLab projects Returns: Array of project summaries with ID, name, description, URL Use when: Browsing projects, finding project IDs Pagination: Yes (default 20 per page) Filtering: By ownership, name search

Example response: [{ "id": 12345, "name": "my-project", "path_with_namespace": "group/my-project", "description": "Project description", "web_url": "https://gitlab.com/group/my-project" }]

Related tools:

  • gitlab_get_project: Get full project details

  • gitlab_search_projects: Search all GitLab projects

Inputs: owned, search, per_page, page.

gitlab_list_releasesA

List project releases Returns: GitLab releases (not just tags) Use when: Finding versions, release notes Includes: Assets, release notes, links

Different from tags:

  • Releases have descriptions, assets

  • Tags are just git references

Related tools:

  • gitlab_list_tags: Simple tag list

  • gitlab_create_release: Create release

Inputs: project_id, order_by, sort, per_page, +1 more.

gitlab_list_repository_treeA

Browse repository directory structure Returns: Array of files and directories Use when: Exploring repo structure, listing files Optional: Recursive listing, specific path

Example response: [{ "name": "src", "type": "tree", "path": "src", "mode": "040000" }, { "name": "README.md", "type": "blob", "path": "README.md", "mode": "100644" }]

Related tools:

  • gitlab_get_file_content: Read file contents

  • gitlab_search_in_project: Search in files

Inputs: project_id, path, ref, recursive.

gitlab_list_snippetsA

List project snippets Returns: Array of snippets with metadata Use when: Browsing code snippets, finding reusable code Pagination: Yes (default 20 per page) Filtering: By project

Example response: [{ "id": 123, "title": "Database Helper", "file_name": "db_helper.py", "description": "Common database operations", "visibility": "private", "author": {"name": "John Doe"}, "created_at": "2023-01-01T00:00:00Z", "web_url": "https://gitlab.com/group/project/snippets/123" }]

Related tools:

  • gitlab_get_snippet: Get snippet content

  • gitlab_create_snippet: Create new snippet

Inputs: project_id, per_page, page.

gitlab_list_tagsA

List repository tags Returns: Tags with commit info Use when: Finding releases, version tags Sorting: By name, date, semver

Example response: [{ "name": "v2.0.0", "message": "Version 2.0.0 release", "commit": { "id": "abc123...", "short_id": "abc123", "title": "Prepare 2.0.0 release" }, "release": { "tag_name": "v2.0.0", "description": "Major release with new features..." } }]

Related tools:

  • gitlab_list_releases: Full release info

  • gitlab_create_tag: Create new tag

Inputs: project_id, order_by, sort.

gitlab_list_user_eventsA

Get user's activity feed Returns: Array of user activities Use when: Tracking user contributions, audit trail Filtering: By action type, target type, date range

Example activities:

  • Created issue #123

  • Commented on MR !456

  • Pushed to branch main

  • Closed issue #789

Related tools:

  • gitlab_list_project_members: Find users

  • gitlab_search_in_project: Search by user

Inputs: username (required), action, target_type, per_page, +3 more.

gitlab_merge_merge_requestA

Merge an approved merge request Returns: Merge result with commit SHA Use when: MR is approved and ready Options: Squash, delete branch, auto-merge

Prerequisites:

  • No conflicts

  • Approvals met

  • CI passing (if required)

Related tools:

  • gitlab_get_merge_request: Check merge status

  • gitlab_approve_merge_request: Add approval

  • gitlab_rebase_merge_request: Fix conflicts

Inputs: mr_iid (required), project_id, merge_when_pipeline_succeeds, should_remove_source_branch, +3 more.

gitlab_rebase_merge_requestA

Rebase MR onto target branch Returns: Rebase status Use when: MR is behind target branch Fixes: Out-of-date MR status

Requirements:

  • Fast-forward merge method

  • No conflicts

  • Developer access

Related tools:

  • gitlab_get_merge_request: Check if rebase needed

  • gitlab_merge_merge_request: Merge after rebase

Inputs: mr_iid (required), project_id.

gitlab_resolve_discussionA

Resolve a discussion thread Returns: Updated discussion Use when: Code review feedback addressed Required: Discussion ID from get_discussions

Related tools:

  • gitlab_get_merge_request_discussions: Find discussions

  • gitlab_add_merge_request_comment: Add resolution comment

Inputs: mr_iid (required), discussion_id (required), project_id.

gitlab_safe_preview_commitA

Preview commit without creating Returns: What would change, validation results Use when: Validating before actual commit Shows: Affected files, potential errors

Safety features:

  • No actual changes made

  • Validates file paths

  • Checks permissions

Related tools:

  • gitlab_create_commit: Actual commit

  • gitlab_list_repository_tree: Check files exist

Inputs: branch (required), commit_message (required), actions (required), project_id.

gitlab_search_in_projectA

Search within a project Returns: Results from specified scope Use when: Finding issues, MRs, code, wiki pages Required: Scope (what to search in)

Scopes:

  • 'issues': Search issue titles/descriptions

  • 'merge_requests': Search MR titles/descriptions

  • 'commits': Search commit messages

  • 'blobs': Search file contents

  • 'wiki_blobs': Search wiki pages

Example: Search for "login" in issues Returns matching issues with highlights

Related tools:

  • gitlab_search_projects: Search across projects

  • Specific list tools for each type

Inputs: scope (required), search (required), project_id, per_page, +1 more.

gitlab_search_projectsA

Search all GitLab projects Returns: Projects matching search query Use when: Finding projects across GitLab Scope: All public projects + your private projects

Different from list_projects:

  • Searches ALL of GitLab

  • list_projects only shows YOUR accessible projects

Related tools:

  • gitlab_list_projects: Your projects only

  • gitlab_search_in_project: Search within project

Inputs: search (required), per_page, page.

gitlab_search_userA

Search for GitLab users based on partial information or search criteria.

This tool is useful when you don't have the exact username or ID, but need to find users based on name, email, or other search terms. Use this tool when you need to find users based on partial information or search queries.

Examples:

  • Find users by partial name: search_user("John Sm")

  • Search by email domain: search_user("@company.com")

  • Find users for team assignments

Returns user information including:

  • Basic details: ID, username, name, avatar

  • Public profile information

  • Activity status

For getting specific user details when you have exact ID/username, use 'gitlab_get_user' instead.

Parameters:

  • search: Search query (name, username, or email fragment)

  • per_page: Number of results per page (default: 20)

  • page: Page number for pagination (default: 1)

Example: Find users named "John"

{
  "search": "John",
  "per_page": 10
}

Inputs: search (required), per_page, page.

gitlab_smart_diffA

Get intelligent diff between refs Returns: Structured diff with smart chunking Use when: Need customizable diffs Features: Context control, size limits

Advantages over standard diff:

  • Configurable context lines

  • File size filtering

  • Better for large diffs

Related tools:

  • gitlab_get_commit_diff: Simple commit diff

  • gitlab_compare_refs: Basic comparison

Inputs: from_ref (required), to_ref (required), project_id, context_lines, +1 more.

gitlab_summarize_issueA

Generate AI-friendly issue summary Returns: Condensed issue information Use when: Processing issues with AI Includes: Title, description, comments, status

Smart truncation:

  • Preserves key information

  • Removes redundancy

  • Fits context limits

Related tools:

  • gitlab_get_issue: Full details

  • gitlab_summarize_pipeline: Pipeline summaries

Inputs: issue_iid (required), project_id, max_length.

gitlab_summarize_merge_requestA

Generate AI-friendly MR summary Returns: Concise summary for LLM context Use when: Reviewing MRs with AI assistance Includes: Key changes, discussions, status

Optimized for:

  • Limited context windows

  • Quick understanding

  • Decision making

Related tools:

  • gitlab_get_merge_request: Full details

  • gitlab_summarize_issue: Issue summaries

Inputs: mr_iid (required), project_id, max_length.

gitlab_summarize_pipelineA

Summarize CI/CD pipeline for AI Returns: Pipeline status and key findings Use when: Debugging CI failures with AI Focus: Failed jobs, error messages, duration

Highlights:

  • Failed job names and stages

  • Error excerpts

  • Performance issues

Related tools:

  • gitlab_list_pipelines: Find pipelines

  • gitlab_get_pipeline_job_log: Full logs

Inputs: pipeline_id (required), project_id, max_length.

gitlab_update_merge_requestA

Update merge request fields Returns: Updated MR object Use when: Modifying MR properties Can update: Title, description, assignees, labels, etc.

Examples:

  • Change title: {"title": "New title"}

  • Add reviewers: {"reviewer_ids": [123, 456]}

  • Close MR: {"state_event": "close"}

Related tools:

  • gitlab_get_merge_request: Check current state

  • gitlab_close_merge_request: Just close

  • gitlab_merge_merge_request: Merge MR

Inputs: mr_iid (required), project_id, title, description, +11 more.

gitlab_update_snippetA

Update existing snippet Modifies: Title, content, file name, description, or visibility Use when: Fixing code, updating examples, changing permissions Flexibility: Update any combination of fields

Example usage: { "snippet_id": 123, "title": "Updated API Helper", "content": "// Updated with error handling\nfunction fetchData(url) { ... }", "description": "Enhanced with proper error handling" }

Returns: Updated snippet information

Related tools:

  • gitlab_get_snippet: View current content before updating

  • gitlab_create_snippet: Create new instead of updating

Inputs: snippet_id (required), project_id, title, file_name, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 72 tools

    Disambiguation3/5

    The tool set has clear distinct purposes for core GitLab operations like issues, MRs, commits, and projects, with good descriptions. However, there is significant overlap in user-focused tools (e.g., gitlab_get_user_details, gitlab_get_user_contributions_summary, gitlab_get_user_activity_feed) that could confuse agents about which to use for specific user analysis tasks, as they retrieve similar data with subtle variations in scope and detail.

    Naming Consistency5/5

    Tool names follow a highly consistent snake_case pattern with a clear 'gitlab_' prefix and descriptive verb_noun combinations (e.g., gitlab_list_issues, gitlab_create_commit, gitlab_get_user_details). This predictability makes it easy for agents to understand and navigate the tool set without confusion from mixed conventions.

    Tool Count2/5

    With 72 tools, the count is excessively high for a GitLab server, creating cognitive overload. Many tools are highly specialized (e.g., multiple user analytics tools like gitlab_get_user_code_changes_summary, gitlab_get_user_resolved_threads) that could be consolidated into fewer, more general-purpose tools without losing functionality, making the surface feel bloated and difficult to manage.

    Completeness5/5

    The tool set provides comprehensive coverage of GitLab's domain, including full CRUD operations for issues, MRs, commits, snippets, and projects, along with advanced features like batch operations, diffs, searches, and user analytics. There are no obvious gaps; agents can perform end-to-end workflows from code changes to deployment and user management without dead ends.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with GitLab repositories through secure OAuth 2.0 authentication. Supports comprehensive GitLab operations including merge requests, issues, file management, commits, and branch operations through natural language.
      18 npm
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with GitLab repositories through natural language, supporting project management, issue tracking, merge requests, file access, and repository operations. Includes a conversational agent interface with structured outputs for comprehensive GitLab workflow automation.
      -
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI-powered exploration and interaction with GitLab instances through comprehensive search, code browsing, and repository management. Supports both self-hosted and GitLab.com with flexible authentication for read and write operations.
      69
      412 npm
      13
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to interact with GitLab repositories, manage merge requests, review code diffs, post comments, and handle issues directly through natural language.
      125 npm
      MIT