mcp-server-gitlab
2
The mcp-gitlab project is an integration server that connects GitLab with other platforms using the fastmcp framework. It offers various tools for interacting with the GitLab API, allowing users to search projects, update merge requests, and more.
mcp-gitlab MCP Server (English)
A GitLab integration server built on the fastmcp framework, providing various GitLab RESTful API tools. Supports integration with Claude, Smithery, and other platforms.
Features
- GitlabSearchUserProjectsTool: Search users and their active projects by username
- GitlabGetUserTasksTool: Get current user's pending tasks
- GitlabSearchProjectDetailsTool: Search projects and details
- GitlabCreateMRCommentTool: Add comments to merge requests
- GitlabAcceptMRTool: Accept and merge merge requests
- GitlabUpdateMRTool: Update merge request assignee, reviewers, title, description, and labels
- GitlabCreateMRTool: Create a new merge request with assignee and reviewers
- GitlabRawApiTool: Call any GitLab API with custom parameters
Quick Start
# Install dependencies
bun install
# Build the project
bun run build
# Start the server
bun run start
Environment Variables
GITLAB_API_URL=https://your-gitlab-instance.com
GITLAB_TOKEN=your_access_token
# Optional: Provide a mapping from usernames to user IDs (JSON string)
# This can reduce API calls, especially when referencing the same users frequently
# Example: '{"username1": 123, "username2": 456}'
GITLAB_USER_MAPPING={"username1": 123, "username2": 456}
# Optional: Provide a mapping from project names to project IDs (JSON string)
# Project IDs can be numbers or strings (e.g., 'group/project')
# This can reduce API calls and ensure the correct project is used
# Example: '{"project-name-a": 1001, "group/project-b": "group/project-b"}'
GITLAB_PROJECT_MAPPING={"project-name-a": 1001, "group/project-b": "group/project-b"}
Usage Examples
See for detailed examples of each tool's parameters.
Project Structure
src/
├── server/
│ └── GitlabMCPServer.ts # MCP server entry point
├── tools/
│ ├── GitlabAcceptMRTool.ts
│ ├── GitlabCreateMRCommentTool.ts
│ ├── GitlabGetUserTasksTool.ts
│ ├── GitlabRawApiTool.ts
│ ├── GitlabSearchProjectDetailsTool.ts
│ ├── GitlabSearchUserProjectsTool.ts
│ └── gitlab/
│ ├── FieldFilterUtils.ts
│ ├── GitlabApiClient.ts
│ └── GitlabApiTypes.ts
├── utils/
│ ├── is.ts
│ └── sensitive.ts
smithery.json # Smithery config
USAGE.md # Usage examples
package.json
tsconfig.json
Integration
Claude Desktop Client
Add to your config:
{
"mcpServers": {
"@zephyr-mcp/gitlab": {
"command": "npx",
"args": ["-y", "@zephyr-mcp/gitlab"]
}
}
}
Smithery
Use directly on Smithery platform:
smithery add @zephyr-mcp/gitlab
Or search "@zephyr-mcp/gitlab" in Smithery UI and add to your workspace.
Environment variables:
GITLAB_API_URL
: Base URL of your GitLab APIGITLAB_TOKEN
: Access token for GitLab API authentication