"""Configuration management for MCP Midjourney server."""
import os
from dataclasses import dataclass, field
from pathlib import Path
from dotenv import load_dotenv
# Load .env file from project root
_env_path = Path(__file__).parent.parent / ".env"
load_dotenv(dotenv_path=_env_path)
@dataclass
class Settings:
"""Application settings loaded from environment variables."""
# API Configuration
api_base_url: str = field(
default_factory=lambda: os.getenv("ACEDATACLOUD_API_BASE_URL", "https://api.acedata.cloud")
)
api_token: str = field(default_factory=lambda: os.getenv("ACEDATACLOUD_API_TOKEN", ""))
# Default Mode
default_mode: str = field(
default_factory=lambda: os.getenv("MIDJOURNEY_DEFAULT_MODE", "fast")
)
# Request Configuration
request_timeout: float = field(
default_factory=lambda: float(os.getenv("MIDJOURNEY_REQUEST_TIMEOUT", "180"))
)
# Server Configuration
server_name: str = field(default_factory=lambda: os.getenv("MCP_SERVER_NAME", "midjourney"))
transport: str = field(default_factory=lambda: os.getenv("MCP_TRANSPORT", "stdio"))
log_level: str = field(default_factory=lambda: os.getenv("LOG_LEVEL", "INFO"))
def validate(self) -> None:
"""Validate required settings."""
if not self.api_token:
raise ValueError(
"ACEDATACLOUD_API_TOKEN environment variable is required."
"Get your token from https://platform.acedata.cloud"
)
@property
def is_configured(self) -> bool:
"""Check if the API token is configured."""
return bool(self.api_token)
# Global settings instance
settings = Settings()