Files
ableton-mcp-ai/AbletonMCP_AI/mcp_wrapper.py
2026-03-30 02:35:02 -03:00

61 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""Stable launcher for the AbletonMCP-AI FastMCP server."""
from __future__ import annotations
import argparse
import os
import sys
from pathlib import Path
def _resolve_code_root() -> Path:
wrapper_dir = Path(__file__).resolve().parent
candidates = []
for base in (wrapper_dir, wrapper_dir.parent):
candidates.extend(
[
base / "AbletonMCP_AI" / "AbletonMCP_AI",
base / "AbletonMCP_AI",
base,
]
)
seen = set()
for code_root in candidates:
key = str(code_root).lower()
if key in seen:
continue
seen.add(key)
if (code_root / "MCP_Server" / "server.py").exists():
return code_root
raise FileNotFoundError("Could not locate MCP_Server/server.py from wrapper")
def main() -> int:
parser = argparse.ArgumentParser(description="Launch AbletonMCP-AI")
parser.add_argument("--transport", default="stdio", choices=["stdio", "sse"])
args = parser.parse_args()
code_root = _resolve_code_root()
server_dir = code_root / "MCP_Server"
os.environ.setdefault("PYTHONUNBUFFERED", "1")
os.environ.setdefault("PYTHONIOENCODING", "utf-8")
os.environ["PYTHONPATH"] = str(code_root)
for path in (str(server_dir), str(code_root)):
if path not in sys.path:
sys.path.insert(0, path)
from MCP_Server.server import mcp
mcp.run(transport=args.transport)
return 0
if __name__ == "__main__":
raise SystemExit(main())