# MCP Server Service Default Configuration
# Model Context Protocol with tools, prompts, resources, sampling

let mcp_server_schema = import "../schemas/mcp-server.ncl" in
let monitoring_defaults = import "./common/monitoring-defaults.ncl" in
let logging_defaults = import "./common/logging-defaults.ncl" in

{
  mcp_server | mcp_server_schema.MCPServerConfig = {
    # Workspace Configuration
    workspace = {
      name = "default",
      path = "/var/lib/provisioning/mcp-server",
      enabled = true,
      multi_workspace = false,
    },

    # HTTP Server Settings
    server = {
      host = "127.0.0.1",
      port = 3000,
      workers = 4,
      keep_alive = 75,
      max_connections = 100,
      request_timeout = 30000,
      graceful_shutdown = true,
      shutdown_timeout = 30,
    },

    # MCP Protocol Configuration
    protocol = {
      version = "1.0",
      transport = {
        endpoint = "http://localhost:3000",
        timeout = 30000,
      },
    },

    # Tools Configuration
    tools = {
      enabled = true,
      max_concurrent = 5,
      timeout = 30000,
      validation = {
        enabled = true,
        strict_mode = false,
      },
      cache = {
        enabled = true,
        ttl = 3600,
      },
    },

    # Prompts Configuration
    prompts = {
      enabled = true,
      max_templates = 100,
      cache = {
        enabled = true,
        ttl = 3600,
      },
      versioning = {
        enabled = false,
        max_versions = 10,
      },
    },

    # Resources Configuration
    resources = {
      enabled = true,
      max_size = 104857600,
      cache = {
        enabled = true,
        max_size_mb = 512,
        ttl = 3600,
      },
      validation = {
        enabled = true,
        max_depth = 10,
      },
    },

    # Sampling Configuration
    sampling = {
      enabled = false,
      max_tokens = 4096,
      temperature = 0.7,
      cache = {
        enabled = true,
        ttl = 3600,
      },
    },

    # Capabilities Declaration
    capabilities = {
      tools = {
        enabled = true,
        list_changed_callback = false,
      },
      prompts = {
        enabled = true,
        list_changed_callback = false,
      },
      resources = {
        enabled = true,
        list_changed_callback = false,
        subscribe = false,
      },
      sampling = {
        enabled = false,
      },
    },

    # Orchestrator Integration
    orchestrator_integration = {
      enabled = false,
    },

    # Control Center Integration
    control_center_integration = {
      enabled = false,
      enforce_rbac = true,
    },

    # Monitoring Configuration
    monitoring = monitoring_defaults.monitoring,

    # Logging Configuration
    logging = logging_defaults.logging,

    # Performance Tuning
    performance = {
      pool_size = 10,
      buffer_size = 1024,
      compression = false,
    },
  },
}
