01d75adef1de6e54b1e5d580ca7ebade179a186a
LazyBear MCP Server
.NET 10 сервер Model Context Protocol (MCP) для интеграции 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 → Kubernetes → Возврат результата
- Health Check Flow: /health → HTTP → Liveness probe → K8s status
Архитектура
LazyBear.MCP/
├── Program.cs # HTTP transport MCP сервер
├── Pages/ # Razor Pages UI
│ ├── Index.cshtml # Главная страница
│ └── Shared/ # Общие компоненты
├── Services/
│ └── Kubernetes/
│ ├── K8sConfigTools.cs # Инструменты конфигурации
│ ├── K8sDeploymentTools.cs # Инструменты деплоя
│ ├── K8sNetworkTools.cs # Инструменты сети
│ ├── K8sPodsTools.cs # Инструменты подов
│ ├── K8sClientFactory.cs # Factory для клиентов
│ └── K8sClientProvider.cs # Provider для клиентов
└── appsettings.json # Конфиг (логинг, K8s, allowed hosts)
Быстрый старт
Требования
- .NET 10 SDK
- Kubectl и kubeconfig
- Docker Desktop (опционально)
cd LazyBear.MCP
dotnet run
Запуск через Docker
docker build -t lazybear-mcp .
docker run -p 5000:5000 -v $HOME/.kube:/root/.kube:ro lazybear-mcp
Сервер запустится на http://localhost:5000
Примеры интеграции
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"]
}
}
}
Использование через CLI
Тестирование через MCP inspector:
npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
Прямое тестирование через 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
Доступные инструменты
Kubernetes (Services/Kubernetes/)
JiraTools — Работа с Jira Issues
Методы:
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"
}
}
K8sConfigTools — Управление конфигурациями K8s
Методы:
readConfig– Чтение конфигурации кластераwriteConfig– Обновление конфигурацииdeleteConfig– Удаление конфигурации
Пример:
{
"method": "k8sConfigTools/readConfig",
"params": {"namespace": "default"}
}
K8sDeploymentTools — Управление деплоями
Методы:
createDeployment– Создать деплойupdateDeployment– Обновить деплойdeleteDeployment– Удалить деплойscaleDeployment– Масштабировать деплой
Пример:
{
"method": "k8sDeploymentTools/createDeployment",
"params": {
"name": "nginx",
"replicas": 3,
"image": "nginx:latest"
}
}
K8sNetworkTools — Управление сетями
Методы:
createService– Создать сервисupdateService– Обновить сервисdeleteService– Удалить сервисcreateIngress– Создать ingressdeleteIngress– Удалить ingress
Пример:
{
"method": "k8sNetworkTools/createService",
"params": {
"name": "nginx-svc",
"type": "ClusterIP",
"port": 80
}
}
K8sPodsTools — Управление подами
Методы:
getPodStatus– Получить статус подаrestartPod– Перезапустить подexecIntoPod– Выполнить команду в подеdeletePod– Удалить под
Пример:
{
"method": "k8sPodsTools/getPodStatus",
"params": {"name": "nginx-pod-abc123"}
}
Интерактивная панель (Pages/)
┌────────────────────────────────────────────┐
│ Dashboard: Обзор состояния кластера │
├────────────────────────────────────────────┤
│ Logs & Events: Журналы событий │
│ Containers & Images: Контейнеры │
│ Workloads & Nodes: Распределение │
└────────────────────────────────────────────┘
Настройка:
// appsettings.json
{
"Kubernetes": {
"KubeconfigPath": "~/.kube/config",
"DefaultNamespace": "default"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"ModelContextProtocol": "Debug"
}
}
}
Разработка
Сборка
dotnet build
Запуск
dotnet run
Тестирование с MCP Inspector
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
Stack
- .NET 10
- ASP.NET Core 9
License
MIT
Description
Languages
C#
82.5%
HTML
16.3%
CSS
0.6%
PowerShell
0.5%