Odoo MCP Server

by tuanle96
Verified
""" Command line entry point for the Odoo MCP Server """ import sys import asyncio import traceback import os from .server import mcp def main() -> int: """ Run the MCP server """ try: print("=== ODOO MCP SERVER STARTING ===", file=sys.stderr) print(f"Python version: {sys.version}", file=sys.stderr) print("Environment variables:", file=sys.stderr) for key, value in os.environ.items(): if key.startswith("ODOO_"): if key == "ODOO_PASSWORD": print(f" {key}: ***hidden***", file=sys.stderr) else: print(f" {key}: {value}", file=sys.stderr) # Check if server instance has the run_stdio method methods = [method for method in dir(mcp) if not method.startswith('_')] print(f"Available methods on mcp object: {methods}", file=sys.stderr) print("Starting MCP server with run() method...", file=sys.stderr) sys.stderr.flush() # Ensure log information is written immediately # Use the run() method directly mcp.run() # If execution reaches here, the server exited normally print("MCP server stopped normally", file=sys.stderr) return 0 except KeyboardInterrupt: print("MCP server stopped by user", file=sys.stderr) return 0 except Exception as e: print(f"Error starting server: {e}", file=sys.stderr) print("Exception details:", file=sys.stderr) traceback.print_exc(file=sys.stderr) print("\nServer object information:", file=sys.stderr) print(f"MCP object type: {type(mcp)}", file=sys.stderr) print(f"MCP object dir: {dir(mcp)}", file=sys.stderr) return 1 if __name__ == "__main__": sys.exit(main())