MCP YNAB Server

import argparse import signal import sys from typing import NoReturn from dotenv import load_dotenv from .server import mcp def handle_sigint(signum, frame): """Handle SIGINT (Ctrl+C) gracefully.""" print("\nReceived SIGINT. Shutting down...", file=sys.stderr) sys.exit(0) def main() -> NoReturn: """Entry point for the YNAB MCP server.""" parser = argparse.ArgumentParser(description="YNAB (You Need A Budget) API integration for MCP") parser.add_argument("--debug", action="store_true", help="Enable debug logging") args = parser.parse_args() # Load environment variables from .env file load_dotenv() # Set up signal handling signal.signal(signal.SIGINT, handle_sigint) # Run the MCP server try: if args.debug: print("Starting YNAB MCP server in debug mode...", file=sys.stderr) mcp.run() sys.exit(0) # This line will never be reached due to mcp.run() being blocking except KeyboardInterrupt: print("\nShutting down...", file=sys.stderr) sys.exit(0) except Exception as e: print(f"Error: {e}", file=sys.stderr) sys.exit(1) if __name__ == "__main__": main()