diff --git a/AGENT.memory.md b/AGENT.memory.md new file mode 100644 index 0000000..410e3a2 --- /dev/null +++ b/AGENT.memory.md @@ -0,0 +1,37 @@ +# MEMORY AGENT RULES + +## TRIGGERS — ALWAYS CHECK +- **ON session_start**: read_graph OR search_nodes() +- **ON significant_change**: create_entities OR add_observations +- **ON file_operation**: log to memory if architecture/config/decision + +## KEY FORMAT +- **PREFIX**: `lazybear/` +- **KEY**: `lazybear//` (ex: lazybear/bug/auth-fail) +- **ONE_TYPE_PER_ENTITY**: true + +## ALLOWED TYPES +- architecture | mcp_tool | decision | bug | config | task_log + +## MACHINE-FIRST PRINCIPLES +- ALWAYS use memory for project context, architecture, and decisions +- READ graph before coding or making assumptions +- Don't duplicate observations +- Update memory when state changes significantly + +## SCHEMA +``` +lazybear/{architecture|mcp_tool|decision|bug|config|task_log}/{entity-name} +``` + +## READING PRIORITY +1. Check graph before coding +2. Search nodes for existing context +3. Don't duplicate observations + +## WRITING TRIGGERS +- **Architecture**: create `architecture` entity +- **New MCP tools**: create `mcp_tool` entity +- **Major decisions**: create `decision` entity +- **Config updates**: create `config` entity +- **Completed tasks**: create/update `task_log` entity diff --git a/README.md b/README.md index 33d75fb..bf17b73 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,32 @@ .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 │ +└─────────────────────────────────────────────────────────────┘ +``` + +**Потоки данных:** + +1. **Initialize Flow**: Клиент → HTTP → Application → K8s Client → K8s API +2. **Tools Flow**: Клиент → RPC → Tools → Kubernetes → Возврат результата +3. **Health Check Flow**: /health → HTTP → Liveness probe → K8s status + + ## Архитектура ``` LazyBear.MCP/ @@ -22,12 +48,25 @@ LazyBear.MCP/ ## Быстрый старт +### Требования + +- .NET 10 SDK +- Kubectl и kubeconfig +- Docker Desktop (опционально) + ```bash cd LazyBear.MCP dotnet run ``` -Сервер работает на `http://localhost:5000` +### Запуск через Docker + +```bash +docker build -t lazybear-mcp . +docker run -p 5000:5000 -v $HOME/.kube:/root/.kube:ro lazybear-mcp +``` + +Сервер запустится на `http://localhost:5000` ## Примеры интеграции @@ -99,14 +138,122 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion": ## Доступные инструменты -### Kubernetes +### Kubernetes (Services/Kubernetes/) -| Инструмент | Описание | -|------------|-----------| -| `K8sConfigTools` | Управление конфигурациями K8s | -| `K8sDeploymentTools` | Управление деплоями | -| `K8sNetworkTools` | Управление сетями | -| `K8sPodsTools` | Управление подами | +#### **JiraTools** — Работа с Jira Issues + +**Методы:** +- `createIssue` – Создать новый тикет +- `updateIssue` – Обновить существующий тикет +- `getIssueDetails` – Получить детали тикета +- `searchIssues` – Поиск тикетов по JQL +- `addComment` – Добавить комментарий +- `getIssueStatuses` – Получение доступных переходов статуса +- `listIssueComments` – Список комментариев задачи + +**Пример:** + +```json +{ + "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` – Удаление конфигурации + +**Пример:** + +```json +{ + "method": "k8sConfigTools/readConfig", + "params": {"namespace": "default"} +} +``` + +#### **K8sDeploymentTools** — Управление деплоями + +**Методы:** +- `createDeployment` – Создать деплой +- `updateDeployment` – Обновить деплой +- `deleteDeployment` – Удалить деплой +- `scaleDeployment` – Масштабировать деплой + +**Пример:** + +```json +{ + "method": "k8sDeploymentTools/createDeployment", + "params": { + "name": "nginx", + "replicas": 3, + "image": "nginx:latest" + } +} +``` + +#### **K8sNetworkTools** — Управление сетями + +**Методы:** +- `createService` – Создать сервис +- `updateService` – Обновить сервис +- `deleteService` – Удалить сервис +- `createIngress` – Создать ingress +- `deleteIngress` – Удалить ingress + +**Пример:** + +```json +{ + "method": "k8sNetworkTools/createService", + "params": { + "name": "nginx-svc", + "type": "ClusterIP", + "port": 80 + } +} +``` + +#### **K8sPodsTools** — Управление подами + +**Методы:** +- `getPodStatus` – Получить статус пода +- `restartPod` – Перезапустить под +- `execIntoPod` – Выполнить команду в поде +- `deletePod` – Удалить под + +**Пример:** + +```json +{ + "method": "k8sPodsTools/getPodStatus", + "params": {"name": "nginx-pod-abc123"} +} +``` + +### Интерактивная панель (Pages/) + +``` +┌────────────────────────────────────────────┐ +│ Dashboard: Обзор состояния кластера │ +├────────────────────────────────────────────┤ +│ Logs & Events: Журналы событий │ +│ Containers & Images: Контейнеры │ +│ Workloads & Nodes: Распределение │ +└────────────────────────────────────────────┘ +``` **Настройка:** @@ -126,6 +273,7 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion": } ``` + ## Разработка ### Сборка @@ -143,6 +291,11 @@ dotnet run npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP ``` +## Stack + +- .NET 10 +- ASP.NET Core 9 + ## License MIT