#!/usr/bin/env python3
"""
Looker Admin MCP server entry point.
Configures and runs the MCP server with the selected transport mode.
"""
import os
import sys
import logging
import asyncio
from .looker import mcp, main as looker_main, register_admin_tools
from .transports import get_transport_mode, run_stdio_mode, configure_sse_mode
# Set up logging to stderr
logging.basicConfig(
level=logging.DEBUG if os.environ.get("MCP_DEBUG") else logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
stream=sys.stderr
)
logger = logging.getLogger('looker-admin-mcp')
async def run_server():
"""Create and run the MCP server."""
# Register admin tools before starting
register_admin_tools()
# Get transport mode
mode = get_transport_mode()
logger.info(f"Starting MCP server with transport mode: {mode}")
# Run the server with the appropriate transport
if mode == "stdio":
await run_stdio_mode(mcp)
elif mode == "sse":
await configure_sse_mode(mcp)
else:
logger.error(f"Unsupported transport mode: {mode}")
sys.exit(1)
def main():
"""Entry point for running the server."""
try:
asyncio.run(run_server())
except KeyboardInterrupt:
logger.info("Server stopped by user")
except Exception as e:
logger.error(f"Error running server: {e}")
logger.exception("Unhandled exception during server run:")
sys.exit(1)
if __name__ == "__main__":
main()