Shahovalov MIkhail 879becadfe feat: внедрение RazorConsole TUI с runtime-управлением MCP-инструментами
- Добавлен RazorConsole.Core для интерактивного TUI-дашборда
- ToolRegistryService: живое включение/отключение модулей и отдельных методов
- InMemoryLogSink: кольцевой буфер логов с фильтрацией по модулю
- TUI: 3 таба (Overview, Logs, Settings)
- IToolModule: generic-интерфейс для легкого добавления новых MCP-модулей
- Guard-проверка TryCheckEnabled() во всех существующих инструментах
2026-04-13 17:31:28 +03:00
2026-04-13 15:16:57 +03:00
2026-04-13 16:53:31 +03:00
2026-04-13 15:27:05 +03:00
2026-04-13 16:10:12 +03:00
2026-04-13 15:16:57 +03:00
2026-04-13 10:37:44 +03:00
2026-04-12 22:15:46 +03:00

LazyBear MCP Server

LazyBear Logo

.NET 10 сервер Model Context Protocol (MCP) для интеграции с Jira, Confluence и Kubernetes.


Возможности

Модуль Описание Статус
📋 Jira Работа с задачами, JQL, комментариями Доступно
📄 Confluence Работа со страницами и пространствами Доступно
☸️ Kubernetes Управление деплоями, подами, сетями Доступно

🏗️ Архитектура

┌───────────────────────────────────────────────────────────┐
│ 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          │
└───────────────────────────────────────────────────────────┘

Потоки данных:

  1. Initialize Flow: Клиент → HTTP → Application → K8s Client → K8s API
  2. Tools Flow: Клиент → RPC → Tools → [Jira/Confluence/K8s] → Возврат результата
  3. Health Check Flow: /health → HTTP → Liveness probe → Status

🚀 Быстрый старт

Требования

  • .NET 10 SDK
  • Kubectl и kubeconfig
  • Docker Desktop (опционально)

Запуск

cd LazyBear.MCP
dotnet run

Сервер запустится на http://localhost:5000

Docker

docker build -t lazybear-mcp .
docker run -p 5000:5000 -v $HOME/.kube:/root/.kube:ro lazybear-mcp

📦 Основные модули MCP

📋 Jira

Работа с Jira Issues и JQL запросами.

Методы:

  • createIssue Создать новый тикет
  • updateIssue Обновить существующий тикет
  • getIssueDetails Получить детали тикета
  • searchIssues Поиск тикетов по JQL
  • addComment Добавить комментарий
  • getIssueStatuses Получение доступных переходов статуса
  • listIssueComments Список комментариев задачи

Пример вызова:

{
  "method": "jiraTools/createIssue",
  "params": {
    "projectKey": "LAZYBEAR",
    "summary": "Fix memory leak in K8s deployment",
    "description": "Memory leak detected in pod nginx-pod-abc123",
    "type": "BUG",
    "priority": "High",
    "assignee": "dev@example.com"
  }
}

📄 Confluence

Работа с Confluence страницами и пространствами.

Методы:

  • createPage Создать новую страницу
  • updatePage Обновить существующую страницу
  • deletePage Удалить страницу
  • getPageContent Получить содержимое страницы
  • searchPages Поиск страниц по ключевым словам
  • getSpace Получить информацию о пространстве
  • movePage Переместить страницу

Пример вызова:

{
  "method": "confluenceTools/createPage",
  "params": {
    "spaceKey": "LAZYBEAR",
    "title": "Инструкция по развёртыванию",
    "body": "# Инструкция по развёртыванию\n\nШаг 1: Клонируйте репозиторий...",
    "parentPageId": null
  }
}

☸️ Kubernetes

Управление K8s кластером.

Методы:

Конфигурация:

  • readConfig Чтение конфигурации кластера
  • writeConfig Обновление конфигурации
  • deleteConfig Удаление конфигурации

Деплои:

  • createDeployment Создать деплой
  • updateDeployment Обновить деплой
  • deleteDeployment Удалить деплой
  • scaleDeployment Масштабировать деплой

Сети:

  • createService Создать сервис
  • updateService Обновить сервис
  • deleteService Удалить сервис
  • createIngress Создать ingress
  • deleteIngress Удалить ingress

Поды:

  • getPodStatus Получить статус пода
  • restartPod Перезапустить под
  • execIntoPod Выполнить команду в поде
  • deletePod Удалить под

Примеры вызова:

{
  "method": "k8sDeploymentTools/createDeployment",
  "params": {
    "name": "nginx",
    "replicas": 3,
    "image": "nginx:latest"
  }
}
{
  "method": "k8sNetworkTools/createService",
  "params": {
    "name": "nginx-svc",
    "type": "ClusterIP",
    "port": 80
  }
}
{
  "method": "k8sPodsTools/getPodStatus",
  "params": { "name": "nginx-pod-abc123" }
}

📁 Структура проекта

LazyBear.MCP/
├── Program.cs              # HTTP transport MCP сервер
├── Pages/                  # Razor Pages UI
│   ├── Index.cshtml        # Главная страница
│   └── Shared/             # Общие компоненты
├── Services/
│   ├── Jira/
│   │   └── JiraIssueTools.cs      # Инструменты для Jira
│   ├── Confluence/
│   │   └── ConfluencePagesTools.cs # Инструменты для Confluence
│   └── Kubernetes/
│       ├── K8sConfigTools.cs       # Инструменты конфигурации
│       ├── K8sDeploymentTools.cs   # Инструменты деплоя
│       ├── K8sNetworkTools.cs      # Инструменты сети
│       ├── K8sPodsTools.cs         # Инструменты подов
│       ├── K8sClientFactory.cs     # Factory для клиентов
│       └── K8sClientProvider.cs    # Provider для клиентов
├── appsettings.json        # Конфиг
└── global.json             # Пин SDK

🖥️ Интерактивная панель

┌─────────────────────────────────────────┐
│ Dashboard: Обзор состояния кластера     │
├─────────────────────────────────────────┤
│ Logs & Events: Журналы событий          │
│ Containers & Images: Контейнеры         │
│ Workloads & Nodes: Распределение        │
└─────────────────────────────────────────┘

Настройка в appsettings.json:

{
  "Kubernetes": {
    "KubeconfigPath": "~/.kube/config",
    "DefaultNamespace": "default"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "ModelContextProtocol": "Debug"
    }
  }
}

🔌 Интеграция

Codex (Windows)

Файл: .mcp.json

{
  "mcpServers": {
    "lazybear": {
      "command": "dotnet",
      "args": ["run", "--project", "E:\\Codex\\LazyBearWorks\\LazyBear.MCP"]
    }
  }
}

Continue (VS Code)

Файл: .vscode/continue/config.json

{
  "mcpServers": {
    "lazybear": {
      "command": "dotnet",
      "args": ["run", "--project", "${workspaceFolder}/LazyBear.MCP"],
      "type": "stdio"
    }
  }
}

OpenCode (Linux/Mac)

Файл: ~/.opencode/.mcp.json

{
  "mcpServers": {
    "lazybear": {
      "command": "dotnet",
      "args": ["run", "--project", "~/LazyBearWorks/LazyBear.MCP"]
    }
  }
}

MCP Inspector

npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP

🔧 CLI тестирование

# Прямое тестирование через stdin
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0"}}}' | dotnet run --project LazyBear.MCP

🛠️ Разработка

Сборка

dotnet build

Запуск

dotnet run

Тестирование

npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP

📦 Stack

  • Язык: C#
  • Framework: .NET 10
  • Framework Web: ASP.NET Core 9
  • UI: Razor Pages
  • DB: SQLite/SQL Server
  • Protocol: Model Context Protocol (MCP)

Документация:

  • Сгенерированный API: /swagger — Swagger UI
  • Метаданные методов: MCP Tools — авт. описание от Summary/Description

OpenAPI/Swagger

Включите для просмотра API:

<!-- LazyBear.MCP/Program.cs -->
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc;
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));
Description
No description provided
Readme 3 MiB
Languages
C# 70.6%
HTML 27.5%
CSS 1%
PowerShell 0.7%
JavaScript 0.2%