GitLab MCP Server

GitLab MCP Server

Enables AI assistants to interact seamlessly with self-hosted GitLab instances, supporting repository operations, issue management, merge requests, CI/CD pipelines, and more.

Category
访问服务器

README

GitLab MCP Server

A production-ready Model Context Protocol (MCP) server that enables AI assistants like Claude Code to interact seamlessly with self-hosted GitLab instances.

PyPI version Tests Coverage Python Type Checked Code Style License

Overview

The GitLab MCP Server provides a complete, type-safe interface for AI assistants to interact with GitLab, supporting:

  • Repository Operations: Search code, browse files, manage branches and commits
  • Issue Management: Create, update, close issues, manage labels and comments
  • Merge Requests: Complete MR workflows including creation, review, approval, and merging
  • CI/CD Pipelines: Monitor pipeline status, trigger jobs, access artifacts and logs
  • Project Management: Milestones, labels, project settings
  • Security & Compliance: Security scanning results, vulnerability tracking
  • Advanced Features: Wikis, snippets, releases, user/group management

Built with strict Test-Driven Development (TDD) practices, featuring 1257 tests and 84% code coverage.

Transport Modes: stdio (default) and Streamable HTTP for remote clients Slim Mode: 3 meta-tools for 95% context reduction in LLM conversations

Features

Complete Tool Suite (87 Tools + 14 Prompts + 13 Resources)

Repository Tools (16)

  • Search repositories, code, and commits
  • Browse files and directory trees
  • Create, update, delete files
  • Manage branches and tags
  • View commit history and diffs
  • Compare branches

Issue Tools (8)

  • Create, read, update, close issues
  • Reopen closed issues
  • Add comments and list comments
  • Search and filter issues

Merge Request Tools (14)

  • Create and manage merge requests
  • Review code and add comments
  • Approve and merge MRs
  • Manage reviewers and assignees
  • Track MR pipelines and changes

CI/CD Pipeline Tools (14)

  • List and monitor pipelines
  • Create, retry, cancel, delete pipelines
  • View job logs and status
  • Download and manage artifacts
  • Retry and cancel jobs
  • Play manual jobs

Project Management Tools (10)

  • Create, search, and manage projects
  • View project statistics
  • Manage milestones
  • Handle project members

Labels, Wikis, Snippets, Releases (19)

  • Label management (4 tools)
  • Wiki page operations (5 tools)
  • Code snippets (5 tools)
  • Release management (5 tools)

Users & Groups (6)

  • User lookup and search
  • Group listing and details
  • Group member management

Meta Tools (3) - Slim Mode

  • discover_tools - List available tools by category
  • get_tool_schema - Get JSON schema for any tool
  • execute_tool - Execute any tool dynamically

🔒 Security First

  • Personal Access Token (PAT) authentication
  • Environment-based credential management
  • SSL/TLS verification with custom certificate support
  • Secure credential storage using .env files (gitignored)
  • Token scope validation and error handling

🚀 Performance Optimized

  • Async/await throughout for non-blocking operations
  • Efficient pagination for large datasets
  • Configurable timeouts and retry logic
  • Connection pooling via httpx
  • Smart rate limiting awareness

Thoroughly Tested

  • 1257 tests passing (100% pass rate)
  • 84% code coverage (exceeds 80% requirement)
  • Unit tests with mocked dependencies
  • Integration tests with real GitLab API
  • E2E tests validating full MCP protocol
  • Type-safe with mypy validation

Quick Start

Prerequisites

  • Python 3.10+
  • GitLab instance (self-hosted CE/EE v15.0+ or GitLab.com)
  • GitLab Personal Access Token with appropriate scopes

Installation

# Install from PyPI
pip install python-gitlab-mcp

# Or install from source
git clone https://github.com/wadew/gitlab-mcp.git
cd gitlab-mcp
pip install -e ".[dev]"

Configuration

1. Create Personal Access Token

Create a GitLab Personal Access Token with these scopes:

  • api - Full API access
  • read_repository - Read repository content
  • write_repository - Write repository content

See docs/user/installation.md for detailed instructions.

2. Configure Environment Variables

Create a .env file in your project:

# Required
GITLAB_URL=https://gitlab.example.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

# Optional
GITLAB_DEFAULT_PROJECT=mygroup/myproject
GITLAB_TIMEOUT=30
GITLAB_VERIFY_SSL=true

3. Configure Claude Code

Add to your Claude Code MCP settings (~/.claude/mcp.json):

{
  "mcpServers": {
    "gitlab": {
      "command": "python",
      "args": ["-m", "gitlab_mcp.server"],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

See docs/user/configuration.md for advanced configuration options.

Verify Installation

# Activate environment (if using venv)
source .venv/bin/activate

# Test GitLab connection
python -c "from gitlab_mcp.client import GitLabClient; client = GitLabClient(); print('Connected!')"

Usage Examples

Search Code Across Projects

# Claude Code can now do:
# "Search for 'authentication' in all repositories"

# This uses the MCP tool:
search_code(query="authentication", scope="global")

Create and Manage Issues

# "Create an issue for the login bug in my-project"
create_issue(
    project_id="mygroup/my-project",
    title="Fix login authentication bug",
    description="Users cannot log in with SSO",
    labels=["bug", "security"]
)

# "Add a comment to issue #42"
add_issue_comment(
    project_id="mygroup/my-project",
    issue_id=42,
    body="This is related to the auth refactoring in MR !123"
)

Manage Merge Requests

# "Create a merge request from feature-branch to main"
create_merge_request(
    project_id="mygroup/my-project",
    source_branch="feature-branch",
    target_branch="main",
    title="Add OAuth2 support",
    description="Implements OAuth2 authentication flow"
)

# "Approve merge request !25"
approve_merge_request(
    project_id="mygroup/my-project",
    mr_iid=25
)

Monitor CI/CD Pipelines

# "Show me the latest pipeline status"
list_pipelines(
    project_id="mygroup/my-project",
    limit=1
)

# "Get logs from the failed job"
get_job_log(
    project_id="mygroup/my-project",
    job_id=12345
)

See docs/user/usage_examples.md for comprehensive examples.

Documentation

User Documentation

API Reference

Architecture

Development

Development

Setup Development Environment

# Clone repository
git clone https://github.com/wadew/gitlab-mcp.git
cd gitlab-mcp

# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment
uv venv

# Activate virtual environment
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install development dependencies
uv pip install -e ".[dev]"

Running Tests

# Run all tests (unit + e2e)
pytest tests/unit/ tests/e2e/ -v

# Run with coverage
pytest tests/unit/ tests/e2e/ --cov=src/gitlab_mcp --cov-report=term-missing

# Run integration tests (requires GitLab instance)
source .env
export GITLAB_TEST_PROJECT_ID="mcps/gitlab_mcp"
pytest tests/integration/ -v -m integration

# Run specific test types
pytest tests/unit/ -v -m unit
pytest tests/e2e/ -v -m e2e

# Type checking
mypy src/gitlab_mcp

# Code formatting
black src/ tests/

# Linting
ruff check src/ tests/

Quality Standards

This project follows strict TDD practices:

  • ✅ Tests first: Write failing tests, then implement
  • ✅ 80%+ coverage: Minimum code coverage requirement
  • ✅ 100% pass rate: All tests must pass before commit
  • ✅ Type safety: Full mypy compliance
  • ✅ Code quality: Black formatting, Ruff linting
  • ✅ Documentation: Every function, class, and module

See CLAUDE.md for complete development guidelines.

Project Structure

gitlab_mcp/
├── src/gitlab_mcp/              # Source code
│   ├── server.py                # Main MCP server
│   ├── config/                  # Configuration management
│   ├── client/                  # GitLab API client wrapper
│   ├── tools/                   # MCP tool implementations (87 tools)
│   ├── schemas/                 # Pydantic data models
│   └── utils/                   # Shared utilities
├── tests/                       # Test suite (1257 tests)
│   ├── unit/                    # Unit tests (mocked)
│   ├── integration/             # Integration tests (real API)
│   └── e2e/                     # End-to-end MCP tests
├── docs/                        # Documentation
│   ├── user/                    # User guides
│   ├── api/                     # API reference
│   ├── architecture/            # System design
│   └── session_management/      # Development logs
├── CLAUDE.md                    # Development ground rules
├── next_session_plan.md         # Current development state
└── pyproject.toml               # Project metadata

Contributing

We welcome contributions! Before contributing:

  1. Read CLAUDE.md for development ground rules
  2. Check next_session_plan.md for current work
  3. Write tests first (TDD required)
  4. Ensure 80%+ coverage and 100% test pass rate
  5. Update documentation for user-facing changes
  6. Follow type hints and code quality standards

Commit Message Format

<type>(<scope>): <subject>

<body>

Coverage: X% (±Y%)
Tests: N passing

Types: feat, fix, docs, test, refactor, chore

Development Phases

  • Phase 1: Foundation (Server, Config, Client, Auth)
  • Phase 2: Repository & Issues Tools
  • Phase 3: Merge Requests & Pipelines Tools
  • Phase 4: Advanced Features (Security, Wikis, etc.)
  • Phase 5: Meta-tools & Streamable HTTP Transport
  • Phase 6: Public Release (PyPI + GitHub)

Roadmap

v1.1.0 (Next Release)

  • Additional GitLab API coverage
  • Performance optimization for large repositories
  • Enhanced error messages and debugging tools
  • WebSocket transport support

License

MIT License - See LICENSE file for details.

Support

  • Issues: https://github.com/wadew/gitlab-mcp/issues
  • Documentation: https://github.com/wadew/gitlab-mcp#documentation
  • MCP Protocol: https://modelcontextprotocol.io

Acknowledgments

Built with:


Built with strict TDD practices. 1257 tests. 84% coverage. Production-ready.

Made with care for the GitLab and AI communities.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选