mcp-server-gitlab

ZephyrDeng/mcp-server-gitlab

3.3

If you are the rightful owner of mcp-server-gitlab and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A GitLab integration server built on the fastmcp framework, providing various GitLab RESTful API tools.

Tools
3
Resources
0
Prompts
0

Build Status Node Version

Downloads npm version smithery badge

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 API
  • GITLAB_TOKEN: Access token for GitLab API authentication

Related Links