8.8 KiB
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: Автоматическая установка (рекомендуется)
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash
Вариант 2: Ручная установка
# 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- список подов{"namespace": "argocd"} -
POST /api/pods/logs- логи пода{"name": "pod-name", "namespace": "argocd", "tailLines": 100} -
POST /api/deployments/list- список деплойментов{"namespace": "default"} -
POST /api/deployments/get- получить деплоймент{"name": "nginx", "namespace": "default"} -
POST /api/services/list- список сервисов{"namespace": "default"} -
POST /api/namespaces/list- список namespace{}
2. MCP Gitea Server (порт 3002)
REST API для работы с Git:
Доступные эндпоинты:
-
POST /api/repos/list- список репозиториев{"owner": "admin"} -
POST /api/repos/file/get- содержимое файла{"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml", "branch": "main"} -
POST /api/repos/tree/get- содержимое директории{"owner": "admin", "repo": "k3s-gitops", "path": "apps", "branch": "main"} -
POST /api/repos/file/create- создать файл{ "owner": "admin", "repo": "k3s-gitops", "path": "test.yaml", "content": "apiVersion: v1\nkind: Pod", "message": "Add test file", "branch": "main" } -
POST /api/repos/file/update- обновить файл{ "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- список веток{"owner": "admin", "repo": "k3s-gitops"}
Интеграция с Ollama
Способ 1: Прямые запросы через curl
Ollama может генерировать curl команды:
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:
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
Использование:
ollama run qwen2.5-coder:32b "$(cat ~/ollama-k8s-prompt.txt)
User request: Покажи все поды в namespace monitoring и их статус"
Способ 3: Wrapper Script
Создай ~/ollama-ops.sh:
#!/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: $*"
Использование:
chmod +x ~/ollama-ops.sh
./ollama-ops.sh "список подов в argocd"
./ollama-ops.sh "покажи файл apps/loki/statefulset.yaml из k3s-gitops"
Примеры использования
Kubernetes операции:
# Список подов
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 операции:
# Список репозиториев
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"}'
Проверка работы
# Health checks
curl http://localhost:3001/health
curl http://localhost:3002/health
# Статус контейнеров
docker-compose ps
# Логи
docker-compose logs -f
Следующие шаги
-
На GPU сервере:
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash -
Настроить Gitea токен:
- Получить: https://git.thedevops.dev/user/settings/applications
- Добавить в
~/ollama-mcp/.env - Перезапустить:
docker-compose restart
-
Проверить работу:
curl http://localhost:3001/health curl http://localhost:3002/health -
Интегрировать с 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 сервере:
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash