Skip to main content
Glama
README.md
# GitLab MCP Server

Подключите ваш AI-ассистент к GitLab. Задавайте вопросы прямо в чате: _"Покажи открытые merge request'ы"_, _"Покажи ревью для MR #123"_, _"Найди merge request'ы для ветки feature/auth"_.

## 🚀 Быстрая установка

### Требования

Проект использует [uv](https://github.com/astral-sh/uv) для управления Python-пакетами.

**Установка uv:**

```bash
# macOS и Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Или через pip
pip install uv
```

### Установка

1. **Установите сервер:**

   ```bash
   git clone https://github.com/FitoDomik/gitlab-mcp-server.git
   cd gitlab-mcp-server
   uv venv
   source .venv/bin/activate  # На Windows: .venv\Scripts\activate
   uv pip install -e .
   chmod +x run-mcp.sh
   ```

2. **Получите токен GitLab:**

   - Перейдите в GitLab → Settings → Access Tokens
   - Создайте токен с правами **`read_api`**
   - Скопируйте токен

3. **Настройте проект:**

   Создайте файл `gitlab-mcp.env` в директории вашего проекта:

   ```env
   GITLAB_PROJECT_ID=12345
   GITLAB_ACCESS_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
   GITLAB_URL=https://gitlab.com
   ```

4. **Подключите к Cursor:**

   Создайте `.cursor/mcp.json` в вашем проекте:

   ```json
   {
     "mcpServers": {
       "gitlab-mcp": {
         "command": "/путь/к/gitlab-mcp-server/run-mcp.sh",
         "cwd": "/путь/к/вашему-проекту"
       }
     }
   }
   ```

5. **Перезапустите Cursor** и начните задавать вопросы о GitLab!

## 💬 Что можно делать

После подключения попробуйте эти команды в чате:

- _"Покажи открытые merge request'ы"_
- _"Покажи детали merge request #456"_
- _"Покажи ревью и обсуждения для MR #123"_
- _"Покажи сводку тестов для MR #456"_
- _"Какие тесты упали в merge request #789?"_
- _"Покажи pipeline для MR #456"_
- _"Покажи логи упавшего job для merge request #789"_
- _"Покажи обсуждения коммитов для MR #456"_
- _"Найди merge request'ы для ветки feature/auth-improvements"_
- _"Ответь на обсуждение abc123 в MR #456: 'Спасибо за фидбек!'"_

## 📋 Основные возможности

### Merge Request'ы

- Просмотр списка MR с фильтрацией по статусу и ветке
- Детальная информация о конкретном MR
- Поиск MR по имени ветки

### Ревью и обсуждения

- Просмотр всех ревью и обсуждений в MR
- Ответы на существующие обсуждения
- Создание новых комментариев
- Разрешение обсуждений

### Тесты и Pipeline

- **Сводка тестов** — быстрый обзор результатов (количество пройденных/упавших тестов)
- **Детальный отчет** — полная информация о тестах с ошибками и стектрейсами
- **Pipeline** — обзор всех job'ов и их статусов
- **Логи job'ов** — просмотр вывода конкретного job'а

### Коммиты

- Просмотр всех обсуждений на коммитах в MR
- История комментариев по каждому коммиту

## ⚙️ Конфигурация

### Настройка проекта (рекомендуется)

Каждый проект имеет свой файл `gitlab-mcp.env` с настройками GitLab. Не добавляйте токены в систему контроля версий.

### Глобальная настройка

Можно задать переменные окружения глобально:

```bash
export GITLAB_PROJECT_ID=12345
export GITLAB_ACCESS_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
export GITLAB_URL=https://gitlab.com
```

### Как найти Project ID

- Перейдите в GitLab проект → Settings → General → Project ID
- Или посмотрите в URL: `https://gitlab.com/username/project` (используйте числовой ID)

## 🔧 Решение проблем

**Ошибка аутентификации**: Проверьте, что токен имеет права `read_api` и не истёк.

**Проект не найден**: Убедитесь, что Project ID указан правильно (это число, а не название проекта).

**Проблемы с подключением**: Проверьте, что URL GitLab доступен и указан верно.

**Скрипт не найден**: Убедитесь, что путь в конфигурации MCP указывает на правильное расположение сервера и скрипт исполняемый.

## 📚 Справочник инструментов

| Инструмент                          | Описание                          | Параметры                                    |
| ----------------------------------- | --------------------------------- | -------------------------------------------- |
| `list_merge_requests`               | Список merge request'ов          | `state`, `target_branch`, `limit`            |
| `get_merge_request_details`         | Детали MR                         | `merge_request_iid`                          |
| `get_pipeline_test_summary`         | Сводка тестов (быстрый обзор)     | `merge_request_iid`                          |
| `get_merge_request_test_report`     | Детальный отчет о тестах          | `merge_request_iid`                          |
| `get_merge_request_pipeline`        | Pipeline со всеми job'ами         | `merge_request_iid`                          |
| `get_job_log`                       | Логи конкретного job'а            | `job_id`                                     |
| `get_merge_request_reviews`         | Ревью и обсуждения                | `merge_request_iid`                          |
| `get_commit_discussions`            | Обсуждения на коммитах            | `merge_request_iid`                          |
| `get_branch_merge_requests`         | Поиск MR по ветке                 | `branch_name`                                |
| `reply_to_review_comment`           | Ответ на обсуждение               | `merge_request_iid`, `discussion_id`, `body` |

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources and actions in GitLab's merge request and pipeline workflows. For example, get_merge_request_test_report provides detailed test failures, while get_pipeline_test_summary offers a lightweight overview, and tools like create_review_comment and reply_to_review_comment handle distinct aspects of review discussions. There is no overlap that would cause misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout, such as get_merge_request_details, list_merge_requests, and create_review_comment. This predictability makes it easy for agents to understand and use the tools without confusion from mixed conventions.

Tool Count5/5

With 12 tools, the server is well-scoped for its purpose of managing GitLab merge requests, reviews, and pipelines. Each tool earns its place by covering specific aspects like discussions, test reports, and job logs, providing comprehensive functionality without being overwhelming or sparse.

Completeness5/5

The tool set offers complete coverage for the domain of GitLab merge request and pipeline management, including CRUD-like operations for reviews (create, reply, resolve), detailed data retrieval (details, discussions, test reports), and pipeline monitoring (jobs, logs, summaries). There are no obvious gaps that would cause agent failures, covering core workflows end-to-end.