"""
설정 및 환경 변수 관리
"""
import os
import logging
# 로깅 설정은 server.py에서 중앙 관리합니다 (stdout 오염 방지)
logger = logging.getLogger(__name__)
def validate_environment() -> tuple[bool, list[str]]:
"""환경 변수를 검증합니다."""
# 필수 환경 변수 확인
required_vars = ["ZABBIX_URL"]
missing_vars = [var for var in required_vars if not os.getenv(var)]
if missing_vars:
return False, missing_vars
# API 토큰 또는 사용자 인증 정보 확인
has_token = bool(os.getenv("ZABBIX_API_TOKEN"))
has_credentials = bool(os.getenv("ZABBIX_USER") and os.getenv("ZABBIX_PASSWORD"))
if not has_token and not has_credentials:
return False, ["ZABBIX_API_TOKEN 또는 ZABBIX_USER/ZABBIX_PASSWORD를 MCP 설정의 env에 추가해주세요"]
return True, []
def get_zabbix_config() -> dict[str, str]:
"""Zabbix 설정을 반환합니다."""
verify_ssl_env = os.getenv("ZABBIX_VERIFY_SSL", "true").strip().lower()
# true/false/1/0/yes/no 지원
verify_ssl = verify_ssl_env in ("1", "true", "yes", "y")
timeout_env = os.getenv("ZABBIX_TIMEOUT", "30").strip()
try:
timeout = int(timeout_env)
except ValueError:
timeout = 30
return {
"url": os.getenv("ZABBIX_URL", ""),
"api_token": os.getenv("ZABBIX_API_TOKEN", ""),
"username": os.getenv("ZABBIX_USER", ""),
"password": os.getenv("ZABBIX_PASSWORD", ""),
"verify_ssl": verify_ssl,
"timeout": timeout,
}