-
-
Notifications
You must be signed in to change notification settings - Fork 185
Expand file tree
/
Copy pathrun_server.py
More file actions
81 lines (61 loc) · 2.15 KB
/
Copy pathrun_server.py
File metadata and controls
81 lines (61 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/env python
"""
Standalone script to run the Odoo MCP server
Uses the same approach as in the official MCP SDK examples
"""
import datetime
import logging
import os
import sys
from odoo_mcp.server import mcp
SECRET_ENV_KEYS = {"ODOO_PASSWORD", "ODOO_API_KEY"}
def setup_logging():
"""Set up logging to both console and file"""
log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "logs")
os.makedirs(log_dir, exist_ok=True)
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
log_file = os.path.join(log_dir, f"mcp_server_{timestamp}.log")
# Configure logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# Console handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# File handler
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
# Format for both handlers
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# Add handlers to logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger
def main() -> int:
"""
Run the MCP server based on the official examples
"""
logger = setup_logging()
try:
logger.info("=== ODOO MCP SERVER STARTING ===")
logger.info(f"Python version: {sys.version}")
logger.info("Environment variables:")
for key, value in os.environ.items():
if key.startswith(("ODOO_", "MCP_")):
if key in SECRET_ENV_KEYS:
logger.info(f" {key}: ***hidden***")
else:
logger.info(f" {key}: {value}")
logger.info(f"MCP object type: {type(mcp)}")
logger.info("Starting Odoo MCP server with stdio transport...")
mcp.run(transport="stdio")
logger.info("MCP server stopped normally")
return 0
except Exception as e:
logger.error(f"Fatal error: {e}", exc_info=True)
return 1
if __name__ == "__main__":
sys.exit(main())