feat: add SUMMARY.md for ollama-mcp project overview
This commit is contained in:
320
apps/ollama-mcp/SUMMARY.md
Normal file
320
apps/ollama-mcp/SUMMARY.md
Normal file
@@ -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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user