Materials_discovery / entrypoint.py
SEUyishu's picture
Update entrypoint.py
4920545 verified
#!/usr/bin/env python3
"""
Entrypoint for GNoME Materials Discovery MCP Service.
This script starts the MCP server for HuggingFace Spaces deployment
with SSE transport for Cursor connection.
"""
import os
import sys
import logging
import glob
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def find_start_mcp():
"""Find the start_mcp.py file."""
# Check in the same directory first
script_dir = os.path.dirname(os.path.abspath(__file__))
start_mcp = os.path.join(script_dir, "start_mcp.py")
if os.path.exists(start_mcp):
return start_mcp
# Search in common locations
search_paths = [
"/app/start_mcp.py",
"/app/mcp_output/start_mcp.py",
os.path.join(os.getcwd(), "start_mcp.py"),
]
for path in search_paths:
if os.path.exists(path):
return path
# Glob search as fallback
matches = glob.glob("/app/**/start_mcp.py", recursive=True)
if matches:
return matches[0]
return None
def main():
"""Main entry point - delegates to start_mcp.py"""
logger.info("=" * 60)
logger.info("GNoME Materials Discovery MCP Server - Entrypoint")
logger.info("=" * 60)
# Find start_mcp.py
start_mcp = find_start_mcp()
if not start_mcp:
logger.error("Could not find start_mcp.py!")
sys.exit(1)
logger.info(f"Found start_mcp.py at: {start_mcp}")
# Get configuration from environment
mode = os.environ.get("MCP_MODE", "sse")
host = os.environ.get("MCP_HOST", "0.0.0.0")
port = os.environ.get("PORT", os.environ.get("MCP_PORT", "7860"))
logger.info(f"Configuration: mode={mode}, host={host}, port={port}")
# Build arguments
args = [
sys.executable,
start_mcp,
"--mode", mode,
"--host", host,
"--port", str(port)
]
logger.info(f"Executing: {' '.join(args)}")
# Execute start_mcp.py - replaces current process
os.execv(sys.executable, args)
if __name__ == "__main__":
main()