Spaces:
Sleeping
Sleeping
""" | |
Script to run either the MCP server or the Gradio interface | |
""" | |
import argparse | |
import importlib.util | |
import os | |
import sys | |
def load_module(name, path): | |
"""Load a module from path""" | |
spec = importlib.util.spec_from_file_location(name, path) | |
module = importlib.util.module_from_spec(spec) | |
spec.loader.exec_module(module) | |
return module | |
def run_mcp_server(): | |
"""Run the MCP server""" | |
print("Starting TutorX MCP Server...") | |
main_module = load_module("main", "main.py") | |
# Access the mcp instance and run it | |
if hasattr(main_module, "mcp"): | |
main_module.mcp.run() | |
else: | |
print("Error: MCP server instance not found in main.py") | |
sys.exit(1) | |
def run_gradio_interface(): | |
"""Run the Gradio interface""" | |
print("Starting TutorX Gradio Interface...") | |
app_module = load_module("app", "app.py") | |
# Run the Gradio demo | |
if hasattr(app_module, "demo"): | |
app_module.demo.launch() | |
else: | |
print("Error: Gradio demo not found in app.py") | |
sys.exit(1) | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser(description="Run TutorX MCP Server or Gradio Interface") | |
parser.add_argument( | |
"--mode", | |
choices=["mcp", "gradio", "both"], | |
default="mcp", | |
help="Run mode: 'mcp' for MCP server, 'gradio' for Gradio interface, 'both' for both" | |
) | |
parser.add_argument( | |
"--host", | |
default="127.0.0.1", | |
help="Host address to use" | |
) | |
parser.add_argument( | |
"--port", | |
type=int, | |
default=8000, | |
help="Port to use" | |
) | |
args = parser.parse_args() | |
if args.mode == "mcp": | |
# Set environment variables for MCP server | |
os.environ["MCP_HOST"] = args.host | |
os.environ["MCP_PORT"] = str(args.port) | |
run_mcp_server() | |
elif args.mode == "gradio": | |
run_gradio_interface() | |
elif args.mode == "both": | |
# For 'both' mode, we'll start MCP server in a separate process | |
import subprocess | |
import time | |
# Start MCP server in a background process | |
mcp_process = subprocess.Popen( | |
[sys.executable, "run.py", "--mode", "mcp", "--host", args.host, "--port", str(args.port)], | |
stdout=subprocess.PIPE, | |
stderr=subprocess.PIPE | |
) | |
# Give the MCP server a moment to start up | |
print("Starting MCP server in background...") | |
time.sleep(2) | |
try: | |
# Then start Gradio interface | |
run_gradio_interface() | |
finally: | |
# Make sure to terminate the MCP server process when exiting | |
print("Shutting down MCP server...") | |
mcp_process.terminate() | |
mcp_process.wait(timeout=5) | |