# Docker MCP Gordon Configuration Template
# Synkra AIOX Framework
# Version: 1.0.0
#
# Usage:
#   This template is used by the *setup-mcp-docker task to generate
#   project-specific Docker MCP configurations.
#
# Variables:
#   {{PROJECT_ROOT}} - Project root path
#   {{GITHUB_TOKEN_ENV}} - GitHub token environment variable name
#   {{ENABLED_MCPS}} - List of enabled MCPs
#   {{PRESET_NAME}} - Active preset name

version: '3.8'

services:
  # ============================================
  # CORE MCPs
  # ============================================

  # Filesystem Access
  # Required for all workflows - read/write project files
  fs:
    image: mcp/filesystem
    command:
      - /workspace
    volumes:
      - {{PROJECT_ROOT}}:/workspace:rw
    labels:
      mcp.core: "true"
      mcp.preset: "core,dev,research,full"
      mcp.description: "File system access for project files"

  # GitHub Operations
  # Optional - requires GITHUB_TOKEN
  github:
    image: mcp/github
    environment:
      - GITHUB_TOKEN=${{GITHUB_TOKEN_ENV:-GITHUB_TOKEN}}
    labels:
      mcp.core: "true"
      mcp.preset: "core,dev,full"
      mcp.description: "GitHub API for repos, issues, PRs"
      mcp.requires_auth: "true"

  # HTTP Fetch
  # Optional - for web requests and scraping
  fetch:
    image: mcp/fetch
    labels:
      mcp.core: "true"
      mcp.preset: "core,research,full"
      mcp.description: "HTTP requests and web scraping"

  # ============================================
  # OPTIONAL MCPs - Uncomment as needed
  # ============================================

  # PostgreSQL Database Access
  # postgres:
  #   image: mcp/postgres
  #   environment:
  #     - DATABASE_URL=${DATABASE_URL}
  #   labels:
  #     mcp.preset: "full,db"
  #     mcp.description: "PostgreSQL database operations"
  #     mcp.requires_auth: "true"

  # SQLite Database Access
  # sqlite:
  #   image: mcp/sqlite
  #   volumes:
  #     - {{PROJECT_ROOT}}/data:/data:rw
  #   labels:
  #     mcp.preset: "full,db"
  #     mcp.description: "SQLite database operations"

  # Browser Automation (Puppeteer)
  # puppeteer:
  #   image: mcp/puppeteer
  #   labels:
  #     mcp.preset: "full,automation"
  #     mcp.description: "Browser automation"

  # Notion Integration
  # notion:
  #   image: mcp/notion
  #   environment:
  #     - NOTION_API_KEY=${NOTION_API_KEY}
  #   labels:
  #     mcp.preset: "full,productivity"
  #     mcp.description: "Notion workspace integration"
  #     mcp.requires_auth: "true"

  # Slack Integration
  # slack:
  #   image: mcp/slack
  #   environment:
  #     - SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}
  #   labels:
  #     mcp.preset: "full,productivity"
  #     mcp.description: "Slack messaging"
  #     mcp.requires_auth: "true"

# ============================================
# NETWORK CONFIGURATION
# ============================================

networks:
  default:
    name: mcp-network-{{PRESET_NAME:-default}}
    driver: bridge

# ============================================
# VOLUMES (Optional - for persistent data)
# ============================================

# volumes:
#   mcp-data:
#     driver: local

# ============================================
# TEMPLATE NOTES
# ============================================
#
# This template supports variable substitution:
#
# 1. Environment variables: ${VAR_NAME} or ${VAR_NAME:-default}
# 2. Template variables: {{VAR_NAME}} (replaced at generation time)
#
# To generate a configuration:
#   *setup-mcp-docker --project /path/to/project
#
# To add MCPs dynamically:
#   docker mcp server add <name>
#   *add-mcp <name>
#
# To create custom presets:
#   docker mcp preset create <name> --servers fs,github
