feat: добавить поддержку GitLab (api, clients, tools) и обновить документацию

This commit is contained in:
2026-04-14 12:57:47 +03:00
parent e96bab114e
commit b5fe2623b3
17 changed files with 3479 additions and 39 deletions

166
README.md
View File

@@ -2,7 +2,7 @@
![LazyBear Logo](logo.png)
**.NET 10 сервер Model Context Protocol (MCP) для интеграции с Jira, Confluence и Kubernetes.**
**.NET 10 сервер Model Context Protocol (MCP) для интеграции с Jira, Confluence, Kubernetes и GitLab.**
---
@@ -13,6 +13,7 @@
| 📋 **Jira** | Работа с задачами, JQL, комментариями | ✅ Доступно |
| 📄 **Confluence** | Работа со страницами и пространствами | ✅ Доступно |
| ☸️ **Kubernetes** | Управление деплоями, подами, сетями | ✅ Доступно |
| 🌳 **GitLab** | Работа с репозиториями, MR, Issue, ветками, тегами | ✅ Доступно |
| 🖥️ **TUI** | Интерактивная консольная панель | ✅ Доступно |
| 🌐 **Localization** | Многоязычный интерфейс (RU/EN) | ✅ Доступно |
@@ -21,26 +22,29 @@
## 🏗️ Архитектура
```
┌───────────────────────────────────────────────────────────┐
┌───...──────────────────────────────────────────────────────┐
│ HTTP Transport Layer (ASP.NET Core) │
│ └── ModelContextProtocol 1.2.0 HTTP транспорт │
└───────────────────────────────────────────────────────────┘
└───...──────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────┐
┌───...──────────────────────────────────────────────────────┐
│ Application Layer (Razor Pages UI) │
│ └── Web-страницы для мониторинга K8s │
└───────────────────────────────────────────────────────────┘
└───...──────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────┐
Kubernetes Layer (Kubernetes Client)
── Подключение к K8s API сервер через kubeconfig
└───────────────────────────────────────────────────────────┘
┌───...──────────────────────────────────────────────────────┐
Integration Layers
── Jira API (REST)
│ ├── Confluence API (REST) │
│ ├── Kubernetes API (REST) │
│ └── GitLab API (REST) │
└───...──────────────────────────────────────────────────────┘
```
**Потоки данных:**
1. **Initialize Flow**: Клиент → HTTP → Application → K8s Client → K8s API
2. **Tools Flow**: Клиент → RPC → Tools → [Jira/Confluence/K8s] → Возврат результата
1. **Initialize Flow**: Клиент → HTTP → Application → Integration Client → API
2. **Tools Flow**: Клиент → RPC → Tools → [Jira/Confluence/K8s/GitLab] → Возврат результата
3. **Health Check Flow**: `/health` → HTTP → Liveness probe → Status
---
@@ -51,6 +55,7 @@
- .NET 10 SDK
- Kubectl и kubeconfig
- GitLab Personal Access Token (опционально)
- Docker Desktop (опционально)
### Запуск
@@ -125,11 +130,7 @@ docker run -p 5000:5000 -v $HOME/.kube:/root/.kube:ro lazybear-mcp
"params": {
"spaceKey": "LAZYBEAR",
"title": "Инструкция по развёртыванию",
"body": "# Инструкция по развёртыванию\n\nШаг 1: Клонируйте репозиторий...",
"parentPageId": null
}
}
```
"body": "# Инструкция по развёртыванию\n\nШаг 1: Клонируйте репозиторий.
---
@@ -176,21 +177,83 @@ docker run -p 5000:5000 -v $HOME/.kube:/root/.kube:ro lazybear-mcp
}
```
---
### 🌳 GitLab
Работа с GitLab API для управления репозиториями, MR, Issue, ветками и тегами.
**Методы:**
**Репозитории:**
- `list_projects` Список всех репозиториев
- `get_project` Информация о репозитории по ID/path
**Теги (Версии):**
- `list_versions` Список тегов репозитория
- `create_version` Создание нового тега
- `delete_version` Удаление тега
**Merge Requests:**
- `list_merge_requests` Список всех MR
- `get_merge_request` Информация о конкретном MR
- `create_merge_request` Создание MR
- `close_merge_request` Закрытие MR
- `open_merge_request` Открытие MR
- `list_merge_request_notes` Замечания к MR
- `create_merge_request_note` Добавление замечания
- `delete_merge_request_note` Удаление замечания
**Issues:**
- `list_issues` Список Issues
- `list_issues_simple` Быстрый список Issues
- `get_issue` Информация об Issue
- `create_issue` Создание Issue
- `update_issue` Обновление Issue
- `close_issue` Закрытие Issue
- `open_issue` Открытие Issue
- `list_issue_notes` Замечания к Issue
- `create_issue_note` Добавление замечания
- `delete_issue_note` Удаление замечания
**Ветки:**
- `list_branches` Список веток
- `get_branch` Информация о ветке
- `create_branch` Создание ветки
- `delete_branch` Удаление ветки
- `protect_branch` Защита ветки
- `unprotect_branch` Удаление защиты
**Примеры вызова:**
```json
{
"method": "k8sNetworkTools/createService",
"method": "gitlabTools/list_projects",
"params": {}
}
```
```json
{
"method": "gitlabTools/create_merge_request",
"params": {
"name": "nginx-svc",
"type": "ClusterIP",
"port": 80
"sourceBranch": "feature-xyz",
"targetBranch": "main",
"title": "Add new feature",
"description": "Implements new feature xyz"
}
}
```
```json
{
"method": "k8sPodsTools/getPodStatus",
"params": { "name": "nginx-pod-abc123" }
"method": "gitlabTools/create_issue",
"params": {
"title": "Fix production bug",
"description": "Critical bug in production environment",
"assigneeId": 123,
"labels": ["bug", "critical"]
}
}
```
@@ -209,13 +272,24 @@ LazyBear.MCP/
│ │ └── JiraIssueTools.cs # Инструменты для Jira
│ ├── Confluence/
│ │ └── ConfluencePagesTools.cs # Инструменты для Confluence
── Kubernetes/
├── K8sConfigTools.cs # Инструменты конфигурации
├── K8sDeploymentTools.cs # Инструменты деплоя
├── K8sNetworkTools.cs # Инструменты сети
├── K8sPodsTools.cs # Инструменты подов
├── K8sClientFactory.cs # Factory для клиентов
└── K8sClientProvider.cs # Provider для клиентов
── Kubernetes/
├── K8sConfigTools.cs # Инструменты конфигурации
├── K8sDeploymentTools.cs # Инструменты деплоя
├── K8sNetworkTools.cs # Инструменты сети
├── K8sPodsTools.cs # Инструменты подов
├── K8sClientFactory.cs # Factory для клиентов
└── K8sClientProvider.cs # Provider для клиентов
│ └── GitLab/
│ ├── GitLabToolModule.cs # Регистрация инструментов
│ ├── GitLabToolsBase.cs # Базовый класс с common-методами
│ ├── GitLabApiClient.cs # REST клиент (RestSharp)
│ ├── GitLabClientProvider.cs # Provider
│ ├── GitLabClientFactory.cs # Factory
│ ├── GitLabRepositoryTools.cs # Репозитории
│ ├── GitLabVersionTools.cs # Теги
│ ├── GitLabMergeRequestTools.cs # MR
│ ├── GitLabIssueTools.cs # Issues
│ └── GitLabBranchTools.cs # Ветки
├── appsettings.json # Конфиг
└── global.json # Пин SDK
```
@@ -225,13 +299,13 @@ LazyBear.MCP/
## 🖥️ Интерактивная панель
```
┌─────────────────────────────────────────┐
┌─...──────────────────────────────────────────────┐
│ Dashboard: Обзор состояния кластера │
├─────────────────────────────────────────┤
├─...──────────────────────────────────────────────┤
│ Logs & Events: Журналы событий │
│ Containers & Images: Контейнеры │
│ Workloads & Nodes: Распределение │
└─────────────────────────────────────────┘
└─...──────────────────────────────────────────────┘
```
**Настройка в appsettings.json:**
@@ -242,6 +316,20 @@ LazyBear.MCP/
"KubeconfigPath": "~/.kube/config",
"DefaultNamespace": "default"
},
"Jira": {
"Url": "https://jira.example.com",
"Token": "your_jira_token",
"Project": ""
},
"Confluence": {
"Url": "https://confluence.example.com",
"Token": "your_confluence_token"
},
"GitLab": {
"Url": "https://gitlab.com",
"Token": "your_gitlab_pat",
"Project": ""
},
"Logging": {
"LogLevel": {
"Default": "Information",
@@ -349,6 +437,7 @@ npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
- **UI:** Razor Pages
- **DB:** SQLite/SQL Server
- **Protocol:** Model Context Protocol (MCP)
- **API Clients:** RestSharp (для Jira, Confluence, GitLab), Kubernetes Client (для K8s)
**Документация:**
- **Сгенерированный API**: `/swagger` — Swagger UI
@@ -367,4 +456,15 @@ using Microsoft.OpenApi.Models;
var config = new OpenApiInfo { Title = "LazyBear MCP Server", Version = "1.0.0" };
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c => c.SwaggerDoc("v1", config));
```
```
---
## 📚 Ссылки
- [GitLab API Documentation](https://docs.gitlab.com/ee/api/)
- [MCP Specification](https://modelcontextprotocol.io)
---
*Встроенная документация по MCP*