diff --git a/mcp_server_launcher.py b/mcp_server_launcher.py new file mode 100644 index 0000000..34edc44 --- /dev/null +++ b/mcp_server_launcher.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +""" +Fixed Dolibarr MCP Server launcher. +This script ensures the module can be found and launched correctly. +""" + +import sys +import os +import logging +from pathlib import Path + +# Setup logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +def setup_python_path(): + """Add necessary directories to Python path.""" + script_dir = Path(__file__).resolve().parent + + # Try different possible locations + paths_to_try = [ + script_dir, # Current directory + script_dir / 'src', # src subdirectory + script_dir.parent, # Parent directory + script_dir.parent / 'src', # Parent's src subdirectory + ] + + for path in paths_to_try: + if path.exists() and str(path) not in sys.path: + sys.path.insert(0, str(path)) + logger.info(f"Added to Python path: {path}") + + # Also check if we're in a virtual environment + if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix): + logger.info(f"Running in virtual environment: {sys.prefix}") + +def main(): + """Main entry point.""" + setup_python_path() + + try: + # Try to import and run the server + from dolibarr_mcp.dolibarr_mcp_server import main as server_main + logger.info("Successfully imported dolibarr_mcp server") + server_main() + except ImportError as e: + logger.error(f"Failed to import dolibarr_mcp: {e}") + logger.error("Trying alternative import...") + try: + # Try alternative import path + from src.dolibarr_mcp.dolibarr_mcp_server import main as server_main + logger.info("Successfully imported using alternative path") + server_main() + except ImportError as e2: + logger.error(f"Failed with alternative import: {e2}") + logger.error("Please ensure the dolibarr_mcp module is installed correctly.") + logger.error("Try running: pip install -e . from the project root directory") + sys.exit(1) + +if __name__ == "__main__": + main()