From 2733d3d809abd25229e293b8e1b253c235beec27 Mon Sep 17 00:00:00 2001 From: Claude AI Date: Sun, 11 Jan 2026 13:17:18 +0000 Subject: [PATCH] feat: add SUMMARY.md for ollama-mcp project overview --- apps/ollama-mcp/SUMMARY.md | 320 +++++++++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 apps/ollama-mcp/SUMMARY.md diff --git a/apps/ollama-mcp/SUMMARY.md b/apps/ollama-mcp/SUMMARY.md new file mode 100644 index 0000000..2c8096d --- /dev/null +++ b/apps/ollama-mcp/SUMMARY.md @@ -0,0 +1,320 @@ +# Ollama MCP Integration - Summary + +## Что создано + +Полное решение для интеграции Ollama с твоим Kubernetes кластером и Gitea через MCP серверы. + +### Структура проекта + +``` +apps/ollama-mcp/ +├── README.md # Полная документация +├── QUICKSTART.md # Быстрый старт +├── install.sh # Автоматическая установка +├── docker-compose.yml # Docker Compose конфигурация +├── .env.example # Пример переменных окружения +├── .gitignore # Git ignore правила +├── config/ +│ └── kubeconfig # Kubernetes конфигурация (создается при установке) +├── mcp-kubernetes/ +│ ├── Dockerfile +│ ├── package.json +│ └── index.js # REST API для Kubernetes +└── mcp-gitea/ + ├── Dockerfile + ├── package.json + └── index.js # REST API для Gitea +``` + +## Установка на GPU сервере + +### Вариант 1: Автоматическая установка (рекомендуется) + +```bash +curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash +``` + +### Вариант 2: Ручная установка + +```bash +# 1. Клонировать репозиторий +git clone https://git.thedevops.dev/admin/k3s-gitops.git +cd k3s-gitops/apps/ollama-mcp + +# 2. Настроить окружение +cp .env.example .env +nano .env # Добавить GITEA_TOKEN + +# 3. Скопировать kubeconfig +mkdir -p config +cp ~/.kube/config config/kubeconfig + +# 4. Запустить +docker-compose up -d +``` + +## Что получаешь + +### 1. MCP Kubernetes Server (порт 3001) + +REST API для управления кластером: + +**Доступные эндпоинты:** + +- `POST /api/pods/list` - список подов + ```json + {"namespace": "argocd"} + ``` + +- `POST /api/pods/logs` - логи пода + ```json + {"name": "pod-name", "namespace": "argocd", "tailLines": 100} + ``` + +- `POST /api/deployments/list` - список деплойментов + ```json + {"namespace": "default"} + ``` + +- `POST /api/deployments/get` - получить деплоймент + ```json + {"name": "nginx", "namespace": "default"} + ``` + +- `POST /api/services/list` - список сервисов + ```json + {"namespace": "default"} + ``` + +- `POST /api/namespaces/list` - список namespace + ```json + {} + ``` + +### 2. MCP Gitea Server (порт 3002) + +REST API для работы с Git: + +**Доступные эндпоинты:** + +- `POST /api/repos/list` - список репозиториев + ```json + {"owner": "admin"} + ``` + +- `POST /api/repos/file/get` - содержимое файла + ```json + {"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml", "branch": "main"} + ``` + +- `POST /api/repos/tree/get` - содержимое директории + ```json + {"owner": "admin", "repo": "k3s-gitops", "path": "apps", "branch": "main"} + ``` + +- `POST /api/repos/file/create` - создать файл + ```json + { + "owner": "admin", + "repo": "k3s-gitops", + "path": "test.yaml", + "content": "apiVersion: v1\nkind: Pod", + "message": "Add test file", + "branch": "main" + } + ``` + +- `POST /api/repos/file/update` - обновить файл + ```json + { + "owner": "admin", + "repo": "k3s-gitops", + "path": "test.yaml", + "content": "updated content", + "message": "Update test file", + "sha": "file-sha", + "branch": "main" + } + ``` + +- `POST /api/repos/branches/list` - список веток + ```json + {"owner": "admin", "repo": "k3s-gitops"} + ``` + +## Интеграция с Ollama + +### Способ 1: Прямые запросы через curl + +Ollama может генерировать curl команды: + +```bash +ollama run qwen2.5-coder:32b " +I have MCP servers running: +- Kubernetes API: http://localhost:3001 +- Gitea API: http://localhost:3002 + +Generate curl command to list all pods in argocd namespace +" +``` + +### Способ 2: Custom Function/Tool + +Создай промпт-шаблон для Ollama: + +```bash +cat > ~/ollama-k8s-prompt.txt << 'EOF' +You are a Kubernetes and Git operations assistant. You have access to: + +**Kubernetes MCP (http://localhost:3001):** +- POST /api/pods/list {"namespace": "name"} +- POST /api/pods/logs {"name": "pod", "namespace": "ns", "tailLines": 100} +- POST /api/deployments/list {"namespace": "name"} +- POST /api/services/list {"namespace": "name"} +- POST /api/namespaces/list {} + +**Gitea MCP (http://localhost:3002):** +- POST /api/repos/list {"owner": "admin"} +- POST /api/repos/file/get {"owner": "admin", "repo": "name", "path": "file.yaml"} +- POST /api/repos/tree/get {"owner": "admin", "repo": "name", "path": "dir/"} +- POST /api/repos/file/create {"owner": "admin", "repo": "name", "path": "file", "content": "...", "message": "..."} + +When asked to perform operations: +1. Generate the appropriate curl command +2. Execute it if possible +3. Interpret the results +4. Provide clear explanations + +Always use JSON format for request bodies. +EOF +``` + +Использование: +```bash +ollama run qwen2.5-coder:32b "$(cat ~/ollama-k8s-prompt.txt) + +User request: Покажи все поды в namespace monitoring и их статус" +``` + +### Способ 3: Wrapper Script + +Создай `~/ollama-ops.sh`: + +```bash +#!/bin/bash + +SYSTEM_PROMPT="You are a DevOps assistant with access to: +- Kubernetes API at http://localhost:3001 +- Gitea API at http://localhost:3002 +Generate and execute curl commands to fulfill user requests." + +ollama run qwen2.5-coder:32b "$SYSTEM_PROMPT + +User: $*" +``` + +Использование: +```bash +chmod +x ~/ollama-ops.sh +./ollama-ops.sh "список подов в argocd" +./ollama-ops.sh "покажи файл apps/loki/statefulset.yaml из k3s-gitops" +``` + +## Примеры использования + +### Kubernetes операции: + +```bash +# Список подов +curl -X POST http://localhost:3001/api/pods/list \ + -H "Content-Type: application/json" \ + -d '{"namespace": "argocd"}' + +# Логи +curl -X POST http://localhost:3001/api/pods/logs \ + -H "Content-Type: application/json" \ + -d '{"name": "argocd-server-xxx", "namespace": "argocd", "tailLines": 50}' + +# Deployments +curl -X POST http://localhost:3001/api/deployments/list \ + -H "Content-Type: application/json" \ + -d '{"namespace": "monitoring"}' +``` + +### Gitea операции: + +```bash +# Список репозиториев +curl -X POST http://localhost:3002/api/repos/list \ + -H "Content-Type: application/json" \ + -d '{"owner": "admin"}' + +# Содержимое файла +curl -X POST http://localhost:3002/api/repos/file/get \ + -H "Content-Type: application/json" \ + -d '{"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml"}' + +# Список файлов в директории +curl -X POST http://localhost:3002/api/repos/tree/get \ + -H "Content-Type: application/json" \ + -d '{"owner": "admin", "repo": "k3s-gitops", "path": "apps"}' +``` + +## Проверка работы + +```bash +# Health checks +curl http://localhost:3001/health +curl http://localhost:3002/health + +# Статус контейнеров +docker-compose ps + +# Логи +docker-compose logs -f +``` + +## Следующие шаги + +1. **На GPU сервере:** + ```bash + curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash + ``` + +2. **Настроить Gitea токен:** + - Получить: https://git.thedevops.dev/user/settings/applications + - Добавить в `~/ollama-mcp/.env` + - Перезапустить: `docker-compose restart` + +3. **Проверить работу:** + ```bash + curl http://localhost:3001/health + curl http://localhost:3002/health + ``` + +4. **Интегрировать с Ollama:** + - Создать промпт-шаблоны + - Настроить wrapper скрипты + - Или использовать прямые curl запросы + +## Поддержка + +- **Документация:** `apps/ollama-mcp/README.md` +- **Быстрый старт:** `apps/ollama-mcp/QUICKSTART.md` +- **Issues:** https://git.thedevops.dev/admin/k3s-gitops/issues + +## Безопасность + +- Kubeconfig защищен (права 600) +- Gitea токен в переменных окружения +- Изолированная Docker сеть +- Порты по умолчанию только на localhost + +--- + +**Готово к установке!** 🚀 + +Просто выполни на GPU сервере: +```bash +curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash +```