From 92073a14b739ab0988d3dd66ed256149056e9d9b Mon Sep 17 00:00:00 2001 From: Claude AI Date: Sun, 11 Jan 2026 13:16:35 +0000 Subject: [PATCH] feat: add QUICKSTART.md for ollama-mcp --- apps/ollama-mcp/QUICKSTART.md | 269 ++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 apps/ollama-mcp/QUICKSTART.md diff --git a/apps/ollama-mcp/QUICKSTART.md b/apps/ollama-mcp/QUICKSTART.md new file mode 100644 index 0000000..d74fe43 --- /dev/null +++ b/apps/ollama-mcp/QUICKSTART.md @@ -0,0 +1,269 @@ +# Ollama MCP Quick Start Guide + +## Быстрая установка (1 команда) + +```bash +curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash +``` + +## Что будет установлено: + +1. **MCP Kubernetes Server** - REST API для управления кластером +2. **MCP Gitea Server** - REST API для работы с Git репозиториями +3. **Docker Compose** - оркестрация сервисов +4. **Health checks** - автоматический мониторинг состояния + +## После установки: + +### 1. Настроить Gitea токен + +```bash +cd ~/ollama-mcp +nano .env +``` + +Добавь свой токен: +```env +GITEA_TOKEN=your_token_here +``` + +Получить токен: +- https://git.thedevops.dev/user/settings/applications +- Generate New Token +- Права: `repo`, `admin:org`, `write:repository` + +### 2. Перезапустить сервисы + +```bash +docker-compose restart +``` + +### 3. Проверить статус + +```bash +docker-compose ps +docker-compose logs -f +``` + +## Интеграция с Ollama + +### Способ 1: Через Open WebUI + +Если у тебя установлен Open WebUI: + +1. Settings → Connections → Add Connection +2. Name: `Kubernetes MCP` +3. URL: `http://localhost:3001` +4. Type: `REST API` + +### Способ 2: Прямые запросы + +```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": 100}' + +# Список репозиториев +curl -X POST http://localhost:3002/api/repos/list \ + -H "Content-Type: application/json" \ + -d '{"owner": "admin"}' +``` + +### Способ 3: Создать wrapper для Ollama + +Создай файл `ollama-k8s.sh`: + +```bash +#!/bin/bash + +PROMPT="$*" + +# Отправить запрос к Ollama с контекстом MCP +ollama run qwen2.5-coder:32b " +Context: You have access to Kubernetes API at http://localhost:3001 and Gitea API at http://localhost:3002 + +Available Kubernetes endpoints: +- POST /api/pods/list - list pods +- POST /api/pods/logs - get pod logs +- POST /api/deployments/list - list deployments +- POST /api/services/list - list services +- POST /api/namespaces/list - list namespaces + +Available Gitea endpoints: +- POST /api/repos/list - list repositories +- POST /api/repos/file/get - get file content +- POST /api/repos/tree/get - list directory +- POST /api/repos/file/create - create file +- POST /api/repos/branches/list - list branches + +User request: $PROMPT + +Generate curl commands to execute this request and show the results. +" +``` + +Использование: +```bash +chmod +x ollama-k8s.sh +./ollama-k8s.sh "покажи все поды в namespace monitoring" +./ollama-k8s.sh "получи логи grafana за последние 50 строк" +``` + +## Примеры промптов для Ollama + +### Kubernetes: + +``` +"Покажи все поды в namespace argocd" +"Получи логи пода prometheus-xxx за последние 100 строк" +"Список всех deployments в namespace monitoring" +"Покажи все сервисы в default namespace" +"Какие namespaces есть в кластере?" +``` + +### Gitea: + +``` +"Покажи все репозитории пользователя admin" +"Получи содержимое файла apps/loki/statefulset.yaml из репозитория k3s-gitops" +"Покажи структуру директории apps/ в k3s-gitops" +"Создай файл test.yaml в репозитории k3s-gitops" +"Какие ветки есть в репозитории k3s-gitops?" +``` + +## Troubleshooting + +### MCP серверы не отвечают + +```bash +cd ~/ollama-mcp + +# Проверить логи +docker-compose logs mcp-kubernetes +docker-compose logs mcp-gitea + +# Перезапустить +docker-compose restart + +# Пересобрать +docker-compose down +docker-compose build --no-cache +docker-compose up -d +``` + +### Ошибка подключения к Kubernetes + +```bash +# Проверить kubeconfig +kubectl --kubeconfig=~/ollama-mcp/config/kubeconfig get nodes + +# Если не работает, скопировать заново +cp ~/.kube/config ~/ollama-mcp/config/kubeconfig +docker-compose restart mcp-kubernetes +``` + +### Ошибка подключения к Gitea + +```bash +# Проверить токен +curl -H "Authorization: token YOUR_TOKEN" \ + https://git.thedevops.dev/api/v1/user + +# Обновить токен в .env +nano ~/ollama-mcp/.env +docker-compose restart mcp-gitea +``` + +### Порты заняты + +Если порты 3001 или 3002 уже заняты: + +```bash +nano ~/ollama-mcp/.env +``` + +Измени порты: +```env +MCP_K8S_PORT=4001 +MCP_GITEA_PORT=4002 +``` + +```bash +docker-compose down +docker-compose up -d +``` + +## Управление + +```bash +cd ~/ollama-mcp + +# Запустить +docker-compose up -d + +# Остановить +docker-compose down + +# Перезапустить +docker-compose restart + +# Статус +docker-compose ps + +# Логи (следить в реальном времени) +docker-compose logs -f + +# Логи конкретного сервиса +docker-compose logs -f mcp-kubernetes +docker-compose logs -f mcp-gitea + +# Обновить образы +docker-compose pull +docker-compose up -d +``` + +## Безопасность + +- **Kubeconfig**: Защищен правами 600, доступен только внутри контейнера +- **Gitea Token**: Хранится в .env (не коммитится в git) +- **Network**: Изолированная Docker сеть +- **Ports**: По умолчанию доступны на localhost (127.0.0.1) + +Для публичного доступа (НЕ рекомендуется без SSL): +```yaml +ports: + - "0.0.0.0:3001:3000" # Доступен извне +``` + +## Дополнительно + +### Мониторинг + +Health checks доступны по: +- http://localhost:3001/health +- http://localhost:3002/health + +### Логи в файл + +```bash +docker-compose logs > mcp-logs.txt +``` + +### Автозапуск при перезагрузке + +Сервисы уже настроены с `restart: unless-stopped` + +Для проверки после перезагрузки: +```bash +docker ps | grep mcp +``` + +## Полная документация + +Смотри [README.md](./README.md) для подробной информации.