GitLab MCP Server
GitLab MCP Server
@anupsahu/gitlab-mcp
MCP (Model Context Protocol) server for GitLab API with OAuth 2.0 PKCE authentication.
Features
🔐 OAuth 2.0 PKCE Authentication - Secure authentication with token persistence
🔄 Automatic Token Refresh - Seamless token renewal with retry logic
📁 Complete GitLab API Coverage - Merge requests, issues, files, commits, and more
💾 Token Persistence - Sessions survive server restarts
🛡️ Production Ready - Clean codebase with comprehensive error handling
🔧 Easy Configuration - Simple setup with environment variables
Installation
npm install -g @anupsahu/gitlab-mcpQuick Start
1. OAuth Authentication (Recommended)
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "@anupsahu/gitlab-mcp"],
"env": {
"USE_OAUTH": "true",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
}
}2. Personal Access Token (Alternative)
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "@anupsahu/gitlab-mcp"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
"GITLAB_API_URL": "https://gitlab.com/api/v4"
}
}
}
}OAuth Authentication
The server supports OAuth 2.0 PKCE authentication for secure access to GitLab:
Start the server with
USE_OAUTH=trueAuthenticate using the
oauth_login_pkcetoolTokens are automatically saved and persist across restarts
Port requirement: OAuth callback always uses http://localhost:7171 for compatibility with GitLab's official OAuth app. Ensure port 7171 is free during authentication.
Automatic token refresh handles expiration seamlessly
OAuth Tools
oauth_login_pkce- Initiate OAuth authenticationoauth_status- Check authentication statusoauth_logout- Logout and clear tokens
Configuration
Environment Variables
Variable | Description | Default |
| Enable OAuth 2.0 authentication |
|
| GitLab API URL |
|
| Personal access token (if not using OAuth) | - |
| Default project ID | - |
| Comma-separated list of allowed project IDs | - |
| Enable read-only mode |
|
| Preferred localhost callback port |
|
| Fallback range for callback port (inclusive) |
|
Available Tools
Repository Operations
search_repositories- Search for repositoriesget_repository_tree- Get repository file treeget_file_contents- Read file contentscreate_or_update_file- Create or update filespush_files- Push multiple files
Merge Request Operations
get_merge_request- Get merge request detailsget_merge_request_diffs- Get merge request changescreate_merge_request- Create new merge requestupdate_merge_request- Update merge requestmerge_merge_request- Merge a merge request
Issue Operations
create_issue- Create new issueget_issue- Get issue detailsupdate_issue- Update issuelist_issues- List issues
Commit Operations
list_commits- List repository commitsget_commit- Get commit detailsget_commit_diff- Get commit changes
Branch Operations
create_branch- Create new branchfork_repository- Fork repository
Token Storage
OAuth tokens are automatically saved to:
Path:
~/.config/gitlab-mcp/oauth-config.jsonFormat: JSON configuration file
Persistence: Tokens survive server restarts
Security: Automatic token refresh and expiration handling
Examples
Authenticate with OAuth
// Use the oauth_login_pkce tool
{
"sessionId": "my-session" // optional
}Get Merge Request Details
{
"project_id": "12345",
"merge_request_iid": "123",
"sessionId": "my-session"
}Create Issue
{
"project_id": "12345",
"title": "Bug Report",
"description": "Description of the issue",
"sessionId": "my-session"
}Development
# Clone repository
git clone https://gitlab.com/anupsahu/gitlab-mcp.git
cd gitlab-mcp
# Install dependencies
npm install
# Build
npm run build
# Run with OAuth
USE_OAUTH=true GITLAB_API_URL=https://gitlab.com/api/v4 node build/index.jsLicense
MIT License - see LICENSE file for details.
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a merge request
Support
For issues and questions:
Create an issue in the GitLab repository
Check existing documentation and examples
Built with ❤️ for the MCP ecosystem
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/anupsahu/gitlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server