docs: update README JiraTools methods, add MEMORY rules, fix config entity
This commit is contained in:
37
AGENT.memory.md
Normal file
37
AGENT.memory.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# MEMORY AGENT RULES
|
||||||
|
|
||||||
|
## TRIGGERS — ALWAYS CHECK
|
||||||
|
- **ON session_start**: read_graph OR search_nodes(<topic>)
|
||||||
|
- **ON significant_change**: create_entities OR add_observations
|
||||||
|
- **ON file_operation**: log to memory if architecture/config/decision
|
||||||
|
|
||||||
|
## KEY FORMAT
|
||||||
|
- **PREFIX**: `lazybear/`
|
||||||
|
- **KEY**: `lazybear/<type>/<n>` (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
|
||||||
169
README.md
169
README.md
@@ -2,6 +2,32 @@
|
|||||||
|
|
||||||
.NET 10 сервер Model Context Protocol (MCP) для интеграции Kubernetes инструментов.
|
.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/
|
LazyBear.MCP/
|
||||||
@@ -22,12 +48,25 @@ LazyBear.MCP/
|
|||||||
|
|
||||||
## Быстрый старт
|
## Быстрый старт
|
||||||
|
|
||||||
|
### Требования
|
||||||
|
|
||||||
|
- .NET 10 SDK
|
||||||
|
- Kubectl и kubeconfig
|
||||||
|
- Docker Desktop (опционально)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd LazyBear.MCP
|
cd LazyBear.MCP
|
||||||
dotnet run
|
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/)
|
||||||
|
|
||||||
| Инструмент | Описание |
|
#### **JiraTools** — Работа с Jira Issues
|
||||||
|------------|-----------|
|
|
||||||
| `K8sConfigTools` | Управление конфигурациями K8s |
|
**Методы:**
|
||||||
| `K8sDeploymentTools` | Управление деплоями |
|
- `createIssue` – Создать новый тикет
|
||||||
| `K8sNetworkTools` | Управление сетями |
|
- `updateIssue` – Обновить существующий тикет
|
||||||
| `K8sPodsTools` | Управление подами |
|
- `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
|
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- .NET 10
|
||||||
|
- ASP.NET Core 9
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT
|
MIT
|
||||||
|
|||||||
Reference in New Issue
Block a user