import logging
import sys
import os
def setup_logger(name="scvi-mcp-server", log_file=None):
"""
Configure and return a logger
Parameters:
name: Logger name
log_file: Log file name, if None output to stderr (not stdout!)
Returns:
Configured logger
"""
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
# If handlers already exist, don't add more
if logger.handlers:
return logger
# Create formatter
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
'%Y-%m-%d %H:%M:%S'
)
if log_file:
log_handler = logging.FileHandler(log_file)
log_handler.setFormatter(formatter)
logger.addHandler(log_handler)
else:
# IMPORTANT: Use stderr, not stdout!
# MCP uses stdout for JSON-RPC communication
log_handler = logging.StreamHandler(sys.stderr)
log_handler.setFormatter(formatter)
logger.addHandler(log_handler)
return logger