#!/usr/bin/env bash set -euo pipefail cd "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" mcp_entry_name="${MCP_ENTRY_NAME:-MetPy}" mcp_entry_url="${MCP_ENTRY_URL:-http://localhost:7978/mcp}" mcp_dir="${HOME}/.cursor" mcp_path="${mcp_dir}/mcp.json" mkdir -p "${mcp_dir}" if command -v python3 >/dev/null 2>&1; then python3 - "${mcp_path}" "${mcp_entry_name}" "${mcp_entry_url}" <<'PY' import json, os, sys path, name, url = sys.argv[1:4] cfg = {"mcpServers": {}} if os.path.exists(path): try: with open(path, "r", encoding="utf-8") as f: cfg = json.load(f) except Exception: cfg = {"mcpServers": {}} if not isinstance(cfg, dict): cfg = {"mcpServers": {}} servers = cfg.get("mcpServers") if not isinstance(servers, dict): servers = {} ordered = {} for k, v in servers.items(): if k != name: ordered[k] = v ordered[name] = {"url": url} cfg = {"mcpServers": ordered} with open(path, "w", encoding="utf-8") as f: json.dump(cfg, f, indent=2, ensure_ascii=False) PY elif command -v python >/dev/null 2>&1; then python - "${mcp_path}" "${mcp_entry_name}" "${mcp_entry_url}" <<'PY' import json, os, sys path, name, url = sys.argv[1:4] cfg = {"mcpServers": {}} if os.path.exists(path): try: with open(path, "r", encoding="utf-8") as f: cfg = json.load(f) except Exception: cfg = {"mcpServers": {}} if not isinstance(cfg, dict): cfg = {"mcpServers": {}} servers = cfg.get("mcpServers") if not isinstance(servers, dict): servers = {} ordered = {} for k, v in servers.items(): if k != name: ordered[k] = v ordered[name] = {"url": url} cfg = {"mcpServers": ordered} with open(path, "w", encoding="utf-8") as f: json.dump(cfg, f, indent=2, ensure_ascii=False) PY elif command -v jq >/dev/null 2>&1; then name="${mcp_entry_name}"; url="${mcp_entry_url}" if [ -f "${mcp_path}" ]; then tmp="$(mktemp)" jq --arg name "$name" --arg url "$url" ' .mcpServers = (.mcpServers // {}) | .mcpServers as $s | ($s | with_entries(select(.key != $name))) as $base | .mcpServers = ($base + {($name): {"url": $url}}) ' "${mcp_path}" > "${tmp}" && mv "${tmp}" "${mcp_path}" else printf '{ "mcpServers": { "%s": { "url": "%s" } } } ' "$name" "$url" > "${mcp_path}" fi fi docker build -t MetPy-mcp . docker run --rm -p 7978:7860 MetPy-mcp