GitLab Automation via Rube MCP
Automate GitLab operations including project management, issue tracking, merge request workflows, CI/CD pipeline monitoring, branch management, and user administration through Composio's GitLab toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active GitLab connection via with toolkit
- Always call first to get current tool schemas
Setup
Get Rube MCP: Add
as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming responds
- Call with toolkit
- If connection is not ACTIVE, follow the returned auth link to complete GitLab OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Manage Issues
When to use: User wants to create, update, list, or search issues in a GitLab project
Tool sequence:
- - Find the target project and get its ID [Prerequisite]
GITLAB_LIST_PROJECT_ISSUES
- List and filter issues for a project [Required]
GITLAB_CREATE_PROJECT_ISSUE
- Create a new issue [Required for create]
GITLAB_UPDATE_PROJECT_ISSUE
- Update an existing issue (title, labels, state, assignees) [Required for update]
GITLAB_LIST_PROJECT_USERS
- Find user IDs for assignment [Optional]
Key parameters:
- : Project ID (integer) or URL-encoded path (e.g., )
- : Issue title (required for creation)
- : Issue body text (max 1,048,576 characters)
- : Comma-separated label names (e.g., )
- / : Add or remove labels without replacing all
- : Filter by , , or
- : or to change issue state
- : Array of user IDs; use to unassign all
- : Internal issue ID within the project (required for updates)
- : Filter by milestone title
- : Search in title and description
- : , , or
- / : Pagination (default per_page: 20)
Pitfalls:
- accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors
- is the project-internal ID (shown as #42), different from the global issue ID
- Labels in field replace ALL existing labels; use / for incremental changes
- Setting to empty array does NOT unassign; use instead
- field requires administrator or project/group owner rights
2. Manage Merge Requests
When to use: User wants to list, filter, or review merge requests in a project
Tool sequence:
- - Get project details and verify access [Prerequisite]
GITLAB_GET_PROJECT_MERGE_REQUESTS
- List and filter merge requests [Required]
GITLAB_GET_REPOSITORY_BRANCHES
- Verify source/target branches [Optional]
GITLAB_LIST_ALL_PROJECT_MEMBERS
- Find reviewers/assignees [Optional]
Key parameters:
- : Project ID or URL-encoded path
- : , , , , or
- : (default), , or
- / : Filter by branch names
- / : Filter by MR author
- : Filter by assignee (use for unassigned, for assigned)
- / : Filter by reviewer
- : Comma-separated label filter
- : Search in title and description
- : for draft MRs, for non-draft
- : (default), , ,
- : for minimal fields
- : Filter by specific MR internal IDs
Pitfalls:
- Default is which limits results; use for complete listings
- and are mutually exclusive
- and are mutually exclusive
- filter requires the feature flag (disabled by default)
- Large MR histories can be noisy; use filters and moderate values
3. Manage Projects and Repositories
When to use: User wants to list projects, create new projects, or manage branches
Tool sequence:
- - List all accessible projects with filters [Required]
- - Get detailed info for a specific project [Optional]
GITLAB_LIST_USER_PROJECTS
- List projects owned by a specific user [Optional]
- - Create a new project [Required for create]
GITLAB_GET_REPOSITORY_BRANCHES
- List branches in a project [Required for branch ops]
GITLAB_CREATE_REPOSITORY_BRANCH
- Create a new branch [Optional]
GITLAB_GET_REPOSITORY_BRANCH
- Get details of a specific branch [Optional]
GITLAB_LIST_REPOSITORY_COMMITS
- View commit history [Optional]
GITLAB_GET_PROJECT_LANGUAGES
- Get language breakdown [Optional]
Key parameters:
- / : Project name and URL-friendly path (both required for creation)
- : , , or
- : Group or user ID for project placement
- : Case-insensitive substring search for projects
- : to limit to projects user is a member of
- : to limit to user-owned projects
- : Project ID for branch operations
- : Name for new branch
- : Source branch or commit SHA for new branch creation
- : , , , , , ,
Pitfalls:
- pagination is required for complete coverage; stopping at first page misses projects
- Some responses place items under ; parse the actual returned list structure
- Most follow-up calls depend on correct ; verify with first
- Invalid // causes client errors; verify branch existence via
GITLAB_GET_REPOSITORY_BRANCHES
first
- Both and are required for
4. Monitor CI/CD Pipelines
When to use: User wants to check pipeline status, list jobs, or monitor CI/CD runs
Tool sequence:
- - Verify project access [Prerequisite]
GITLAB_LIST_PROJECT_PIPELINES
- List pipelines with filters [Required]
GITLAB_GET_SINGLE_PIPELINE
- Get detailed info for a specific pipeline [Optional]
GITLAB_LIST_PIPELINE_JOBS
- List jobs within a pipeline [Optional]
Key parameters:
- : Project ID or URL-encoded path
- : Filter by , , , , , , , , , ,
- : , , , ,
- : Branch or tag name
- : Specific commit SHA
- : Pipeline source (use for child pipelines)
- : (default), , , ,
- / : ISO 8601 date filters
- : Specific pipeline ID for job listing
- : to include retried jobs (default )
Pitfalls:
- Large pipeline histories can be noisy; use , , and date filters to narrow results
- Use moderate values to keep output manageable
- Pipeline job accepts single status string or array of statuses
- returns only pipelines with invalid configurations
5. Manage Users and Members
When to use: User wants to find users, list project members, or check user status
Tool sequence:
- - Search and list GitLab users [Required]
- - Get details for a specific user by ID [Optional]
GITLAB_GET_USERS_ID_STATUS
- Get user status message and availability [Optional]
GITLAB_LIST_ALL_PROJECT_MEMBERS
- List all project members (direct + inherited) [Required for member listing]
GITLAB_LIST_PROJECT_USERS
- List project users with search filter [Optional]
Key parameters:
- : Search by name, username, or public email
- : Get specific user by username
- / : Filter by user state
- : Project ID for member listing
- : Filter members by name, email, or username
- : Filter members by or (Premium/Ultimate)
- : Filter by specific user IDs
Pitfalls:
- Many user filters (admins, auditors, extern_uid, two_factor) are admin-only
GITLAB_LIST_ALL_PROJECT_MEMBERS
includes direct, inherited, and invited members
- User search is case-insensitive but may not match partial email domains
- Premium/Ultimate features (state filter, seat info) are not available on free plans
Common Patterns
ID Resolution
GitLab uses two identifier formats for projects:
- Numeric ID: Integer project ID (e.g., )
- URL-encoded path: Namespace/project format (e.g., or )
- Issue IID vs ID: is the project-internal number (#42); the global is different
- User ID: Numeric; resolve via with or
Pagination
GitLab uses offset-based pagination:
- Set (starting at 1) and (1-100, default 20)
- Continue incrementing until response returns fewer items than or is empty
- Total count may be available in response headers (, )
- Always paginate to completion for accurate results
URL-Encoded Paths
When using project paths as identifiers:
- Forward slashes must be URL-encoded: becomes
- Some tools accept unencoded paths; check schema for each tool
- Prefer numeric IDs when available for reliability
Known Pitfalls
ID Formats
- Project field accepts both integer and string (URL-encoded path)
- Issue is project-scoped; do not confuse with global issue ID
- Pipeline IDs are project-scoped integers
- User IDs are global integers across the GitLab instance
Rate Limits
- GitLab has per-user rate limits (typically 300-2000 requests/minute depending on plan)
- Large pipeline/issue histories should use date and status filters to reduce result sets
- Paginate responsibly with moderate values
Parameter Quirks
- field replaces ALL labels; use / for incremental changes
- unassigns all; empty array does nothing
- defaults vary: for MRs, for issues
- and are mutually exclusive in MR filters
- Date parameters use ISO 8601 format:
Plan Restrictions
- Some features require Premium/Ultimate: , , , , member filter
- Admin-only features: user management filters, override, custom attributes
- The feature flag is disabled by default
Quick Reference
| Task | Tool Slug | Key Params |
|---|
| List projects | | , , |
| Get project details | | |
| User's projects | GITLAB_LIST_USER_PROJECTS
| , , |
| Create project | | , , |
| List issues | GITLAB_LIST_PROJECT_ISSUES
| , , , |
| Create issue | GITLAB_CREATE_PROJECT_ISSUE
| , , , |
| Update issue | GITLAB_UPDATE_PROJECT_ISSUE
| , , |
| List merge requests | GITLAB_GET_PROJECT_MERGE_REQUESTS
| , , , |
| List branches | GITLAB_GET_REPOSITORY_BRANCHES
| , |
| Get branch | GITLAB_GET_REPOSITORY_BRANCH
| , |
| Create branch | GITLAB_CREATE_REPOSITORY_BRANCH
| , , |
| List commits | GITLAB_LIST_REPOSITORY_COMMITS
| project ID, branch ref |
| Project languages | GITLAB_GET_PROJECT_LANGUAGES
| project ID |
| List pipelines | GITLAB_LIST_PROJECT_PIPELINES
| , , |
| Get pipeline | GITLAB_GET_SINGLE_PIPELINE
| , |
| List pipeline jobs | GITLAB_LIST_PIPELINE_JOBS
| , , |
| Search users | | , , |
| Get user | | user ID |
| User status | GITLAB_GET_USERS_ID_STATUS
| user ID |
| List project members | GITLAB_LIST_ALL_PROJECT_MEMBERS
| , , |
| List project users | GITLAB_LIST_PROJECT_USERS
| , |