cd0c730abe
- Wrap MCP server and watcher startup in try/except. - Log warnings but never block WebUI launch.
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
"""
|
|
Entrypoint for running ScrAIbe as a module:
|
|
|
|
python -m scraibe
|
|
|
|
Always launches the Web GUI (Gradio).
|
|
Optionally launches:
|
|
- MCP-style API server
|
|
- Watch-folder mode
|
|
"""
|
|
|
|
import os
|
|
import threading
|
|
import logging
|
|
|
|
logger = logging.getLogger("scraibe.__main__")
|
|
|
|
from .webui import create_app
|
|
|
|
|
|
def _run_mcp_server():
|
|
"""
|
|
Run MCP server in a separate thread.
|
|
"""
|
|
import uvicorn
|
|
from . import mcp_server
|
|
|
|
host = os.getenv("MCP_SERVER_HOST", "0.0.0.0")
|
|
port = int(os.getenv("MCP_SERVER_PORT", "8000"))
|
|
|
|
uvicorn.run(
|
|
mcp_server.app,
|
|
host=host,
|
|
port=port,
|
|
log_level="info",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Optionally start MCP server in background (non-blocking)
|
|
mcp_enabled = os.getenv("MCP_SERVER_ENABLED", "false").strip().lower() in ("true", "1", "yes")
|
|
if mcp_enabled:
|
|
try:
|
|
t = threading.Thread(target=_run_mcp_server, daemon=True)
|
|
t.start()
|
|
logger.info("MCP server started in background.")
|
|
except Exception as e:
|
|
logger.warning("Failed to start MCP server (WebUI will continue): %s", e)
|
|
|
|
# Optionally start watch-folder mode (non-blocking)
|
|
try:
|
|
from .watcher import start_watcher
|
|
start_watcher()
|
|
logger.info("Watch-folder mode started.")
|
|
except Exception as e:
|
|
logger.warning("Failed to start watch-folder mode (WebUI will continue): %s", e)
|
|
|
|
# Always start WebUI (Gradio)
|
|
create_app()
|