Files
Nexus/scripts/linux_mcp_mysql.sh
T
2026-07-08 22:31:31 +08:00

55 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# Cursor MCP: @yclenove/mysql-mcp-server on native Linux (Node 20+).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT="$(cd "${SCRIPT_DIR}/.." && pwd)"
cd "${PROJECT}"
if ! command -v node >/dev/null 2>&1; then
echo "ERROR: Node.js not found. Install Node 20+ (nvm/fnm/apt)." >&2
exit 1
fi
NODE_MAJOR="$(node -p "process.versions.node.split('.')[0]")"
if [ "${NODE_MAJOR}" -lt 20 ] 2>/dev/null; then
echo "ERROR: Node $(node -v) is too old; mysql-mcp-server needs Node 20+." >&2
exit 1
fi
# Package reads MYSQL_* from process env; project .env is synced via sync_mysql_mcp_env.py
if [ -f .env ]; then
set -a
# shellcheck disable=SC1091
while IFS= read -r line || [ -n "${line}" ]; do
line="${line%$'\r'}"
case "${line}" in
MYSQL_*=*)
key="${line%%=*}"
val="${line#*=}"
export "${key}=${val}"
;;
esac
done < .env
set +a
fi
# Optional SOCKS/HTTP proxy for npx (see scripts/npm-proxy.env.example)
if [ -f "${SCRIPT_DIR}/npm-proxy.env" ]; then
set -a
# shellcheck disable=SC1091
source "${SCRIPT_DIR}/npm-proxy.env"
set +a
fi
MCP_BIN="${PROJECT}/node_modules/.bin/mysql-mcp-server"
if [ -x "${MCP_BIN}" ]; then
exec "${MCP_BIN}"
fi
# npm/npx do not accept socks5:// in HTTP_PROXY (FETCH_ERROR). Use proxychains for npx fallback.
if command -v proxychains4 >/dev/null 2>&1 && [[ "${ALL_PROXY:-}${HTTP_PROXY:-}" == *socks5://* ]]; then
exec proxychains4 -q npx -y @yclenove/mysql-mcp-server
fi
exec npx -y @yclenove/mysql-mcp-server