Обновление README: унификация структуры, добавление логотипа

This commit is contained in:
2026-04-13 16:09:42 +03:00
parent 8ac5ad2bac
commit e008115ced

352
README.md
View File

@@ -1,52 +1,49 @@
# LazyBear MCP Server
.NET 10 сервер Model Context Protocol (MCP) для интеграции Kubernetes инструментов.
![LazyBear Logo](logo.png)
## Трехслойная архитектура
**.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 → Kubernetes → Возврат результата
3. **Health Check Flow**: /health → HTTP → Liveness probe → K8s status
2. **Tools Flow**: Клиент → RPC → Tools → [Jira/Confluence/K8s] → Возврат результата
3. **Health Check Flow**: `/health` → HTTP → Liveness probe → 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)
```
## Быстрый старт
## 🚀 Быстрый старт
### Требования
@@ -54,93 +51,29 @@ LazyBear.MCP/
- Kubectl и kubeconfig
- Docker Desktop (опционально)
### Запуск
```bash
cd LazyBear.MCP
dotnet run
```
### Запуск через Docker
Сервер запустится на `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`
---
## Примеры интеграции
## 📦 Основные модули MCP
### Codex (Windows конфигурация)
### 📋 Jira
Файл: `.mcp.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": ["run", "--project", "E:\\Codex\\LazyBearWorks\\LazyBear.MCP"]
}
}
}
```
### Continue (расширение VS Code)
Файл: `.vscode/continue/config.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": [
"run",
"--project",
"${workspaceFolder}/LazyBear.MCP"
],
"type": "stdio"
}
}
}
```
### OpenCode (Linux/Mac конфигурация)
Файл: `~/.opencode/.mcp.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": ["run", "--project", "~/LazyBearWorks/LazyBear.MCP"]
}
}
}
```
### Использование через CLI
Тестирование через MCP inspector:
```bash
npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
```
Прямое тестирование через stdin:
```bash
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
Работа с Jira Issues и JQL запросами.
**Методы:**
- `createIssue` Создать новый тикет
@@ -151,7 +84,7 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
- `getIssueStatuses` Получение доступных переходов статуса
- `listIssueComments` Список комментариев задачи
**Пример:**
**Пример вызова:**
```json
{
@@ -167,31 +100,68 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
}
```
#### **K8sConfigTools** — Управление конфигурациями K8s
---
### 📄 Confluence
Работа с Confluence страницами и пространствами.
**Методы:**
- `createPage` Создать новую страницу
- `updatePage` Обновить существующую страницу
- `deletePage` Удалить страницу
- `getPageContent` Получить содержимое страницы
- `searchPages` Поиск страниц по ключевым словам
- `getSpace` Получить информацию о пространстве
- `movePage` Переместить страницу
**Пример вызова:**
```json
{
"method": "confluenceTools/createPage",
"params": {
"spaceKey": "LAZYBEAR",
"title": "Инструкция по развёртыванию",
"body": "# Инструкция по развёртыванию\n\nШаг 1: Клонируйте репозиторий...",
"parentPageId": null
}
}
```
---
### ☸️ Kubernetes
Управление K8s кластером.
**Методы:**
**Конфигурация:**
- `readConfig` Чтение конфигурации кластера
- `writeConfig` Обновление конфигурации
- `deleteConfig` Удаление конфигурации
**Пример:**
```json
{
"method": "k8sConfigTools/readConfig",
"params": {"namespace": "default"}
}
```
#### **K8sDeploymentTools** — Управление деплоями
**Методы:**
**Деплои:**
- `createDeployment` Создать деплой
- `updateDeployment` Обновить деплой
- `deleteDeployment` Удалить деплой
- `scaleDeployment` Масштабировать деплой
**Пример:**
**Сети:**
- `createService` Создать сервис
- `updateService` Обновить сервис
- `deleteService` Удалить сервис
- `createIngress` Создать ingress
- `deleteIngress` Удалить ingress
**Поды:**
- `getPodStatus` Получить статус пода
- `restartPod` Перезапустить под
- `execIntoPod` Выполнить команду в поде
- `deletePod` Удалить под
**Примеры вызова:**
```json
{
@@ -204,17 +174,6 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
}
```
#### **K8sNetworkTools** — Управление сетями
**Методы:**
- `createService` Создать сервис
- `updateService` Обновить сервис
- `deleteService` Удалить сервис
- `createIngress` Создать ingress
- `deleteIngress` Удалить ingress
**Пример:**
```json
{
"method": "k8sNetworkTools/createService",
@@ -226,16 +185,6 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
}
```
#### **K8sPodsTools** — Управление подами
**Методы:**
- `getPodStatus` Получить статус пода
- `restartPod` Перезапустить под
- `execIntoPod` Выполнить команду в поде
- `deletePod` Удалить под
**Пример:**
```json
{
"method": "k8sPodsTools/getPodStatus",
@@ -243,22 +192,49 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
}
```
### Интерактивная панель (Pages/)
---
## 📁 Структура проекта
```
┌────────────────────────────────────────────┐
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:**
```json
// appsettings.json
{
"Kubernetes": {
"KubeconfigPath": "~/.kube/config",
@@ -273,29 +249,101 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
}
```
---
## Разработка
## 🔌 Интеграция
### Codex (Windows)
Файл: `.mcp.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": ["run", "--project", "E:\\Codex\\LazyBearWorks\\LazyBear.MCP"]
}
}
}
```
### Continue (VS Code)
Файл: `.vscode/continue/config.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": ["run", "--project", "${workspaceFolder}/LazyBear.MCP"],
"type": "stdio"
}
}
}
```
### OpenCode (Linux/Mac)
Файл: `~/.opencode/.mcp.json`
```json
{
"mcpServers": {
"lazybear": {
"command": "dotnet",
"args": ["run", "--project", "~/LazyBearWorks/LazyBear.MCP"]
}
}
}
```
### MCP Inspector
```bash
npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
```
---
## 🔧 CLI тестирование
```bash
# Прямое тестирование через 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
```
---
## 🛠️ Разработка
### Сборка
```bash
dotnet build
```
### Запуск
```bash
dotnet run
```
### Тестирование с MCP Inspector
### Тестирование
```bash
npx @modelcontextprotocol/inspector dotnet run --project LazyBear.MCP
```
## Stack
---
- .NET 10
- ASP.NET Core 9
## 📦 Stack
## License
MIT
- **Язык:** C#
- **Framework:** .NET 10
- **Framework Web:** ASP.NET Core 9
- **UI:** Razor Pages
- **DB:** SQLite/SQL Server
- **Protocol:** Model Context Protocol (MCP)