gitlab-mcp-swift

doozMen/gitlab-mcp-swift

3.2

If you are the rightful owner of gitlab-mcp-swift 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.

The GitLab MCP Server is a Swift-based server that integrates GitLab CLI functionality into AI assistants using the Model Context Protocol.

Tools
5
Resources
0
Prompts
0

GitLab MCP Server (Swift)

A Model Context Protocol (MCP) server that wraps the GitLab CLI (glab) to provide GitLab functionality to AI assistants like Claude Desktop.

Features

  • šŸš€ Native Swift implementation using the official MCP Swift SDK
  • šŸ”§ Full GitLab CLI integration - supports all glab commands
  • šŸŽÆ Smart prompts for common workflows (merge requests, CI/CD, daily standup)
  • šŸ“Š JSON output parsing with fallback to plain text
  • šŸ” Secure authentication via system glab credentials
  • ⚔ High performance with Swift's async/await concurrency

Prerequisites

  • macOS (Swift 5.9+ installed via Xcode)
  • glab CLI installed and authenticated
  • Claude Desktop or another MCP-compatible client

Installation

Quick Install

# Clone the repository
git clone https://github.com/yourusername/gitlab-mcp-swift.git
cd gitlab-mcp-swift

# Run the install script
./install.sh

The install script will:

  1. Build the server using Swift Package Manager
  2. Install it to ~/.swiftpm/bin/git-lab-mcp
  3. Display the configuration for Claude Desktop

Manual Installation

# Build the project
swift build -c release

# Install to a location in your PATH
cp .build/release/git-lab-mcp ~/.swiftpm/bin/

Configuration

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "gitlab": {
      "command": "/Users/YOUR_USERNAME/.swiftpm/bin/git-lab-mcp",
      "args": ["--log-level", "info"],
      "env": {
        "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

Authentication

The server uses your existing glab CLI authentication:

# Login to GitLab
glab auth login

# Check authentication status
glab auth status

Available Tools

Core Tools

  • glab_mr - Merge request operations (list, create, view, merge, approve)
  • glab_issue - Issue management (list, create, view, close, update)
  • glab_ci - CI/CD pipeline operations (view, list, run, retry)
  • glab_repo - Repository operations (clone, fork, view, archive)
  • glab_api - Direct GitLab API access
  • glab_auth - Authentication management
  • glab_version - Version information
  • glab_raw - Execute any glab command directly

Prompts

The server includes intelligent prompts for common workflows:

  • my-mrs - Check your merge requests
  • create-mr - Create a merge request with guided parameters
  • daily-standup - Gather GitLab activity for daily standups
  • review-pipeline - Review CI/CD pipeline status

Usage Examples

Check Your Merge Requests

Use the prompt "my-mrs" to see all your open merge requests

Create a Merge Request

Use the prompt "create-mr" with:
- title: "Fix: Memory leak in user service"
- source_branch: "fix/memory-leak"
- target_branch: "main"

Run CI/CD Pipeline

Use tool "glab_ci" with:
- subcommand: "run"
- repo: "myteam/myproject"

Development

Building from Source

# Clone the repository
git clone https://github.com/yourusername/gitlab-mcp-swift.git
cd gitlab-mcp-swift

# Build in debug mode
swift build

# Run tests
swift test

# Build for release
swift build -c release

Project Structure

gitlab-mcp-swift/
ā”œā”€ā”€ Sources/
│   └── GitLabMCP/
│       ā”œā”€ā”€ GitLabMCPServer.swift    # Main server implementation
│       ā”œā”€ā”€ GitLabMCPCommand.swift   # CLI entry point
│       └── GitLabCLI.swift          # GitLab CLI wrapper
ā”œā”€ā”€ Package.swift                     # Swift package manifest
ā”œā”€ā”€ install.sh                        # Installation script
└── README.md                         # This file

Troubleshooting

Server fails to start

  • Ensure glab is installed: which glab
  • Check authentication: glab auth status
  • Run with debug logging: --log-level debug

Commands return "not authenticated"

  • Run glab auth login to authenticate
  • For self-hosted instances: glab auth login --hostname your.gitlab.instance

MCP connection issues

  • Restart Claude Desktop after configuration changes
  • Check the logs in Claude Desktop's developer console
  • Verify the executable path is correct in the configuration

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

MIT License - see LICENSE file for details

Acknowledgments