185 lines
5.8 KiB
YAML
185 lines
5.8 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
mcp-kubernetes:
|
|
build: ./mcp-kubernetes
|
|
container_name: ollama-mcp-kubernetes
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./config:/root/.kube:ro
|
|
ports:
|
|
- "${MCP_K8S_PORT:-3001}:3000"
|
|
environment:
|
|
- KUBECONFIG=/root/.kube/config
|
|
- K8S_CONTEXT=${K8S_CONTEXT:-}
|
|
- K8S_NAMESPACE=${K8S_NAMESPACE:-default}
|
|
networks:
|
|
- mcp-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
mcp-gitea:
|
|
build: ./mcp-gitea
|
|
container_name: ollama-mcp-gitea
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_GITEA_PORT:-3002}:3000"
|
|
environment:
|
|
- GITEA_URL=${GITEA_URL}
|
|
- GITEA_TOKEN=${GITEA_TOKEN}
|
|
- GITEA_OWNER=${GITEA_OWNER:-admin}
|
|
networks:
|
|
- mcp-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# Prometheus / Grafana MCP
|
|
# Ask: "Show CPU usage for grafana pod last 1h"
|
|
# "Which pods have highest memory?"
|
|
# "Alert me if any pod restarts > 5"
|
|
# ─────────────────────────────────────────────
|
|
mcp-prometheus:
|
|
build: ./mcp-prometheus
|
|
container_name: ollama-mcp-prometheus
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_PROMETHEUS_PORT:-3003}:3000"
|
|
environment:
|
|
- PROMETHEUS_URL=${PROMETHEUS_URL:-http://host.docker.internal:9090}
|
|
- GRAFANA_URL=${GRAFANA_URL:-http://host.docker.internal:3000}
|
|
- GRAFANA_TOKEN=${GRAFANA_TOKEN:-}
|
|
networks:
|
|
- mcp-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# ArgoCD MCP
|
|
# Ask: "Show all out-of-sync apps"
|
|
# "Sync the loki application"
|
|
# "What changed in the last grafana deploy?"
|
|
# ─────────────────────────────────────────────
|
|
mcp-argocd:
|
|
build: ./mcp-argocd
|
|
container_name: ollama-mcp-argocd
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_ARGOCD_PORT:-3004}:3000"
|
|
environment:
|
|
- ARGOCD_URL=${ARGOCD_URL:-https://argocd.thedevops.dev}
|
|
- ARGOCD_TOKEN=${ARGOCD_TOKEN:-}
|
|
networks:
|
|
- mcp-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# Loki MCP
|
|
# Ask: "Show errors from argocd last 30m"
|
|
# "Find OOMKilled events cluster-wide"
|
|
# "Summarize grafana logs from yesterday"
|
|
# ─────────────────────────────────────────────
|
|
mcp-loki:
|
|
build: ./mcp-loki
|
|
container_name: ollama-mcp-loki
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_LOKI_PORT:-3005}:3000"
|
|
environment:
|
|
- LOKI_URL=${LOKI_URL:-http://host.docker.internal:3100}
|
|
networks:
|
|
- mcp-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
# ─────────────────────────────────────────────
|
|
# PostgreSQL MCP
|
|
# Ask: "Show table sizes in cesop_db"
|
|
# "Run EXPLAIN ANALYZE on this query"
|
|
# "List long-running queries"
|
|
# "Show index usage stats"
|
|
# ─────────────────────────────────────────────
|
|
mcp-postgres:
|
|
build: ./mcp-postgres
|
|
container_name: ollama-mcp-postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_POSTGRES_PORT:-3006}:3000"
|
|
environment:
|
|
- POSTGRES_HOST=${POSTGRES_HOST:-}
|
|
- POSTGRES_PORT=${POSTGRES_PORT:-5432}
|
|
- POSTGRES_DB=${POSTGRES_DB:-}
|
|
- POSTGRES_USER=${POSTGRES_USER:-}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-}
|
|
- POSTGRES_SSL=${POSTGRES_SSL:-false}
|
|
networks:
|
|
- mcp-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
networks:
|
|
mcp-network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.28.0.0/16
|