"""Main entry point for MCP JIRA server using FastMCP."""
import logging
import sys
from mcp_jira.config import get_config
from mcp_jira.server.mcp_server import mcp
def setup_logging(log_level: str = "INFO", debug: bool = False) -> None:
"""Set up logging configuration.
Args:
log_level: Logging level
debug: Whether to enable debug mode
"""
level = logging.DEBUG if debug else getattr(logging, log_level.upper(), logging.INFO)
logging.basicConfig(
level=level,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.StreamHandler(sys.stderr), # MCP uses stdout for protocol, stderr for logs
],
)
def main() -> None:
"""Main entry point."""
try:
# Load configuration
config = get_config()
# Setup logging
setup_logging(config.log_level, config.debug)
logger = logging.getLogger(__name__)
logger.info("Starting MCP JIRA Server with FastMCP")
# Run the server
mcp.run()
except KeyboardInterrupt:
logger = logging.getLogger(__name__)
logger.info("Server stopped by user")
sys.exit(0)
except Exception as e:
logger = logging.getLogger(__name__)
logger.error(f"Server error: {e}", exc_info=True)
sys.exit(1)
if __name__ == "__main__":
main()