Skip to main content
Glama
revenant20
by revenant20
README.md
# gitflic-mcp

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)

**Первый и единственный MCP-сервер для [GitFlic](https://gitflic.ru)** — российской платформы для хостинга Git-репозиториев.

**66 инструментов** покрывающих 13 категорий GitFlic API: проекты, issue, merge request, ветки, коммиты, файлы, теги, релизы, обсуждения, вебхуки, CI/CD и другие.

Построен на TypeScript и [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk).

[English documentation](README.en.md)

## Зачем

- **Единственный MCP-сервер для GitFlic.** Альтернатив нет — если вам нужен AI-агент для работы с GitFlic, это он.
- **Широкое покрытие API.** 66 инструментов из 182 задокументированных эндпоинтов — все ключевые операции для повседневной работы с репозиториями.
- **Готов к работе.** Подключается к Claude Code, Claude Desktop, Cursor и любому другому MCP-совместимому клиенту за минуту.
- **Минимальные зависимости.** Только MCP SDK и Zod — никаких тяжёлых фреймворков.

## Установка

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

- Node.js 18+
- Токен доступа GitFlic

### Сборка

```bash
git clone https://gitflic.ru/project/sazonovfm/gitflic-mcp.git
cd gitflic-mcp
npm install
npm run build
```

### Настройка MCP-клиента

Добавьте сервер в конфигурацию вашего MCP-клиента. Например, для Claude Code (`.mcp.json` в корне проекта):

```json
{
  "mcpServers": {
    "gitflic": {
      "command": "node",
      "args": ["/абсолютный/путь/к/gitflic-mcp/dist/index.js"],
      "env": {
        "GITFLIC_TOKEN": "ваш_токен"
      }
    }
  }
}
```

Токен можно получить в настройках GitFlic: **Настройки** → **Токены доступа**.

| Переменная | Описание | Обязательная |
|---|---|---|
| `GITFLIC_TOKEN` | Токен доступа GitFlic API | да |
| `GITFLIC_API_URL` | Базовый URL API (по умолчанию `https://api.gitflic.ru`) | нет |

## Инструменты

66 инструментов, сгруппированных по 13 категориям. Все параметры пагинации (`page`, `size`) опциональны: `page` по умолчанию 0, `size` по умолчанию 20 (макс. 100).

### Пользователи

#### get_me

Получить текущего авторизованного пользователя.

Параметры: нет.

#### get_user

Получить пользователя по алиасу.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `userAlias` | string | да | Алиас (username) пользователя |

#### list_user_projects

Список публичных проектов пользователя.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `userAlias` | string | да | Алиас пользователя |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

### Проекты

#### list_projects

Список проектов авторизованного пользователя.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `q` | string | нет | Поиск по названию |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_project

Получить проект по владельцу и алиасу.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |

#### search_projects

Поиск публичных проектов.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `q` | string | нет | Поисковый запрос |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### list_shared_projects

Список проектов, к которым предоставлен доступ.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `q` | string | нет | Поиск по названию |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### update_project

Обновить настройки проекта (название, описание, язык, топики).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `title` | string | нет | Название проекта |
| `description` | string | нет | Описание проекта |
| `language` | string | нет | Язык программирования |
| `topics` | string[] | нет | Топики проекта |

#### list_project_members

Список участников проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `q` | string | нет | Поиск по username |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

### Issue

#### list_issues

Список issue проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_issue

Получить issue по локальному ID.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `issue_id` | integer | да | Локальный ID issue |

#### create_issue

Создать новый issue.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `title` | string | да | Заголовок |
| `description` | string | да | Описание |
| `status` | string | нет | Статус: `OPEN` (по умолчанию), `IN_PROGRESS`, `CLOSED`, `COMPLETED` |

#### update_issue

Обновить существующий issue.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `issue_id` | integer | да | Локальный ID issue |
| `title` | string | нет | Новый заголовок |
| `description` | string | нет | Новое описание |
| `status` | string | нет | Новый статус: `OPEN`, `IN_PROGRESS`, `CLOSED`, `COMPLETED` |

### Комментарии к issue

#### list_issue_comments

Список комментариев к issue.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `issue_id` | integer | да | Локальный ID issue |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### add_issue_comment

Добавить комментарий к issue.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `issue_id` | integer | да | Локальный ID issue |
| `text` | string | да | Текст комментария |

### Файлы репозитория

#### get_file_content

Получить содержимое файла (до 15 МБ, только текстовые).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `file` | string | да | Путь к файлу (например `src/index.ts`) |
| `commitHash` | string | да | Хеш коммита или имя ветки |

#### list_files

Список файлов и директорий по указанному пути.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `filepath` | string | нет | Путь к директории (пусто для корня) |
| `branch` | string | нет | Имя ветки |

#### list_files_recursive

Рекурсивный список файлов (дерево репозитория).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `directory` | string | нет | Корневая директория |
| `commitHash` | string | нет | Хеш коммита или имя ветки |
| `depth` | number | нет | Глубина рекурсии (0–10) |

### Merge Request

#### list_merge_requests

Список merge request проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_merge_request

Получить merge request по локальному ID.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |

#### create_merge_request

Создать merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `title` | string | да | Заголовок |
| `description` | string | да | Описание |
| `sourceBranch` | string | да | Исходная ветка |
| `targetBranch` | string | да | Целевая ветка |
| `squashCommit` | boolean | нет | Сжать коммиты при слиянии |
| `removeSourceBranch` | boolean | нет | Удалить исходную ветку после слияния |

#### update_merge_request

Обновить merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_uuid` | string | да | UUID merge request (из ответа get_merge_request) |
| `title` | string | да | Заголовок |
| `targetBranch` | string | да | Целевая ветка |
| `description` | string | нет | Описание |
| `squashCommit` | boolean | нет | Сжать коммиты при слиянии |
| `removeSourceBranch` | boolean | нет | Удалить исходную ветку после слияния |

#### approve_merge_request

Одобрить или отменить одобрение merge request (переключатель).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |

#### merge_merge_request

Выполнить слияние merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `commitMessage` | string | нет | Сообщение коммита слияния |
| `squashCommitMessage` | string | нет | Сообщение squash-коммита |

#### close_merge_request

Закрыть merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |

#### cancel_merge_request

Отменить merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |

### Обсуждения MR

#### list_mr_discussions

Список обсуждений merge request.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_mr_discussion

Получить обсуждение по UUID.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `discussionUuid` | string | да | UUID обсуждения |

#### create_mr_discussion

Создать обсуждение (общий комментарий или к строке кода).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `message` | string | да | Текст сообщения |
| `oldPath` | string | нет | Путь к файлу (старая версия), для комментария к коду |
| `newPath` | string | нет | Путь к файлу (новая версия), для комментария к коду |
| `oldLine` | integer | нет | Номер строки (старая версия) |
| `newLine` | integer | нет | Номер строки (новая версия) |

#### reply_mr_discussion

Ответить в существующем обсуждении.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `discussionUuid` | string | да | UUID обсуждения |
| `message` | string | да | Текст ответа |

#### resolve_mr_discussion

Разрешить (закрыть) обсуждение.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `discussionUuid` | string | да | UUID обсуждения |

#### delete_mr_discussion

Удалить обсуждение (весь тред).

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `mr_id` | integer | да | Локальный ID merge request |
| `discussionUuid` | string | да | UUID обсуждения |

### Ветки

#### list_branches

Список веток проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_branch

Получить ветку по имени.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `branchName` | string | да | Имя ветки |

#### get_default_branch

Получить ветку по умолчанию.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |

#### create_branch

Создать ветку от существующей.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `newBranch` | string | да | Имя новой ветки |
| `originBranch` | string | да | Базовая ветка |

#### delete_branch

Удалить ветку.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `branchName` | string | да | Имя ветки |

> **Внимание:** `delete_branch` не работает на `api.gitflic.ru` — возвращает 405 Method Not Allowed. Это ограничение GitFlic API, не ошибка MCP-сервера. Используйте `git push origin :refs/heads/имя-ветки` как альтернативу.

#### compare_branches

Сравнить две ветки — список изменённых файлов.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `compare` | string | да | Сравниваемая ветка |
| `base` | string | нет | Базовая ветка (по умолчанию — ветка по умолчанию) |

### Коммиты

#### list_commits

Список коммитов ветки.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `branch` | string | нет | Имя ветки (по умолчанию — ветка по умолчанию) |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_commit

Получить коммит по хешу.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `hash` | string | да | Хеш коммита |

#### get_commit_files

Список файлов, изменённых в коммите.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `hash` | string | да | Хеш коммита |

#### diff_commits

Diff между двумя коммитами.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `sourceCommitId` | string | да | Хеш исходного коммита |
| `targetCommitId` | string | да | Хеш целевого коммита |

### Теги

#### list_tags

Список тегов проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_tag

Получить тег по имени.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `tagName` | string | да | Имя тега |

#### create_tag

Создать тег.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `tagName` | string | да | Имя тега |
| `message` | string | нет | Сообщение (аннотированный тег) |
| `commitId` | string | нет | Хеш коммита (указать `commitId` или `branchName`) |
| `branchName` | string | нет | Имя ветки для тега на HEAD (указать `commitId` или `branchName`) |

### Релизы

#### list_releases

Список релизов проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_release

Получить релиз по UUID.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `releaseUuid` | string | да | UUID релиза |

#### get_latest_release

Получить последний релиз проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |

#### create_release

Создать релиз.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `title` | string | да | Название релиза |
| `description` | string | да | Описание релиза |
| `tagName` | string | да | Имя тега |
| `preRelease` | boolean | нет | Пометить как пре-релиз |
| `attachProjectArchive` | boolean | нет | Прикрепить архив проекта |
| `projectArchiveFormat` | string | нет | Формат архива: `zip`, `tar`, `tar.gz`, `tar.xz`, `tar.bz2`, `7z` |

#### update_release

Обновить релиз.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `releaseUuid` | string | да | UUID релиза |
| `title` | string | да | Название релиза |
| `tagName` | string | да | Имя тега |
| `description` | string | нет | Описание релиза |
| `preRelease` | boolean | нет | Пометить как пре-релиз |

#### delete_release

Удалить релиз.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `releaseUuid` | string | да | UUID релиза |

### Вебхуки

#### list_webhooks

Список вебхуков проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### get_webhook

Получить вебхук по ID.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `webhook_id` | string | да | UUID вебхука |

#### create_webhook

Создать вебхук.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `url` | string | да | URL обратного вызова |
| `secret` | string | да | Секретный ключ |
| `events` | string[] | да | Список событий (см. ниже) |

#### update_webhook

Обновить вебхук.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `webhook_id` | string | да | UUID вебхука |
| `url` | string | да | URL обратного вызова |
| `secret` | string | да | Секретный ключ |
| `events` | string[] | да | Список событий (см. ниже) |

#### delete_webhook

Удалить вебхук.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `webhook_id` | string | да | UUID вебхука |

#### События вебхуков

`COLLABORATOR_ADD`, `COLLABORATOR_DELETE`, `COLLABORATOR_UPDATE`, `ISSUE_CREATE`, `ISSUE_UPDATE`, `NEW_ISSUE_NOTE`, `TAG_CREATE`, `TAG_DELETE`, `BRANCH_CREATE`, `BRANCH_UPDATE`, `BRANCH_DELETE`, `MERGE_REQUEST_CREATE`, `MERGE_REQUEST_UPDATE`, `MERGE_REQUEST_CLOSE`, `MERGE_REQUEST_CANCEL`, `MERGE_REQUEST_ACCEPT`, `MERGE`, `DISCUSSION_CREATE`, `DISCUSSION_COMMENT_CREATE`, `PIPELINE_NEW`, `PIPELINE_SUCCESS`, `PIPELINE_FAIL`, `WEBHOOK_SEND`

### CI/CD

#### list_pipelines

Список пайплайнов проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### start_pipeline

Запустить пайплайн.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `refName` | string | нет | Имя ветки или тега (по умолчанию — ветка по умолчанию) |
| `isTag` | boolean | нет | `true`, если `refName` — тег |
| `variables` | object[] | нет | Переменные: `[{"key": "...", "value": "..."}]` |

#### list_pipeline_jobs

Список задач пайплайна.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `pipeline_id` | integer | да | Локальный ID пайплайна |
| `page` | number | нет | Номер страницы (с 0) |
| `size` | number | нет | Элементов на странице |

#### restart_pipeline

Перезапустить пайплайн.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `pipeline_id` | integer | да | Локальный ID пайплайна |

#### cancel_pipeline

Отменить запущенный пайплайн.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `pipeline_id` | integer | да | Локальный ID пайплайна |

#### get_job

Получить информацию о задаче.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `job_id` | integer | да | Локальный ID задачи |

#### list_job_artifacts

Список артефактов задачи.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `job_id` | integer | да | Локальный ID задачи |

#### restart_job

Перезапустить задачу.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `job_id` | integer | да | Локальный ID задачи |

#### cancel_job

Отменить запущенную задачу.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |
| `job_id` | integer | да | Локальный ID задачи |

#### list_cicd_variables

Список CI/CD переменных проекта.

| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| `owner` | string | да | Алиас владельца |
| `project` | string | да | Алиас проекта |

## Известные ограничения

- **`delete_branch` не работает.** GitFlic API на `api.gitflic.ru` не поддерживает метод DELETE для веток (405 Method Not Allowed). Используйте `git push origin :refs/heads/имя-ветки` как альтернативу.
- **CI/CD требует настройки.** Для работы инструментов `start_pipeline`, `restart_pipeline`, `cancel_pipeline` и операций с задачами необходим файл `.gitflic-ci.yaml` в репозитории и подключённый runner.

## Лицензия

[Apache License 2.0](LICENSE)

TDQS

A3.9/5.0

Scored across 66 tools

Disambiguation4/5

Most tools have clear resource-action distinctions, but there are a few potentially confusing pairs: list_user_projects/list_projects/list_shared_projects all list different project subsets, and close_merge_request vs cancel_merge_request differ only in intent. Descriptions clarify the differences, reducing the risk of misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores, using verbs like list, get, create, update, delete, merge, approve, cancel, and start. Even modifiers like recursive or user fit the pattern cleanly, making the naming fully predictable.

Tool Count2/5

With 66 tools, this is far above the 25-tool threshold considered 'too many'. While the server aims to cover a broad platform (GitFlic), the sheer number of tools creates a heavy cognitive load and makes it difficult for an agent to efficiently select the right one.

Completeness3/5

The server covers a wide range of domains: projects, issues, merge requests, branches, commits, tags, releases, discussions, webhooks, and CI/CD. However, there are notable gaps: no create_project or delete_project, no delete_issue, issue creation does not support labels/assignees, and delete_branch is broken due to the API. Core workflows are present, but some lifecycle operations are missing.

Maintenance

ActivityInactive
ResponsivenessNo issues