gitlab-automation
通过Rube MCP(Composio)自动化GitLab项目管理、问题处理、合并请求、流水线、分支及用户操作。始终优先搜索工具以获取当前架构信息。
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_MANAGE_CONNECTIONS with toolkit gitlabRUBE_SEARCH_TOOLS first to get current tool schemasSetup
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.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit gitlabCore 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 allstate: Filter by "all", "opened", or "closed"state_event: "close" or "reopen" to change issue stateassignee_ids: Array of user IDs; use [0] to unassign allissue_iid: Internal issue ID within the project (required for updates)milestone: Filter by milestone titlesearch: Search in title and descriptionscope: "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 errorsissue_iid is the project-internal ID (shown as #42), different from the global issue IDlabels field replace ALL existing labels; use add_labels/remove_labels for incremental changesassignee_ids to empty array does NOT unassign; use [0] insteadupdated_at field requires administrator or project/group owner rights2. 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 pathstate: "opened", "closed", "locked", "merged", or "all"scope: "created_by_me" (default), "assigned_to_me", or "all"source_branch / target_branch: Filter by branch namesauthor_id / author_username: Filter by MR authorassignee_id: Filter by assignee (use None for unassigned, Any for assigned)reviewer_id / reviewer_username: Filter by reviewerlabels: Comma-separated label filtersearch: Search in title and descriptionwip: "yes" for draft MRs, "no" for non-draftorder_by: "created_at" (default), "title", "merged_at", "updated_at"view: "simple" for minimal fieldsiids[]: Filter by specific MR internal IDsPitfalls:
scope is "created_by_me" which limits results; use "all" for complete listingsauthor_id and author_username are mutually exclusivereviewer_id and reviewer_username are mutually exclusiveapproved filter requires the mr_approved_filter feature flag (disabled by default)per_page values3. 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]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:
name / path: Project name and URL-friendly path (both required for creation)visibility: "private", "internal", or "public"namespace_id: Group or user ID for project placementsearch: Case-insensitive substring search for projectsmembership: true to limit to projects user is a member ofowned: true to limit to user-owned projectsproject_id: Project ID for branch operationsbranch_name: Name for new branchref: Source branch or commit SHA for new branch creationorder_by: "id", "name", "path", "created_at", "updated_at", "star_count", "last_activity_at"Pitfalls:
GITLAB_GET_PROJECTS pagination is required for complete coverage; stopping at first page misses projectsdata.details; parse the actual returned list structureproject_id; verify with GITLAB_GET_PROJECT firstbranch_name/ref/sha causes client errors; verify branch existence via GITLAB_GET_REPOSITORY_BRANCHES firstname and path are required for GITLAB_CREATE_PROJECT4. Monitor CI/CD Pipelines
When to use: User wants to check pipeline status, list jobs, or monitor CI/CD runs
Tool sequence:
GITLAB_GET_PROJECT - 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:
id: Project ID or URL-encoded pathstatus: Filter by "created", "waiting_for_resource", "preparing", "pending", "running", "success", "failed", "canceled", "skipped", "manual", "scheduled"scope: "running", "pending", "finished", "branches", "tags"ref: Branch or tag namesha: Specific commit SHAsource: Pipeline source (use "parent_pipeline" for child pipelines)order_by: "id" (default), "status", "ref", "updated_at", "user_id"created_after / created_before: ISO 8601 date filterspipeline_id: Specific pipeline ID for job listinginclude_retried: true to include retried jobs (default false)Pitfalls:
status, ref, and date filters to narrow resultsper_page values to keep output manageablescope accepts single status string or array of statusesyaml_errors: true returns only pipelines with invalid configurations5. Manage Users and Members
When to use: User wants to find users, list project members, or check user status
Tool sequence:
GITLAB_GET_USERS - Search and list GitLab users [Required]GITLAB_GET_USER - 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: Search by name, username, or public emailusername: Get specific user by usernameactive / blocked: Filter by user stateid: Project ID for member listingquery: Filter members by name, email, or usernamestate: Filter members by "awaiting" or "active" (Premium/Ultimate)user_ids: Filter by specific user IDsPitfalls:
GITLAB_LIST_ALL_PROJECT_MEMBERS includes direct, inherited, and invited membersCommon Patterns
ID Resolution
GitLab uses two identifier formats for projects:
123)"my-group%2Fmy-project" or "my-group/my-project")issue_iid is the project-internal number (#42); the global id is differentGITLAB_GET_USERS with search or usernamePagination
GitLab uses offset-based pagination:
page (starting at 1) and per_page (1-100, default 20)page until response returns fewer items than per_page or is emptyX-Total, X-Total-Pages)URL-Encoded Paths
When using project paths as identifiers:
my-group/my-project becomes my-group%2Fmy-projectKnown Pitfalls
ID Formats
id field accepts both integer and string (URL-encoded path)issue_iid is project-scoped; do not confuse with global issue IDRate Limits
per_page valuesParameter Quirks
labels field replaces ALL labels; use add_labels/remove_labels for incremental changesassignee_ids: [0] unassigns all; empty array does nothingscope defaults vary: "created_by_me" for MRs, "all" for issuesauthor_id and author_username are mutually exclusive in MR filters"2024-01-15T10:30:00Z"Plan Restrictions
epic_id, weight, iteration_id, approved_by_ids, member state filterupdated_at override, custom attributesmr_approved_filter feature flag is disabled by defaultQuick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List projects | GITLAB_GET_PROJECTS | search, membership, visibility |
| Get project details | GITLAB_GET_PROJECT | id |
| User's projects | GITLAB_LIST_USER_PROJECTS | id, search, owned |
| Create project | GITLAB_CREATE_PROJECT | name, path, visibility |
| List issues | GITLAB_LIST_PROJECT_ISSUES | id, state, labels, search |
| Create issue | GITLAB_CREATE_PROJECT_ISSUE | id, title, description, labels |
| Update issue | GITLAB_UPDATE_PROJECT_ISSUE | id, issue_iid, state_event |
| List merge requests | GITLAB_GET_PROJECT_MERGE_REQUESTS | id, state, scope, labels |
| List branches | GITLAB_GET_REPOSITORY_BRANCHES | project_id, search |
| Get branch | GITLAB_GET_REPOSITORY_BRANCH | project_id, branch_name |
| Create branch | GITLAB_CREATE_REPOSITORY_BRANCH | project_id, branch_name, ref |
| List commits | GITLAB_LIST_REPOSITORY_COMMITS | project ID, branch ref |
| Project languages | GITLAB_GET_PROJECT_LANGUAGES | project ID |
| List pipelines | GITLAB_LIST_PROJECT_PIPELINES | id, status, ref |
| Get pipeline | GITLAB_GET_SINGLE_PIPELINE | project_id, pipeline_id |
| List pipeline jobs | GITLAB_LIST_PIPELINE_JOBS | id, pipeline_id, scope |
| Search users | GITLAB_GET_USERS | search, username, active |
| Get user | GITLAB_GET_USER | user ID |
| User status | GITLAB_GET_USERS_ID_STATUS | user ID |
| List project members | GITLAB_LIST_ALL_PROJECT_MEMBERS | id, query, state |
| List project users | GITLAB_LIST_PROJECT_USERS | id, search |