-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstop_mcp_for_trae.sh
More file actions
executable file
·100 lines (82 loc) · 2.41 KB
/
stop_mcp_for_trae.sh
File metadata and controls
executable file
·100 lines (82 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
# -*- coding: utf-8 -*-
# TRAE MCP Server 停止脚本
# 用于优雅地停止 MCP 服务器进程
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 默认服务器类型(toc 或 editor)
SERVER_TYPE="${1:-toc}"
# 根据服务器类型设置进程查找模式
case "$SERVER_TYPE" in
"toc")
PROCESS_PATTERN="toc_mcp_server.py"
SERVER_NAME="Markdown TOC MCP Server"
;;
"editor")
PROCESS_PATTERN="editor_mcp_server.py"
SERVER_NAME="Markdown Editor MCP Server"
;;
*)
echo "用法: $0 [toc|editor]"
echo " toc - 停止 Markdown TOC MCP 服务器(默认)"
echo " editor - 停止 Markdown Editor MCP 服务器"
exit 1
;;
esac
log_info "$SERVER_NAME 停止脚本开始执行..."
log_info "服务器类型: $SERVER_TYPE"
# 查找 MCP 服务器进程
MCP_PIDS=$(pgrep -f "$PROCESS_PATTERN" 2>/dev/null || true)
if [ -z "$MCP_PIDS" ]; then
log_warning "未找到运行中的 $SERVER_NAME 进程"
exit 0
fi
log_info "找到 $SERVER_NAME 进程: $MCP_PIDS"
# 优雅停止进程
for PID in $MCP_PIDS; do
log_info "正在停止进程 $PID..."
# 首先发送 SIGTERM 信号
if kill -TERM "$PID" 2>/dev/null; then
log_info "已发送 SIGTERM 信号到进程 $PID"
# 等待进程优雅退出
WAIT_COUNT=0
while [ $WAIT_COUNT -lt 10 ]; do
if ! kill -0 "$PID" 2>/dev/null; then
log_success "进程 $PID 已优雅退出"
break
fi
sleep 1
WAIT_COUNT=$((WAIT_COUNT + 1))
done
# 如果进程仍在运行,强制终止
if kill -0 "$PID" 2>/dev/null; then
log_warning "进程 $PID 未在规定时间内退出,强制终止..."
if kill -KILL "$PID" 2>/dev/null; then
log_success "进程 $PID 已强制终止"
else
log_error "无法终止进程 $PID"
fi
fi
else
log_error "无法发送信号到进程 $PID"
fi
done
log_success "$SERVER_NAME 停止脚本执行完成"