Provides comprehensive GitLab integration with search across projects, issues, merge requests, users, and groups; code exploration and file browsing; issue and merge request management (create, update); and support for custom GraphQL queries with automatic schema discovery. Supports both GitLab.com and self-hosted instances.
Enables execution of custom GraphQL queries against GitLab's API with automatic schema introspection and discovery of available operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GitLab MCP Serversearch for open issues in the 'web-app' project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GitLab MCP Server
A community MCP server for GitLab — works with any GitLab tier (Free, Premium, Ultimate), no GitLab Duo required.
How This Differs from GitLab's Official MCP Server
GitLab ships an official MCP server (Beta) that requires Premium/Ultimate and GitLab Duo with beta features enabled. This community server is an alternative for teams that don't have those requirements or need different capabilities.
This server | GitLab official | |
GitLab tier | Free, Premium, Ultimate | Premium / Ultimate only |
GitLab Duo required | No | Yes |
Auth | Personal Access Token | OAuth 2.0 Dynamic Client Registration |
Transport | stdio + streamable HTTP | stdio (via |
Multi-client | Claude Code, LibreChat, any MCP client | Claude Desktop, Claude Code, Cursor, VS Code |
Multi-user auth modes | hybrid / shared / per-user | OAuth per-user |
GraphQL schema discovery | Yes — introspect & run custom queries | No |
Repository browsing & file reading | Yes | No |
User / group search | Yes | No |
Update issues & MRs | Yes | No (create only) |
CI/CD pipeline management | Yes | Yes |
MR diffs & commits | Yes | Yes |
Work item notes | Yes | Yes |
Semantic code search | No | Yes (requires additional setup) |
Label search | Yes | Yes |
Milestone tracking | Yes | No |
Iteration/sprint tracking | Yes | No |
Time tracking & timelogs | Yes | No |
MR reviewer & approval status | Yes | No |
Project statistics dashboard | Yes | No |
Group member listing | Yes | No |
Choose this server if you're on GitLab Free/Community Edition, need GraphQL flexibility, want repo browsing, or run LibreChat multi-user deployments.
Choose the official server if you have GitLab Premium/Ultimate with Duo, need semantic code search, or prefer OAuth over PATs.
Quick Start
1. Create a GitLab Token
Go to GitLab → User Settings → Access Tokens → create a token with read_api (read-only) or api (full access) scope.
2. Choose Your Client
Claude Code — stdio transport, single-user
LibreChat (Docker) — streamable HTTP, multi-user with per-user auth
Claude Code
Add to your Claude Code settings (.claude/settings.json or project .mcp.json):
Restart Claude Code to load the server.
LibreChat (Docker)
Runs as a sidecar container using streamable HTTP transport for multi-user deployments with per-user credential isolation.
1. Add environment variables to your LibreChat .env:
2. Add the service to docker-compose.override.yml:
Copy the Dockerfile from this repo into your LibreChat directory as Dockerfile.mcp-gitlab. It clones and builds from this repository automatically — no source files needed.
3. Configure in librechat.yml:
4. Restart LibreChat:
Available Tools
Search & Discovery
Tool | Description |
| Global search across projects, issues, and merge requests |
| Find repositories by name or description |
| Search issues globally or within a project (filter by assignee, author, labels, state) |
| Find merge requests by username or within a project |
| Find team members and contributors |
| Discover groups and organizations |
| Search labels in a project or group |
| List group members with access levels |
| Explore directory structure and files |
| Read file contents for code analysis |
Read Operations
Tool | Description |
| Detailed project information |
| List project issues with pagination |
| List project merge requests with pagination |
| Get CI/CD pipelines for a merge request |
| Get jobs for a specific pipeline |
| Get diff statistics for a merge request |
| Get commits for a merge request |
| Get notes/comments on an issue or merge request |
| List milestones with progress statistics |
| List iterations/sprints (Premium/Ultimate) |
| Get time estimate, spent, and timelogs |
| Get MR approval and reviewer status |
| Aggregate project stats dashboard |
| Get all issues assigned to a user |
| Get MRs authored by or assigned to a user |
| Resolve a path to a project or group |
| Discover available GraphQL operations |
| Run custom GraphQL queries |
Write Operations (requires user authentication)
Tool | Description |
| Create new issues |
| Create new merge requests |
| Add a comment/note to an issue or merge request |
| Retry or cancel a CI/CD pipeline |
| Update title, description, assignees, labels, due date |
| Update title, description, assignees, reviewers, labels |
Configuration
Authentication Modes
Mode | Description | Use Case |
hybrid (default) | Shared token for reads + per-user tokens for writes | Multi-user deployments |
shared | Single token for all operations | Single-user / trusted environments |
per-user | All operations require user authentication | High-security environments |
Environment Variables
Variable | Description | Default |
| GitLab instance URL |
|
| Authentication mode ( |
|
| Shared token for read operations | — |
| Maximum items per page (1-100) |
|
| Request timeout in milliseconds |
|
| HTTP server port (LibreChat mode) |
|
| Transport mode ( | stdio |
Troubleshooting
Connection issues with LibreChat:
Verify
type: streamable-httpinlibrechat.yml(notsse)URL should be
http://gitlab-mcp:8008/(the Docker service name, not localhost)Ensure both containers share the same Docker network
Check logs:
docker logs gitlab-mcp
Authentication errors:
Verify token has
read_apiorapiscope and hasn't expiredFor LibreChat: check the user provided a valid PAT in the credentials UI
Schema introspection failed:
Requires GitLab 12.0+ with GraphQL API enabled
Verify
GITLAB_URLis reachable from the container
Debug logging:
Health check (HTTP mode):
Testing
Contributing
Fork the repository
Create a feature branch
Submit a pull request
License
MIT