Skip to main content
Glama

Odoo MCP Server Advanced

by AlanOgic
run.pyβ€’6.66 kB
#!/usr/bin/env python3 """ Odoo MCP Server Launcher Interactive menu to choose transport mode """ import sys import subprocess from pathlib import Path def print_banner(): """Print ASCII art banner""" banner = r""" ╔══════════════════════════════════════════════════════════════════════════╗ β•‘ β•‘ β•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β•‘ β•‘ β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•— β•‘ β•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β•‘ β•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β•β•β• β•‘ β•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β•‘ β•‘ β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β• β•šβ•β• β•šβ•β•β•β•β•β•β•šβ•β• β•‘ β•‘ β•‘ β•‘ Model Context Protocol Server β•‘ β•‘ β•‘ β•‘ Two tools. Infinite possibilities. Full API access. β•‘ β•‘ β•‘ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• v1.0.0-beta by AlanOgic | info@alanogic.com """ print(banner) def print_menu(): """Print transport selection menu""" menu = """ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Select Transport Mode β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ [1] STDIO Transport (Claude Desktop) β”‚ β”‚ β†’ Process pipes (stdin/stdout) β”‚ β”‚ β†’ No network required β”‚ β”‚ β†’ Default for Claude Desktop integration β”‚ β”‚ β”‚ β”‚ [2] SSE Transport (Web Browsers) β”‚ β”‚ β†’ Server-Sent Events β”‚ β”‚ β†’ http://0.0.0.0:8009/sse β”‚ β”‚ β†’ Perfect for web-based clients β”‚ β”‚ β”‚ β”‚ [3] HTTP Transport (API Integrations) β”‚ β”‚ β†’ Streamable HTTP β”‚ β”‚ β†’ http://0.0.0.0:8008/mcp β”‚ β”‚ β†’ REST API compatible β”‚ β”‚ β”‚ β”‚ [0] Exit β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ """ print(menu) def run_server(choice: str) -> None: """Run the selected server""" scripts = { "1": ("STDIO", "run_server.py"), "2": ("SSE", "run_server_sse.py"), "3": ("HTTP", "run_server_http.py"), } if choice not in scripts: print("\n❌ Invalid choice!") return transport_name, script_name = scripts[choice] script_path = Path(__file__).parent / script_name if not script_path.exists(): print(f"\n❌ Error: {script_name} not found!") print(f" Expected location: {script_path}") return print(f"\nπŸš€ Starting {transport_name} Transport...") print(f" Script: {script_name}") if choice == "2": print(f" URL: http://0.0.0.0:8009/sse") print(f" Press Ctrl+C to stop") elif choice == "3": print(f" URL: http://0.0.0.0:8008/mcp") print(f" Press Ctrl+C to stop") print() print("─" * 70) print() try: # Run the server script subprocess.run([sys.executable, str(script_path)], check=True) except KeyboardInterrupt: print("\n\n⚠️ Server stopped by user") except subprocess.CalledProcessError as e: print(f"\n❌ Server exited with error code {e.returncode}") except Exception as e: print(f"\n❌ Error: {e}") def main(): """Main entry point""" print_banner() while True: print_menu() try: choice = input(" Enter your choice [0-3]: ").strip() except KeyboardInterrupt: print("\n\nπŸ‘‹ Goodbye!") sys.exit(0) except EOFError: print("\n\nπŸ‘‹ Goodbye!") sys.exit(0) if choice == "0": print("\nπŸ‘‹ Goodbye!") sys.exit(0) if choice in ["1", "2", "3"]: run_server(choice) print("\n" + "=" * 70) print("Server stopped. Returning to menu...") print("=" * 70 + "\n") else: print("\n❌ Invalid choice! Please select 0-3.\n") if __name__ == "__main__": main()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlanOgic/mcp-odoo-adv'

If you have feedback or need assistance with the MCP directory API, please join our Discord server