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
RUBE_MANAGE_CONNECTIONS with toolkit gitlab
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp 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
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit gitlab
- 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:
GITLAB_GET_PROJECTS - 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:
id: Project ID (integer) or URL-encoded path (e.g., "my-group/my-project")
title: Issue title (required for creation)
description: Issue body text (max 1,048,576 characters)
labels: Comma-separated label names (e.g., "bug,critical")
add_labels / remove_labels: Add or remove labels without replacing all
state: Filter by "all", "opened", or "closed"
state_event: "close" or "reopen" to change issue state
assignee_ids: Array of user IDs; use [0] to unassign all
issue_iid: Internal issue ID within the project (required for updates)
milestone: Filter by milestone title
search: Search in title and description
scope: "created_by_me", "assigned_to_me", or "all"
page / per_page: Pagination (default per_page: 20)
Pitfalls:
id accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors
issue_iid is the project-internal ID (shown as #42), different from the global issue ID
- Labels in
labels field replace ALL existing labels; use add_labels/remove_labels for incremental changes
- Setting
assignee_ids to empty array does NOT unassign; use [0] instead
updated_at 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:
GITLAB_GET_PROJECT - 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:
id: Project ID or URL-encoded path
state: "opened", "closed", "locked", "merged", or "all"
scope: "created_by_me" (default), "assigned_to_me", or "all"
source_branch / target_branch: Filter by branch names
author_id / author_username: Filter by MR author
assignee_id: Filter by assignee (use None for unassigned, Any for assigned)
reviewer_id / reviewer_username: Filter by reviewer
labels: Comma-separated label filter
search: Search in title and description
wip: "yes" for draft MRs, "no" for non-draft
order_by: "created_at" (default), "title", "merged_at", "updated_at"
view: "simple" for minimal fields
iids[]: Filter by specific MR internal IDs
Pitfalls:
- Default
scope is "created_by_me" which limits results; use "all" for complete listings
author_id and author_username are mutually exclusive
reviewer_id and reviewer_username are mutually exclusive
approved filter requires the mr_approved_filter feature flag (disabled by default)
- Large MR histories can be noisy; use filters and moderate
per_page values
3. Manage Projects and Repositories
When to use: User wants to list projects, create new projects, or manage branches
Tool sequence:
GITLAB_GET_PROJECTS - List all accessible projects with filters [Required]
GITLAB_GET_PROJECT - Get detailed info for a specific project [Optional]
GITLAB_LIST_USER_PROJECTS - List projects owned by a specific user [Optional]
GITLAB_CREATE_PROJECT - 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]
7
1---2name: gitlab-automation3description: Automate GitLab project management, issues, merge requests, pipelines, branches, and user operations via Rube MCP (Composio). Always search tools first for current schemas.4---567# GitLab Automation via Rube MCP89Automate GitLab operations including project management, issue tracking, merge request workflows, CI/CD pipeline monitoring, branch management, and user administration through Composio's GitLab toolkit.1011## Prerequisites1213- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)14- Active GitLab connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`15- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1617## Setup1819**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.20211. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds222. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`233. If connection is not ACTIVE, follow the returned auth link to complete GitLab OAuth244. Confirm connection status shows ACTIVE before running any workflows2526## Core Workflows2728### 1. Manage Issues2930**When to use**: User wants to create, update, list, or search issues in a GitLab project3132**Tool sequence**:331. `GITLAB_GET_PROJECTS` - Find the target project and get its ID [Prerequisite]342. `GITLAB_LIST_PROJECT_ISSUES` - List and filter issues for a project [Required]353. `GITLAB_CREATE_PROJECT_ISSUE` - Create a new issue [Required for create]364. `GITLAB_UPDATE_PROJECT_ISSUE` - Update an existing issue (title, labels, state, assignees) [Required for update]375. `GITLAB_LIST_PROJECT_USERS` - Find user IDs for assignment [Optional]3839**Key parameters**:40- `id`: Project ID (integer) or URL-encoded path (e.g., `"my-group/my-project"`)41- `title`: Issue title (required for creation)42- `description`: Issue body text (max 1,048,576 characters)43- `labels`: Comma-separated label names (e.g., `"bug,critical"`)44- `add_labels` / `remove_labels`: Add or remove labels without replacing all45- `state`: Filter by `"all"`, `"opened"`, or `"closed"`46- `state_event`: `"close"` or `"reopen"` to change issue state47- `assignee_ids`: Array of user IDs; use `[0]` to unassign all48- `issue_iid`: Internal issue ID within the project (required for updates)49- `milestone`: Filter by milestone title50- `search`: Search in title and description51- `scope`: `"created_by_me"`, `"assigned_to_me"`, or `"all"`52- `page` / `per_page`: Pagination (default per_page: 20)5354**Pitfalls**:55- `id` accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors56- `issue_iid` is the project-internal ID (shown as #42), different from the global issue ID57- Labels in `labels` field replace ALL existing labels; use `add_labels`/`remove_labels` for incremental changes58- Setting `assignee_ids` to empty array does NOT unassign; use `[0]` instead59- `updated_at` field requires administrator or project/group owner rights6061### 2. Manage Merge Requests6263**When to use**: User wants to list, filter, or review merge requests in a project6465**Tool sequence**:661. `GITLAB_GET_PROJECT` - Get project details and verify access [Prerequisite]672. `GITLAB_GET_PROJECT_MERGE_REQUESTS` - List and filter merge requests [Required]683. `GITLAB_GET_REPOSITORY_BRANCHES` - Verify source/target branches [Optional]694. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - Find reviewers/assignees [Optional]7071**Key parameters**:72- `id`: Project ID or URL-encoded path73- `state`: `"opened"`, `"closed"`, `"locked"`, `"merged"`, or `"all"`74- `scope`: `"created_by_me"` (default), `"assigned_to_me"`, or `"all"`75- `source_branch` / `target_branch`: Filter by branch names76- `author_id` / `author_username`: Filter by MR author77- `assignee_id`: Filter by assignee (use `None` for unassigned, `Any` for assigned)78- `reviewer_id` / `reviewer_username`: Filter by reviewer79- `labels`: Comma-separated label filter80- `search`: Search in title and description81- `wip`: `"yes"` for draft MRs, `"no"` for non-draft82- `order_by`: `"created_at"` (default), `"title"`, `"merged_at"`, `"updated_at"`83- `view`: `"simple"` for minimal fields84- `iids[]`: Filter by specific MR internal IDs8586**Pitfalls**:87- Default `scope` is `"created_by_me"` which limits results; use `"all"` for complete listings88- `author_id` and `author_username` are mutually exclusive89- `reviewer_id` and `reviewer_username` are mutually exclusive90- `approved` filter requires the `mr_approved_filter` feature flag (disabled by default)91- Large MR histories can be noisy; use filters and moderate `per_page` values9293### 3. Manage Projects and Repositories9495**When to use**: User wants to list projects, create new projects, or manage branches9697**Tool sequence**:981. `GITLAB_GET_PROJECTS` - List all accessible projects with filters [Required]992. `GITLAB_GET_PROJECT` - Get detailed info for a specific project [Optional]1003. `GITLAB_LIST_USER_PROJECTS` - List projects owned by a specific user [Optional]1014. `GITLAB_CREATE_PROJECT` - Create a new project [Required for create]1025. `GITLAB_GET_REPOSITORY_BRANCHES` - List branches in a project [Required for branch ops]1036. `GITLAB_CREATE_REPOSITORY_BRANCH` - Create a new branch [Optional]1047