GitLab
Git hosting, merge requests, pipelines.
Verdict
Common use cases
- File bugs from customer feedback threads
- Create feature branches during planning sessions
- Archive completed projects after launch retrospectives
- Check CI pipeline status before deploying
- Triage open issues by priority at standup
Integration
- Vendor
- GitLab
- Category
- developer-tools
- Auth
- OAUTH2
- Tools
- 50
- Composio slug
gitlab
Tools
- Archive Project
Tool to archive a project. use when you need to mark a project read-only after finishing active development. call after confirming no further changes are required.
- Create GitLab Group
Tool to create a new group in gitlab. use when you need to establish a new group for projects or collaboration.
- Create Project
Tool to create a new project in gitlab. implements post /projects endpoint.
- Create Project Issue
Tool to create a new issue in a gitlab project. use when you need to report a bug, request a feature, or track a task within a specific project.
- Create Repository Branch
Tool to create a new branch in a project. use when you need to create a new branch from an existing branch or a specific commit in a gitlab project.
- Create Support PIN
Tool to create a support pin for your authenticated user. use when gitlab support requests a pin to verify your identity.
- Delete Projectdestructive
Tool to delete a gitlab project by its id. use when you need to remove a project, either by marking it for later deletion or deleting it immediately.
- Download Project Avatar
Tool to download a project’s avatar image. use when you need the raw avatar bytes after confirming the project exists.
- Erase Job
Tool to erase the content of a specified job within a project. use when you need to remove job artifacts and logs.
- Get Commit References
Tool to get all references (branches or tags) a commit is pushed to. use when you need to find out which branches or tags a specific commit belongs to in a gitlab project.
- Get Commit Sequence
Tool to get the sequence number of a commit in a project by following parent links from the given commit. use when you need to determine the order of a commit in the project's history.
- Get Group Details
Tool to retrieve information about a specific group by its id. use when you need to get details of a gitlab group.
- Get Group Member
Tool to retrieve details for a specific group member. use when you need to fetch membership information for a user in a group after you know both group id and user id.
- Get Groups
Get groups
- Get Job Details
Tool to retrieve details of a single job by its id within a specified project. use this when you need to fetch specific information about a particular ci/cd job.
- Get Merge Request Commits
Tool to get commits of a merge request. use when you need to retrieve all commits associated with a specific merge request.
- Get Merge Request Notes
Tool to fetch comments on a merge request. use when you need to retrieve all notes for a specific merge request.
- Get Project
Tool to get a single project by id or url-encoded path.
- Get Project Languages
Tool to list programming languages used in a project with percentages. use when you need the project language breakdown.
- Get Project Member
Tool to retrieve details for a specific project member. use after confirming project and user ids to fetch membership information for a project member.
- Get Project Member All
Tool to retrieve details for a specific project member (including inherited and invited members). use when you need the effective membership info (including invitations and inheritance).
- Get Project Merge Requests
Tool to retrieve a list of merge requests for a specific project. use when you need to get all merge requests associated with a project, with options to filter by state, labels, milestones, and other attributes.
- Get Projects
Tool to list all projects accessible to the authenticated user. supports filtering.
- Get Repository Branch
Tool to retrieve information about a specific branch in a project. use when you need to get details for a single branch.
- Get Repository Branches
Retrieves a list of repository branches for a project. use this when you need to get all branches or search for specific branches within a gitlab project.
- Get Single Commit
Tool to get a specific commit identified by the commit hash or name of a branch or tag. use this when you need to retrieve detailed information about a single commit in a gitlab project repository.
- Get Single Pipeline
Tool to retrieve details of a single pipeline by its id within a specified project. use when you need to get information about a specific ci/cd pipeline.
- Get User
Tool to retrieve information about a specific user by their id. use when you need to fetch details for a single gitlab user.
- Get User Preferences
Tool to get the current user's preferences. use when you need to retrieve the user's diff display and ci identity jwt settings after authentication.
- Get Users
Tool to retrieve a list of users from gitlab. use this when you need to find user information, search for specific users, or filter users based on various criteria like activity status or creation date.
- Get User Status
Tool to get a user's status by id. use when you need to retrieve a gitlab user's current status message, emoji, and availability after identifying their user id.
- Get User Status
Tool to get the current user's status. use when displaying or verifying the authenticated user's gitlab status after login.
- Get User Support PIN
Tool to get details of the current user's support pin. use when you need to retrieve the active support pin and its expiration for the authenticated user.
- Import project members
Tool to import members from one project to another. use when migrating members between projects.
- List All Group Members
Tool to list all members of a group including direct, inherited, and invited members. use when you need a comprehensive membership list beyond direct members.
- List All Project Members
Tool to list all members of a project (direct, inherited, invited). use when you need the effective membership list including inherited and invited members.
- List Billable Group Members
Tool to list billable members of a top-level group (including its subgroups and projects). use when generating billing reports; requires owner role on the group.
- List Group Members
Tool to list direct members of a group. use when you need to retrieve or filter a group's direct membership.
- List Merge Request Diffs
Tool to list all diff versions of a merge request. use when you need to inspect changes across different diff versions after creating or updating a merge request.
- List Pending Group Members
Tool to list pending members of a group and its subgroups and projects. use when you need to review users awaiting approval or invited without an account. call after confirming the top-level group id.
- List Pipeline Jobs
Tool to retrieve a list of jobs for a specified pipeline within a project. use this when you need to inspect the status or details of jobs associated with a particular ci/cd pipeline.
- List Project Groups
Tool to list ancestor groups of a project. use when you need to retrieve all groups a project belongs to or is shared with.
- List Project Invited Groups
Tool to list groups invited to a project. use when auditing which groups have access to a project.
- List Project Pipelines
Tool to retrieve a list of pipelines for a specified project. use when you need to get information about ci/cd pipelines, such as their status, source, or creation/update times.
- List Project Repository Tags
Tool to retrieve a list of repository tags for a specified project. use when you need to get all tags associated with a project in gitlab.
- List Project Shareable Groups
Tool to list groups that can be shared with a project. use before sharing a project to fetch eligible groups.
- List Project Transfer Locations
Tool to list namespaces available for project transfer. use when you need to determine which groups a project can be transferred into.
- List project users
Tool to list users of a project. use after you have a project id and want to retrieve its users.
- List Repository Commits
Tool to get a list of repository commits in a project. use when you need to retrieve commit history for a specific project, branch, or time range.
- List User Projects
Tool to list projects owned by a specific user. use after obtaining target user identity to fetch owned projects.
Setup
Setup guide
- 11. Open your Switchy workspace settings and click 'Add Integration' under the MCP section. 2. Select GitLab from the developer tools category. 3. Click 'Connect with GitLab' to start OAuth — you'll land on GitLab's authorization page. 4. Review the requested scopes: api (full access), read_user (profile info), and write_repository (branch/commit operations). 5. Click 'Authorize' and GitLab redirects you back to Switchy with a success message. 6. Return to any Space and type '@GitLab list my projects' to confirm the connection works. 7. To invoke a tool, @mention GitLab in a message with your request — for example '@GitLab create an issue in project 12345 titled Fix login timeout'. 8. The MCP responds inline with confirmation or error details, and you can chain follow-up commands in the same thread.
What teammates see: by default, memories from GitLab are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Spaces have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
File Bug from Chat
@GitLab create an issue in project 'mobile-app' titled 'Login button unresponsive on Android 13' with description 'User reports tapping login does nothing after app update 2.4.1'Open in a Space →
Branch for New Feature
@GitLab create a branch named 'feature/dark-mode-toggle' in project 'web-frontend' from the main branchOpen in a Space →
Archive Finished Project
@GitLab archive the project 'legacy-api-v1' since we've migrated all traffic to v2Open in a Space →
List Open Issues
@GitLab show me all open issues in project 'backend-services' labeled 'bug' and sort by creation dateOpen in a Space →
Check Pipeline Status
@GitLab get the status of the most recent pipeline for branch 'release-candidate' in project 'core-platform'Open in a Space →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@gitlab list all open issues in the api-gateway project assigned to me, grouped by milestone
Found 12 open issues assigned to you in api-gateway: Milestone v2.3 (5 issues): - #847: Rate limiting returns 500 instead of 429 - #851: OAuth token refresh fails after 7 days - #856: Swagger docs missing new endpoints - #862: Memory leak in request logger - #863: Add health check endpoint Milestone v2.4 (4 issues): - #871: Support GraphQL queries - #879: Implement request tracing - #882: Add Redis cache layer - #885: Upgrade to Node 20 LTS No milestone (3 issues): - #891: Flaky integration test in CI - #894: Update deployment docs - #897: Investigate slow response times This represents a typical response structure; actual issue titles and counts depend on your project state.
Requires read_api scope. This example demonstrates the MCP's ability to filter and organize issues by assignee and milestone, which is useful for sprint planning. Note that GitLab's API returns paginated results—large projects may require multiple calls, and the MCP handles this automatically but may take longer to respond.
@gitlab create a new branch called feature/user-preferences from the main branch in the dashboard-ui project, then open an issue to track the implementation
Created branch feature/user-preferences from main (commit sha: a3f7b2c) in dashboard-ui. Created issue #423: "Implement user preferences feature" - Assigned to: you - Labels: feature, frontend - Milestone: Q1 2025 - Description: Track implementation of user preferences UI and API integration on branch feature/user-preferences - Link: https://gitlab.com/your-org/dashboard-ui/-/issues/423 Branch is ready for commits. The issue will automatically close when a merge request with 'Closes #423' is merged to main.
Requires write_repository and api scopes. This example shows the MCP executing multiple related actions in sequence—a common workflow when starting new feature work. Be aware that branch creation fails if the name already exists, and issue creation respects your project's required fields (some projects mandate assignees or labels).
@gitlab review the last 15 commits in the auth-service project and draft a changelog entry for our v3.1.0 release, focusing on security improvements
Analyzed 15 commits in auth-service (Dec 10-28, 2024). Here's a draft changelog for v3.1.0: **Security Improvements:** - Upgraded bcrypt to 5.1.1 to address CVE-2023-xxxxx (commit 7a2f) - Implemented rate limiting on /login endpoint: 5 attempts per 15 minutes (commit 9b4e) - Added CSRF token validation for all state-changing requests (commit c3d1) - Migrated session storage from cookies to httpOnly secure tokens (commit 2f8a) **Other Changes:** - Fixed password reset email template rendering on mobile (commit 5e7c) - Updated dependencies: express 4.18.2 → 4.19.1 (commit 8d3b) Recommend highlighting the rate limiting and CSRF changes in release notes, as they may affect client integrations. Two commits were merge commits and excluded from this summary.
Requires read_repository scope. This synthesis example demonstrates how the MCP retrieves commit history and the AI interprets it to produce human-readable release documentation. The quality depends on commit message discipline—vague messages like 'fix stuff' yield vague summaries. Commit analysis is limited by GitLab's API pagination; very active repositories may need date-range filtering.
Use-case deep-dives
When GitLab MCP handles agency-to-client transitions cleanly
A 6-person dev shop finishing a 3-month client build needs to hand off the repo, close out issues, and archive the project in one coordinated push. The GitLab MCP wins here because it chains Create Project Issue for final documentation tasks, Archive Project once the client confirms delivery, and Create Support PIN if the handoff involves transferring ownership to the client's GitLab org. The 50-tool scope means you can script the entire teardown—branch cleanup, final merge, archive—without leaving Switchy. This breaks down if your agency runs 40+ concurrent client projects, because OAuth2 token limits start causing rate-limit friction during bulk operations. For shops doing 8-12 handoffs a quarter, this MCP turns a 90-minute checklist into a 12-minute AI-assisted runbook.
Why this MCP is overkill for routine branch work
A 4-person product team starting a two-week sprint needs feature branches for 6 tickets. The GitLab MCP's Create Repository Branch tool technically works, but it's slower than just typing `git checkout -b` in your terminal. The value threshold is around 15+ branches created in a single session—like a platform team spinning up isolated environments for 20 microservices at once. Below that count, the OAuth2 handshake and API round-trip add 8-12 seconds per branch compared to local Git. The MCP makes sense when you're also using Create Project Issue to generate tickets from a planning doc and need branch names to match issue IDs automatically. For normal sprint prep, skip this and use Git directly.
When GitLab MCP bridges support and engineering workflows
A 10-person SaaS company routes customer bug reports through Zendesk but tracks fixes in GitLab issues. The support lead spends 40 minutes daily copy-pasting ticket details into GitLab and chasing engineers for status updates. The GitLab MCP's Create Project Issue tool lets Switchy ingest a Zendesk thread, extract the repro steps, and file the GitLab issue with proper labels and assignees in one prompt. The 50-tool library includes project search and issue updates, so the AI can also pull status back into Zendesk threads without manual lookups. This works until your issue volume hits 200+ per week—then the MCP's per-call latency (OAuth2 refresh on every request) starts lagging behind a dedicated Zapier pipeline. For teams doing 30-80 tickets weekly, this MCP cuts the support-to-eng handoff time by 60%.
Frequently asked
What can the GitLab MCP do in Switchy?
It lets AI agents create projects, manage branches, open issues, archive repos, and handle group administration across your GitLab instance. The MCP wraps 50 GitLab API endpoints, so agents can execute common DevOps workflows without leaving the conversation. You still need a GitLab account with appropriate permissions for each action.
Which GitLab OAuth scopes does Switchy request?
The MCP requests api scope, which grants full read-write access to your GitLab projects, issues, merge requests, and groups. GitLab doesn't offer granular OAuth scopes, so you're granting broad access. If you only need read operations, consider using a personal access token with read_api scope instead of connecting via OAuth.
Can the GitLab MCP approve merge requests or run CI pipelines?
Yes to both. The 50 available tools include merge request approval, pipeline triggering, and job management. Agents can also comment on MRs, assign reviewers, and fetch pipeline logs. If your workflow involves approving code or deploying from chat, this MCP handles it without switching to the GitLab UI.
Why use this instead of GitLab's API directly?
The MCP translates natural language into correct API calls with proper error handling. Instead of writing curl commands or remembering endpoint paths, you tell the agent "create a feature branch from main" and it constructs the POST request with the right project ID and ref. Useful when non-technical team members need to trigger DevOps tasks.
Who on the team should connect the GitLab MCP?
Whoever connects it grants their GitLab permissions to all agents in the workspace. Connect it with a service account or bot user that has Maintainer role on relevant projects, not your personal admin account. That way you can revoke access without losing your own GitLab login, and audit logs show bot activity separately.