6fa35e1b48
DSM methods for SYNO.Docker.Image/pull and SYNO.Docker.Registry/get did not behave as expected in production testing against the NAS. Tools deregistered, modules deleted, tests removed, CLAUDE.md updated. Tool count: 19 → 17. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""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.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)
|
|
|
|
logger.info("MCP server configured with all tool modules")
|
|
return mcp
|