Agent Construct
by batteryshark
"""
Configuration management for the MCP server.
"""
import os
from pathlib import Path
from typing import Optional
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
class ServerConfig:
"""Server configuration management."""
def __init__(self):
# Server settings
self.debug_mode = os.getenv('DEBUG_MODE', 'false').lower() == 'true'
self.port = int(os.getenv("MCP_SERVER_PORT", "32823"))
self.host = os.getenv("MCP_SERVER_HOST", "127.0.0.1") # Default to localhost
self.name = os.getenv("MCP_SERVER_NAME", "MCP Tool Server")
self.reload_delay = float(os.getenv("MCP_RELOAD_DELAY", "1.0"))
# Directory paths
self.tools_dir = self._resolve_path(
os.getenv("MCP_TOOLS_DIR"),
"tools"
)
self.config_dir = self._resolve_path(
os.getenv("MCP_CONFIG_DIR"),
"config"
)
# Ensure directories exist
self._ensure_directories()
# Log configuration on init
self._log_config()
def _resolve_path(self, env_path: Optional[str], default_name: str) -> Path:
"""Resolve a directory path from environment or default."""
if env_path:
return Path(env_path).resolve()
return Path.cwd() / default_name
def _ensure_directories(self):
"""Ensure required directories exist."""
self.tools_dir.mkdir(parents=True, exist_ok=True)
self.config_dir.mkdir(parents=True, exist_ok=True)
def _log_config(self):
"""Log the current configuration."""
import logging
logger = logging.getLogger(__name__)
logger.info("Server Configuration:")
logger.info(f" Host: {self.host}")
logger.info(f" Port: {self.port}")
logger.info(f" Debug Mode: {self.debug_mode}")
logger.info(f" Tools Directory: {self.tools_dir}")
logger.info(f" Config Directory: {self.config_dir}")
# Global configuration instance
config = ServerConfig()