"""MCP server factory: creates and configures the FastMCP instance.""" from __future__ import annotations import logging from typing import TYPE_CHECKING from mcp.server.fastmcp import FastMCP if TYPE_CHECKING: from mcp_synology_container.config import AppConfig from mcp_synology_container.dsm_client import DsmClient logger = logging.getLogger(__name__) def create_server(config: AppConfig, client: DsmClient) -> FastMCP: """Create and configure the MCP server with all tools registered. Args: config: Application configuration. client: Authenticated DsmClient instance. Returns: Configured FastMCP server ready to run. """ mcp = FastMCP("mcp-synology-container") from mcp_synology_container.modules.compose import register_compose from mcp_synology_container.modules.containers import register_containers from mcp_synology_container.modules.images import register_images from mcp_synology_container.modules.networks import register_networks from mcp_synology_container.modules.projects import register_projects from mcp_synology_container.modules.registry import register_registry from mcp_synology_container.modules.system import register_system register_projects(mcp, config, client) register_containers(mcp, config, client) register_compose(mcp, config, client) register_images(mcp, config, client) register_system(mcp, config, client) register_networks(mcp, config, client) register_registry(mcp, config, client) logger.info("MCP server configured with all tool modules") return mcp