Unraid MCP Server

by jmagar
Verified
#!/usr/bin/env python3 """ Unraid MCP Server - Entry Point This script is the main entry point for running the Unraid MCP server. """ import sys import os import logging from dotenv import load_dotenv # Load environment variables before importing config load_dotenv() # Import the server from src.server import UnraidMCPServer from src.config import Config, setup_logging if __name__ == "__main__": # Set up logging with debug level logger = setup_logging("unraid_mcp_runner", logging.DEBUG) logger.info("Starting Unraid MCP Server (Runner)") # Log environment and configuration logger.debug(f"Python version: {sys.version}") logger.debug(f"Working directory: {os.getcwd()}") logger.debug(f"Log file: {Config.LOG_FILE}") logger.debug(f"Log level: {logging.getLevelName(logger.level)}") try: # Create and run the server transport = "stdio" # Always use stdio transport by default # Check command line args for transport override (only for stdio) if len(sys.argv) > 1: if sys.argv[1].lower() == "stdio": transport = "stdio" logger.info(f"Transport confirmed from command line: {transport}") # SSE transport is commented out as we're using stdio by default # elif sys.argv[1].lower() == "sse": # transport = "sse" # logger.info(f"Transport overridden from command line: {transport}") # Log key configuration logger.info(f"Claude mode: {Config.CLAUDE_MODE}") logger.info(f"Using stdio transport for AI assistant integration") # SSE transport logging is commented out as we're using stdio by default # if Config.CLAUDE_MODE: # logger.info(f"Using stdio transport for Claude integration") # else: # logger.info(f"Using SSE transport on {Config.SERVER_HOST}:{Config.SERVER_PORT}") # Start the server with stdio transport server = UnraidMCPServer() logger.info("Server initialized, starting transport...") server.run(transport) except KeyboardInterrupt: logger.info("Server stopped by user") except Exception as e: logger.error(f"Error starting server: {str(e)}", exc_info=True) sys.exit(1)