import os
from typing import Optional
class Config:
"""Configuration class for MCP server"""
# OpenAI Configuration (supports both OpenAI and Azure OpenAI)
OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "")
AZURE_OPENAI_ENDPOINT: str = os.getenv("AZURE_OPENAI_ENDPOINT", "")
AZURE_OPENAI_API_VERSION: str = os.getenv("AZURE_OPENAI_API_VERSION", "2024-02-15-preview")
AZURE_OPENAI_DEPLOYMENT: str = os.getenv("AZURE_OPENAI_DEPLOYMENT", "")
OPENAI_MODEL: str = "gpt-4o-mini" # Default model for regular OpenAI
OPENAI_TEMPERATURE: float = 0.2
USE_AZURE_OPENAI: bool = bool(os.getenv("AZURE_OPENAI_ENDPOINT", ""))
# JWT Configuration
JWT_SECRET: str = os.getenv("JWT_SECRET", "dev-jwt-secret")
JWT_ALGORITHM: str = "HS256"
# Server Configuration
HOST: str = "0.0.0.0"
PORT: int = 8000
DEBUG: bool = True
# Resource Configuration
ALLOWED_RESOURCE_SCHEMES: list = ["file"]
MAX_FILE_SIZE: int = 10 * 1024 * 1024 # 10MB
@classmethod
def validate(cls) -> bool:
"""Validate required configuration"""
if cls.USE_AZURE_OPENAI:
if not cls.AZURE_OPENAI_ENDPOINT:
raise ValueError("AZURE_OPENAI_ENDPOINT environment variable is required for Azure OpenAI")
if not cls.AZURE_OPENAI_DEPLOYMENT:
raise ValueError("AZURE_OPENAI_DEPLOYMENT environment variable is required for Azure OpenAI")
if not cls.OPENAI_API_KEY:
raise ValueError("OPENAI_API_KEY environment variable is required (Azure OpenAI key)")
else:
if not cls.OPENAI_API_KEY:
raise ValueError("OPENAI_API_KEY environment variable is required")
return True
config = Config()