- README.md (英文): 项目概览 + 11 Tool 表格 + 12 env 变量全表 + 6 admin 端点 + 安全模型 (3 道防线 + 4 项额外保证) + dev 命令 - .env.example: 12 env 变量 + 默认值 + 必填标注 - scripts/dev.sh: 一键 build + 后台启动 (nohup + PID 文件) + healthz 验证 - scripts/seed.sh: admin POST 一个示例 cluster (从 .env 读 admin token) - ARCHITECTURE.md (中文): 包依赖图 + 数据流 + 11 Tool 分类 + 关键设计决策 - docs/runbook.md (中文): 部署 + 升级 + 故障排查 (401/404/422 等) - docs/systemd/spark-mcp-go.service: systemd unit 模板 README 安全模型小修正: 第 3 道防线从"spark_submit flag 白名单" (实际不存在) 改为 "upload_file 路径白名单", 加 Additional guarantees 小节列 slice form / json:"-" / 跨主机 redirect / per-tool log 权限。 Co-Authored-By: Claude <noreply@anthropic.com>
46 lines
973 B
Bash
Executable File
46 lines
973 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# One-command build + start + health check for spark-mcp-go.
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
# Load .env if present
|
|
if [ -f .env ]; then
|
|
set -a
|
|
# shellcheck source=/dev/null
|
|
. ./.env
|
|
set +a
|
|
fi
|
|
|
|
# Required tokens
|
|
: "${ADMIN_TOKENS:?ADMIN_TOKENS is required}"
|
|
: "${AGENT_TOKEN:?AGENT_TOKEN is required}"
|
|
|
|
LISTEN_ADDR="${LISTEN_ADDR:-:8080}"
|
|
PORT="${LISTEN_ADDR##*:}"
|
|
PID_FILE="./data/spark-mcp.pid"
|
|
|
|
echo ">> go build"
|
|
go build -o ./spark-mcp-go .
|
|
|
|
mkdir -p ./data/logs/tools
|
|
|
|
echo ">> starting server on port ${PORT}"
|
|
nohup ./spark-mcp-go > ./data/logs/spark-mcp.log 2>&1 &
|
|
PID=$!
|
|
echo "${PID}" > "${PID_FILE}"
|
|
|
|
sleep 2
|
|
|
|
echo ">> health check"
|
|
if curl -sS "http://127.0.0.1:${PORT}/healthz"; then
|
|
echo
|
|
echo ">> running, PID=${PID}, log=./data/logs/spark-mcp.log"
|
|
else
|
|
echo
|
|
echo ">> health check failed; see ./data/logs/spark-mcp.log"
|
|
kill "${PID}" 2>/dev/null || true
|
|
rm -f "${PID_FILE}"
|
|
exit 1
|
|
fi
|