developer-toolsoauth2

GitLab

Git hosting, merge requests, pipelines.

Verdict

GitLab via MCP exposes merge requests, issues, pipelines, and repository content. The right pick if your team is on GitLab instead of GitHub — most of the same wins apply. What we notice: MR review and pipeline triage are the consistent wins. The model can pull a failing pipeline log, tell you what stage failed and why, and suggest the fix in one round trip. Issue triage works well too — "summarise the open bugs in the auth project", "what's been waiting for review longest". GitLab's API is generally cleaner than GitHub's at this level, so MCP responses tend to be more compact and faster. Best for: self-hosted GitLab teams that want AI-driven MR review without leaving the platform; pipeline failure triage; weekly issue summaries; bridging GitLab and Slack/Jira workflows where the model coordinates across systems. Avoid for: very large monorepos where the MCP's repo listing is unwieldy (use git directly for those); workflows that depend on GitLab CI/CD specifics the MCP doesn't yet model (custom runners, advanced rules); orgs running ancient self-hosted GitLab versions where the API surface is older than the MCP assumes. Practical frame: free for public projects; team plans unlock the API for private repos. Token cost is small for metadata queries, larger for pipeline logs. Most useful as the connective tissue between GitLab and the rest of your AI workflow.

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 Project
    destructive

    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

  1. 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

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

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 branch
Open in a Space →

Archive Finished Project

@GitLab archive the project 'legacy-api-v1' since we've migrated all traffic to v2
Open in a Space →

List Open Issues

@GitLab show me all open issues in project 'backend-services' labeled 'bug' and sort by creation date
Open 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.

Prompt

@gitlab list all open issues in the api-gateway project assigned to me, grouped by milestone

Output

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.

Notes

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.

Prompt

@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

Output

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.

Notes

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).

Prompt

@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

Output

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.

Notes

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

Client project handoff at agencies

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.

Sprint kickoff branch creation

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.

Support ticket knowledge base sync

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.

Compare with

Compare with anything else →
Data last verified 7 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.