posimai-root/scripts/start-postgres-mcp.sh

41 lines
1.4 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# PostgreSQL MCP トンネル + サーバー起動スクリプト
# 使い方: .mcp.json から自動呼び出し
# 認証情報は .mcp.json (gitignore済み) に記載
set -e
VPS_HOST="root@85.131.245.239"
VPS_KEY="$HOME/.ssh/soar-enrich-openssh.pem"
TUNNEL_PORT=15432
CONTAINER="posimai-db-1"
# Docker コンテナ IP を動的取得(コンテナ再作成時も対応)
DOCKER_IP=$(ssh -i "$VPS_KEY" -o BatchMode=yes -o ConnectTimeout=10 "$VPS_HOST" \
"docker inspect ${CONTAINER} --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'" 2>/dev/null)
if [ -z "$DOCKER_IP" ]; then
echo "[MCP] ERROR: ${CONTAINER} の IP 取得失敗。VPS/コンテナを確認してください。" >&2
exit 1
fi
echo "[MCP] ${CONTAINER} IP: ${DOCKER_IP}" >&2
# 既存トンネルの確認
if ! ss -tlnp 2>/dev/null | grep -q ":$TUNNEL_PORT" && \
! netstat -an 2>/dev/null | grep -q "127.0.0.1:$TUNNEL_PORT"; then
echo "[MCP] SSH トンネル起動中..." >&2
ssh -i "$VPS_KEY" \
-o BatchMode=yes \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-fN \
-L "${TUNNEL_PORT}:${DOCKER_IP}:5432" \
"$VPS_HOST"
sleep 1
echo "[MCP] トンネル起動完了 localhost:${TUNNEL_PORT}" >&2
else
echo "[MCP] トンネル既に起動済み localhost:${TUNNEL_PORT}" >&2
fi
# MCP サーバー起動 (接続文字列は .mcp.json の引数から渡される)
exec "$@"