"""
Configuration management for Cyber Sentinel MCP Server
"""
import os
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
"""Application settings with environment variable support"""
# API Keys for threat intelligence sources
virustotal_api_key: Optional[str] = Field(
default=None, description="VirusTotal API key"
)
abuseipdb_api_key: Optional[str] = Field(
default=None, description="AbuseIPDB API key"
)
urlhaus_api_key: Optional[str] = Field(
default=None, description="URLhaus API key (optional)"
)
shodan_api_key: Optional[str] = Field(default=None, description="Shodan API key")
otx_api_key: Optional[str] = Field(
default=None, description="AlienVault OTX API key"
)
# Rate limiting settings
max_requests_per_minute: int = Field(
default=60, description="Maximum requests per minute across all APIs"
)
request_timeout: int = Field(default=30, description="Request timeout in seconds")
# Cache settings
cache_ttl: int = Field(
default=3600, description="Cache TTL in seconds (1 hour default)"
)
# Logging
log_level: str = Field(default="INFO", description="Logging level")
# Development settings
debug: bool = Field(default=False, description="Enable debug mode")
class Config:
# 直接从环境变量读取,不依赖.env文件
case_sensitive = False
# Global settings instance
settings = Settings()
def get_settings() -> Settings:
"""Get application settings"""
return settings
def validate_api_keys() -> dict[str, bool]:
"""Validate which API keys are available"""
return {
"virustotal": bool(settings.virustotal_api_key),
"abuseipdb": bool(settings.abuseipdb_api_key),
"urlhaus": bool(settings.urlhaus_api_key),
"shodan": bool(settings.shodan_api_key),
"otx": bool(settings.otx_api_key),
}