MCP GitLab Server
The MCP GitLab Server enables LLMs to comprehensively interact with GitLab repositories through API integration, providing project management, repository operations, and advanced automation features.
Project Management: List, search, and retrieve detailed information about GitLab projects, including auto-detection from local Git repositories
Issues: List, read, search, comment on, and generate AI-optimized summaries of project issues
Merge Requests: List, read, update (title, description, labels, assignees), approve, merge, rebase, close, manage discussions, and generate AI-friendly summaries
Repository Operations: Browse file structure, read content, create commits with multiple file changes (create, update, delete, move), view commit details and diffs, compare refs, cherry-pick commits, and manage branches/tags
CI/CD Pipelines: View pipeline status, history, and generate AI-optimized summaries
Advanced Operations: Execute atomic batch operations with rollback support, generate structured diffs with intelligent chunking (
gitlab_smart_diff), and safely preview commits (gitlab_safe_preview_commit)Search: Search projects globally and within repositories across issues, merge requests, commits, and other scopes
User & Project Information: List project members, user events, releases, and webhooks
AI Tools: Generate summaries and structured data optimized for efficient LLM context usage across issues, MRs, and pipelines
Provides comprehensive GitLab API integration enabling management of projects, issues, merge requests, repository files, branches, CI/CD pipelines, and discussions. Includes advanced features like batch operations, AI-optimized summaries, and smart diffs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP GitLab Server list open merge requests for project 'web-app'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP GitLab Server
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
Using uvx (recommended - no installation needed)
# Run directly without installation
uvx mcp-gitlabFrom 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 testsConfiguration
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
Go to your GitLab profile settings
Navigate to "Access Tokens"
Create a new token with the following scopes:
api- Full API accessread_repository- Read repository contentwrite_repository- Write repository content (for commits)
Usage
With Claude Desktop
Add to your Claude Desktop configuration:
Using uvx (recommended - no installation needed):
{
"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-gitlabStandalone Usage
# If running from source (after uv sync)
uv run mcp-gitlab
# Or run the Python module directly
uv run python -m mcp_gitlabAvailable 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_projectsIssues:
gitlab_list_issues,gitlab_get_issue,gitlab_add_issue_comment,gitlab_summarize_issueMerge 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_requestRepository:
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_tagsBranches:
gitlab_list_branchesPipelines & Jobs:
gitlab_list_pipelines,gitlab_list_pipeline_jobs,gitlab_list_project_jobs,gitlab_download_job_artifact,gitlab_summarize_pipelineSearch:
gitlab_search_projects,gitlab_search_in_projectUsers:
gitlab_get_current_user,gitlab_get_user,gitlab_list_user_events,gitlab_list_project_membersUser & Profile:
gitlab_search_user,gitlab_get_user_details,gitlab_get_my_profile,gitlab_get_user_contributions_summary,gitlab_get_user_activity_feedUser'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_issuesUser's Code & Commits:
gitlab_get_user_commitsReleases:
gitlab_list_releasesWebhooks:
gitlab_list_project_hooksAI Tools:
gitlab_summarize_merge_request,gitlab_summarize_issue,gitlab_summarize_pipelineAdvanced:
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-covCI/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 -vCode 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
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Acknowledgments
Built on the Model Context Protocol
Uses python-gitlab for GitLab API interaction
Inspired by the need for better LLM-GitLab integration
Available Tools
72 toolsgitlab_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:
Create branch
Add files
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:
Checks git remotes in current/specified directory
Identifies GitLab URLs
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
Scored across 72 tools
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.
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.
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.
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
Related MCP Connectors
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Git-backed platform for skills, tools, and context for AI agents
Operate GitHub from your AI assistant: repos, PRs, issues, Actions. Previews and read-only mode.
Plain-English git for agents: 22 tools to branch, commit, push and tag. Free tier.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseBqualityBmaintenanceEnables 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.69412 npm13MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with GitLab repositories, manage merge requests, review code diffs, post comments, and handle issues directly through natural language.125 npmMIT