c117d928b03b770a029cc96b402324effa86475c
LazyBear MCP Server
.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 │
└───────────────────────────────────────────────────────────┘
Потоки данных:
- Initialize Flow: Клиент → HTTP → Application → K8s Client → K8s API
- Tools Flow: Клиент → RPC → Tools → [Jira/Confluence/K8s] → Возврат результата
- 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– Поиск тикетов по JQLaddComment– Добавить комментарий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– Создать ingressdeleteIngress– Удалить 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
Languages
C#
70.6%
HTML
27.5%
CSS
1%
PowerShell
0.7%
JavaScript
0.2%
