#!/usr/bin/env python
import asyncio
import os
import sys
import logging
from datetime import datetime
from claude_mcp_data_explorer.server import create_server
# Configure logging
log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "logs")
os.makedirs(log_dir, exist_ok=True)
log_file = os.path.join(log_dir, f"server_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log")
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler()
]
)
async def main():
# Set binary mode for stdin/stdout on Windows
if sys.platform == 'win32':
import msvcrt
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
logging.info("Starting Claude MCP Data Explorer Server")
# Create and run the server
server = create_server()
await server.start()
if __name__ == "__main__":
try:
asyncio.run(main())
except Exception as e:
logging.error(f"Server error: {e}", exc_info=True)
sys.exit(1)