26 lines
853 B
Bash
26 lines
853 B
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Launch the ha-mcp stdio server. Referenced by the repo-root .mcp.json.
|
||
|
|
#
|
||
|
|
# Picks the venv at services/ha-mcp/.venv when it exists (see README.md,
|
||
|
|
# "Install"), otherwise falls back to the system python3 — which works only
|
||
|
|
# if the `mcp` SDK is installed there. Never prints to stdout: stdout is the
|
||
|
|
# JSON-RPC channel and any stray byte breaks the protocol.
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SERVICE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
VENV_PY="$SERVICE_DIR/.venv/bin/python"
|
||
|
|
|
||
|
|
if [[ -x "$VENV_PY" ]]; then
|
||
|
|
PY="$VENV_PY"
|
||
|
|
else
|
||
|
|
PY="$(command -v python3)"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! "$PY" -c "import mcp" 2>/dev/null; then
|
||
|
|
echo "ha-mcp: the 'mcp' SDK is not importable by $PY — see services/ha-mcp/README.md, 'Install'" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
export PYTHONPATH="$SERVICE_DIR/src${PYTHONPATH:+:$PYTHONPATH}"
|
||
|
|
exec "$PY" -m ha_mcp.server "$@"
|