diff options
Diffstat (limited to 'start_mcp.sh')
| -rwxr-xr-x | start_mcp.sh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/start_mcp.sh b/start_mcp.sh new file mode 100755 index 0000000..30cc24e --- /dev/null +++ b/start_mcp.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# MCP server 启动 wrapper:检测 tmux session name 并传给 python +# 用进程树反查 pane PID → session name + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" + +# 检测 session name: 遍历 PID 往上找 +detect_session() { + local check_pid=$$ + local pane_pids + pane_pids=$(tmux list-panes -a -F "#{pane_pid} #{session_name}" 2>/dev/null) || return + + for i in $(seq 1 50); do + local match + match=$(echo "$pane_pids" | grep "^${check_pid} " | head -1 | cut -d' ' -f2) + if [ -n "$match" ]; then + echo "$match" + return + fi + # 获取 PPID + local ppid + ppid=$(awk '{print $4}' /proc/${check_pid}/stat 2>/dev/null) || return + [ "$ppid" -le 1 ] && return + check_pid=$ppid + done +} + +export CLAUDE_SESSION_NAME=$(detect_session) +exec python3 "$SCRIPT_DIR/mcp_lab_worker.py" |
