# 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 ```