mirror of
https://github.com/jmagar/unraid-mcp.git
synced 2026-03-23 04:29:17 -07:00
New notification actions (archive_many, create_unique, unarchive_many, unarchive_all, recalculate) bring unraid_notifications to 14 actions. Also includes continuation of CodeRabbit/PR review fixes: - Remove redundant try-except in virtualization.py (silent failure fix) - Add QueryCache protocol with get/put/invalidate_all to core/client.py - Refactor subscriptions (manager, diagnostics, resources, utils) - Update config (logging, settings) for improved structure - Expand test coverage: http_layer, safety guards, schema validation - Minor cleanups: array, docker, health, keys tools Co-authored-by: Claude <noreply@anthropic.com>
58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Unraid MCP Server - Entry Point.
|
|
|
|
This is the main entry point for the Unraid MCP Server. It imports and starts
|
|
the modular server implementation from unraid_mcp.server.
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
|
|
|
|
async def shutdown_cleanup() -> None:
|
|
"""Cleanup resources on server shutdown."""
|
|
try:
|
|
from .subscriptions.manager import subscription_manager
|
|
|
|
await subscription_manager.stop_all()
|
|
except Exception as e:
|
|
print(f"Error stopping subscriptions during cleanup: {e}", file=sys.stderr)
|
|
|
|
try:
|
|
from .core.client import close_http_client
|
|
|
|
await close_http_client()
|
|
except Exception as e:
|
|
print(f"Error during cleanup: {e}", file=sys.stderr)
|
|
|
|
|
|
def _run_shutdown_cleanup() -> None:
|
|
"""Run shutdown cleanup, suppressing expected event loop errors."""
|
|
try:
|
|
asyncio.run(shutdown_cleanup())
|
|
except RuntimeError as e:
|
|
msg = str(e).lower()
|
|
if "event loop is closed" in msg or "no running event loop" in msg:
|
|
pass # Expected during shutdown
|
|
else:
|
|
print(f"WARNING: Unexpected error during cleanup: {e}", file=sys.stderr)
|
|
|
|
|
|
def main() -> None:
|
|
"""Main entry point for the Unraid MCP Server."""
|
|
try:
|
|
from .server import run_server
|
|
|
|
run_server()
|
|
except KeyboardInterrupt:
|
|
print("\nServer stopped by user")
|
|
_run_shutdown_cleanup()
|
|
except Exception as e:
|
|
print(f"Server failed to start: {e}")
|
|
_run_shutdown_cleanup()
|
|
raise
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|