version: "3.8"

services:
  # ============================================================================
  # 8020: ZEN Coordinator - Master Controller (HTTP ↔ MCP Bridge)  
  # ============================================================================
  mega-orchestrator:
    build: ./config
    container_name: mega-orchestrator
    ports:
      - "8020:8020"
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=${REDIS_URL:-redis://redis:6379}
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # ============================================================================
  # 8001-8010: Core MCP Services (Základní služby)
  # ============================================================================
  
  # 8001: Filesystem MCP - File Operations
  filesystem-mcp:
    build: /home/orchestration/mcp-servers/filesystem-mcp
    container_name: mcp-filesystem
    ports:
      - "8001:8000"
    volumes:
      - /home/orchestration/data/workspaces:/workspace
      - /home:/home:ro
      - /tmp:/tmp
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8002: Git MCP - Version Control
  git-mcp:
    build: /home/orchestration/mcp-servers/git-mcp
    container_name: mcp-git
    ports:
      - "8002:8000"
    volumes:
      - /home/orchestration/data/repositories:/repositories
      - /home/orchestration/data/workspaces:/workspace
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8003: Terminal MCP - Command Execution
  terminal-mcp:
    build: /home/orchestration/mcp-servers/terminal-mcp
    container_name: mcp-terminal
    ports:
      - "8003:8000"
    privileged: true
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8004: Database MCP - Data Operations
  database-mcp:
    build: /home/orchestration/mcp-servers/database-mcp
    container_name: mcp-database
    ports:
      - "8004:8000"
    volumes:
      - /home/orchestration/data/database:/data
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8005: Memory MCP - Simple Storage
  memory-mcp:
    build: /home/orchestration/mcp-servers/memory-mcp
    container_name: mcp-memory
    ports:
      - "8005:8000"
    volumes:
      - /home/orchestration/data/memory:/data
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8006: Network MCP - Network Operations (placeholder - to be implemented)
  network-mcp:
    build: /home/orchestration/mcp-servers/network-mcp
    container_name: mcp-network
    ports:
      - "8006:8000"
    working_dir: /app
    networks:
      - mcp-network

  # 8007: System MCP - System Info (placeholder - to be implemented)  
  system-mcp:
    build: /home/orchestration/mcp-servers/system-mcp
    container_name: mcp-system
    ports:
      - "8007:8000"
    working_dir: /app
    networks:
      - mcp-network

  # 8008: Security MCP - Security Operations (placeholder - to be implemented)
  security-mcp:
    build: /home/orchestration/mcp-servers/security-mcp
    container_name: mcp-security
    ports:
      - "8008:8000"
    working_dir: /app
      "
    restart: unless-stopped
    networks:
      - mcp-network

  # 8009: Config MCP - Configuration Management (placeholder - to be implemented)
  config-mcp:
    build: /home/orchestration/mcp-servers/config-mcp
    container_name: mcp-config
    ports:
      - "8009:8000"
    working_dir: /app
      "
    restart: unless-stopped
    networks:
      - mcp-network

  # 8010: Log MCP - Logging Operations (placeholder - to be implemented)
  log-mcp:
    build: /home/orchestration/mcp-servers/log-mcp
    container_name: mcp-log
    ports:
      - "8010:8000"
    working_dir: /app
      "
    restart: unless-stopped
    networks:
      - mcp-network

  # ============================================================================
  # 8011-8020: AI/Enhanced Services (Pokročilé AI služby)
  # ============================================================================

  # 8011: Research MCP - AI Research
  research-mcp:
    build: /home/orchestration/mcp-servers/research-mcp
    container_name: mcp-research
    ports:
      - "8011:8000"
    environment:
      - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY:-your_perplexity_api_key_here}
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8012: Advanced Memory MCP - AI Memory (vector search, semantic similarity)
  advanced-memory-mcp:
    image: node:18-alpine
    container_name: mcp-advanced-memory
    ports:
      - "8012:8000"
    working_dir: /app
    volumes:
      - /home/orchestration/mcp-servers/cldmemory:/app
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
      - QDRANT_URL=http://qdrant-vector:6333
      - GEMINI_API_KEY=${GEMINI_API_KEY:-your_gemini_api_key_here}
      - MCP_SERVER_PORT=8000
    command: sh -c "npm install && npm start"
    depends_on:
      - postgresql
      - redis
      - qdrant-vector
    restart: unless-stopped
    networks:
      - mcp-network

  # 8013: Transcriber MCP - Audio Processing
  transcriber-mcp:
    build: /home/orchestration/mcp-servers/webm-transcriber
    container_name: mcp-transcriber
    ports:
      - "8013:8000"
    volumes:
      - /home/orchestration/data/transcripts:/transcripts
      - /tmp:/tmp
    environment:
      - MCP_DATABASE_URL=${MCP_DATABASE_URL:-postgresql://mcp_admin:change_me_in_production@postgresql:5432/mcp_unified}
      - REDIS_URL=redis://redis:6379
    depends_on:
      - postgresql
      - redis
    restart: unless-stopped
    networks:
      - mcp-network

  # 8014-8019: Placeholders for future AI services
  vision-mcp:
    build: /home/orchestration/mcp-servers/system-mcp
    container_name: mcp-vision
    ports:
      - "8014:8000"
    working_dir: /app
      "
    restart: unless-stopped
    networks:
      - mcp-network

  # ============================================================================
  # 8021-8027: Support Services (Podporné databáze a cache)
  # ============================================================================

  # 8021: PostgreSQL - Primary Database
  postgresql:
    image: postgres:15
    container_name: mcp-postgresql
    environment:
      - POSTGRES_DB=${POSTGRES_DB:-mcp_unified}
      - POSTGRES_USER=${POSTGRES_USER:-mcp_admin}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-change_me_in_production}
    ports:
      - "8021:5432"
    volumes:
      - /home/orchestration/data/postgresql:/var/lib/postgresql/data
      - /home/orchestration/data/backups:/backups
    restart: unless-stopped
    networks:
      - mcp-network

  # 8022: Redis - Cache/Sessions
  redis:
    image: redis:7-alpine
    container_name: mcp-redis
    ports:
      - "8022:6379"
    volumes:
      - /home/orchestration/data/redis:/data
    restart: unless-stopped
    networks:
      - mcp-network

  # 8023: Qdrant Vector DB - Vector Storage
  qdrant-vector:
    image: qdrant/qdrant:latest
    container_name: mcp-qdrant
    ports:
      - "8023:6333"
      - "8024:6334"
    volumes:
      - /home/orchestration/data/qdrant:/qdrant/storage
    environment:
      - QDRANT__SERVICE__HTTP_PORT=6333
      - QDRANT__SERVICE__GRPC_PORT=6334
    restart: unless-stopped
    networks:
      - mcp-network

  # ============================================================================
  # 8028-8030: Management Services (Správa a monitoring)
  # ============================================================================

  # 8028: Monitoring - Health Checks & Metrics
  monitoring:
    image: prom/prometheus:latest
    container_name: mcp-monitoring
    ports:
      - "8028:9090"
    volumes:
      - /home/orchestration/config/prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    restart: unless-stopped
    networks:
      - mcp-network

  # 8029: Backup Service - Automated backups
  backup-service:
    build: /home/orchestration/mcp-servers/system-mcp
    container_name: mcp-backup
    ports:
      - "8029:8000"
    working_dir: /app
    volumes:
      - /home/orchestration/data:/data:ro
      - /home/orchestration/data/backups:/backups
      "
    restart: unless-stopped
    networks:
      - mcp-network

  # 8030: Message Queue - Task queuing
  message-queue:
    image: redis:7-alpine
    container_name: mcp-message-queue
    ports:
      - "8030:6379"
    volumes:
      - /home/orchestration/data/queue:/data
    command: redis-server --appendonly yes
    restart: unless-stopped
    networks:
      - mcp-network

networks:
  mcp-network:
    driver: bridge