Files
unraid-mcp/unraid_mcp/main.py
Jacob Magar 60defc35ca feat: add 5 notification mutations + comprehensive refactors from PR review
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>
2026-03-13 01:54:55 -04:00

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()