"""Configuration management for Google Ads MCP server."""
import os
from pathlib import Path
from pydantic_settings import BaseSettings
from pydantic import Field
from dotenv import load_dotenv
# Load .env file if it exists
load_dotenv()
# Project paths
PROJECT_ROOT = Path(__file__).parent.parent
DATA_DIR = PROJECT_ROOT / "data"
KNOWLEDGE_DIR = DATA_DIR / "knowledge"
DATABASE_PATH = DATA_DIR / "memory.db"
class GoogleAdsSettings(BaseSettings):
"""Google Ads API credentials and configuration."""
client_id: str = Field(default="", alias="GOOGLE_ADS_CLIENT_ID")
client_secret: str = Field(default="", alias="GOOGLE_ADS_CLIENT_SECRET")
developer_token: str = Field(default="", alias="GOOGLE_ADS_DEVELOPER_TOKEN")
refresh_token: str = Field(default="", alias="GOOGLE_ADS_REFRESH_TOKEN")
customer_id: str = Field(default="", alias="GOOGLE_ADS_CUSTOMER_ID")
login_customer_id: str | None = Field(default=None, alias="GOOGLE_ADS_LOGIN_CUSTOMER_ID")
class Config:
env_file = ".env"
extra = "ignore"
@property
def is_configured(self) -> bool:
"""Check if all required credentials are set."""
return all([
self.client_id,
self.client_secret,
self.developer_token,
self.refresh_token,
self.customer_id,
])
# Global settings instance
settings = GoogleAdsSettings()