chaimi-keep-mcp 3.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +26 -0
- package/README.md +222 -0
- package/bin/cli.js +233 -0
- package/bin/get-auth-code.js +92 -0
- package/config.example.yaml +15 -0
- package/install.sh +268 -0
- package/oauth.js +493 -0
- package/package.json +42 -0
- package/server.js +1064 -0
package/install.sh
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# 柴米记账 MCP Server 一键安装脚本
|
|
4
|
+
# 支持 macOS 和 Linux
|
|
5
|
+
# 用法: curl -fsSL https://chaihuo.io/install.sh | bash
|
|
6
|
+
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
# 颜色定义
|
|
10
|
+
RED='\033[0;31m'
|
|
11
|
+
GREEN='\033[0;32m'
|
|
12
|
+
YELLOW='\033[1;33m'
|
|
13
|
+
NC='\033[0m' # No Color
|
|
14
|
+
|
|
15
|
+
# 配置
|
|
16
|
+
INSTALL_DIR="$HOME/.chaihuo-mcp"
|
|
17
|
+
WORKBUDDY_DIR="$HOME/WorkBuddy"
|
|
18
|
+
PYTHON_VERSION="3.10"
|
|
19
|
+
SCF_URL="https://1412172089-4wbwsop8pe.ap-shanghai.tencentscf.com"
|
|
20
|
+
|
|
21
|
+
echo -e "${GREEN}=== 柴米记账 MCP Server 安装脚本 ===${NC}"
|
|
22
|
+
echo ""
|
|
23
|
+
|
|
24
|
+
# 检测操作系统
|
|
25
|
+
OS="$(uname -s)"
|
|
26
|
+
case "${OS}" in
|
|
27
|
+
Linux*) PLATFORM=Linux;;
|
|
28
|
+
Darwin*) PLATFORM=Mac;;
|
|
29
|
+
*) PLATFORM="UNKNOWN:${OS}"
|
|
30
|
+
esac
|
|
31
|
+
|
|
32
|
+
echo -e "${YELLOW}检测到操作系统: ${PLATFORM}${NC}"
|
|
33
|
+
|
|
34
|
+
# 检查并安装 Python 3.10+
|
|
35
|
+
check_python() {
|
|
36
|
+
echo -e "${YELLOW}检查 Python 版本...${NC}"
|
|
37
|
+
|
|
38
|
+
if command -v python3.10 &> /dev/null; then
|
|
39
|
+
PYTHON_CMD="python3.10"
|
|
40
|
+
elif command -v python3.11 &> /dev/null; then
|
|
41
|
+
PYTHON_CMD="python3.11"
|
|
42
|
+
elif command -v python3.12 &> /dev/null; then
|
|
43
|
+
PYTHON_CMD="python3.12"
|
|
44
|
+
elif command -v python3 &> /dev/null; then
|
|
45
|
+
PY_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2)
|
|
46
|
+
if (( $(echo "$PY_VERSION >= 3.10" | bc -l) )); then
|
|
47
|
+
PYTHON_CMD="python3"
|
|
48
|
+
else
|
|
49
|
+
PYTHON_CMD=""
|
|
50
|
+
fi
|
|
51
|
+
else
|
|
52
|
+
PYTHON_CMD=""
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
if [ -z "$PYTHON_CMD" ]; then
|
|
56
|
+
echo -e "${RED}未检测到 Python 3.10+${NC}"
|
|
57
|
+
install_python
|
|
58
|
+
else
|
|
59
|
+
echo -e "${GREEN}找到 Python: $PYTHON_CMD${NC}"
|
|
60
|
+
fi
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
# 安装 Python 3.10
|
|
64
|
+
install_python() {
|
|
65
|
+
echo -e "${YELLOW}正在安装 Python 3.10...${NC}"
|
|
66
|
+
|
|
67
|
+
if [ "$PLATFORM" == "Mac" ]; then
|
|
68
|
+
# macOS
|
|
69
|
+
if command -v brew &> /dev/null; then
|
|
70
|
+
echo "使用 Homebrew 安装 Python 3.10..."
|
|
71
|
+
brew install python@3.10
|
|
72
|
+
PYTHON_CMD="/opt/homebrew/bin/python3.10"
|
|
73
|
+
else
|
|
74
|
+
echo -e "${RED}请先安装 Homebrew: https://brew.sh${NC}"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
elif [ "$PLATFORM" == "Linux" ]; then
|
|
78
|
+
# Linux
|
|
79
|
+
if command -v apt-get &> /dev/null; then
|
|
80
|
+
echo "使用 apt 安装 Python 3.10..."
|
|
81
|
+
sudo apt-get update
|
|
82
|
+
sudo apt-get install -y python3.10 python3.10-venv python3.10-pip
|
|
83
|
+
PYTHON_CMD="python3.10"
|
|
84
|
+
elif command -v yum &> /dev/null; then
|
|
85
|
+
echo "使用 yum 安装 Python 3.10..."
|
|
86
|
+
sudo yum install -y python310
|
|
87
|
+
PYTHON_CMD="python3.10"
|
|
88
|
+
else
|
|
89
|
+
echo -e "${RED}不支持的 Linux 发行版,请手动安装 Python 3.10+${NC}"
|
|
90
|
+
exit 1
|
|
91
|
+
fi
|
|
92
|
+
else
|
|
93
|
+
echo -e "${RED}不支持的操作系统: ${PLATFORM}${NC}"
|
|
94
|
+
exit 1
|
|
95
|
+
fi
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# 创建安装目录
|
|
99
|
+
setup_install_dir() {
|
|
100
|
+
echo -e "${YELLOW}创建安装目录...${NC}"
|
|
101
|
+
|
|
102
|
+
if [ -d "$INSTALL_DIR" ]; then
|
|
103
|
+
echo -e "${YELLOW}目录已存在,清理旧文件...${NC}"
|
|
104
|
+
rm -rf "$INSTALL_DIR"
|
|
105
|
+
fi
|
|
106
|
+
|
|
107
|
+
mkdir -p "$INSTALL_DIR"
|
|
108
|
+
echo -e "${GREEN}安装目录: $INSTALL_DIR${NC}"
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# 创建虚拟环境
|
|
112
|
+
create_venv() {
|
|
113
|
+
echo -e "${YELLOW}创建 Python 虚拟环境...${NC}"
|
|
114
|
+
|
|
115
|
+
$PYTHON_CMD -m venv "$INSTALL_DIR/venv"
|
|
116
|
+
source "$INSTALL_DIR/venv/bin/activate"
|
|
117
|
+
|
|
118
|
+
echo -e "${GREEN}虚拟环境创建成功${NC}"
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# 安装依赖
|
|
122
|
+
install_dependencies() {
|
|
123
|
+
echo -e "${YELLOW}安装依赖...${NC}"
|
|
124
|
+
|
|
125
|
+
pip install --upgrade pip
|
|
126
|
+
pip install fastmcp>=0.4.0 requests
|
|
127
|
+
|
|
128
|
+
echo -e "${GREEN}依赖安装完成${NC}"
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# 下载 MCP Server 文件
|
|
132
|
+
download_server() {
|
|
133
|
+
echo -e "${YELLOW}下载 MCP Server...${NC}"
|
|
134
|
+
|
|
135
|
+
# 复制本地文件(如果是本地安装)
|
|
136
|
+
if [ -f "server.py" ]; then
|
|
137
|
+
cp server.py "$INSTALL_DIR/"
|
|
138
|
+
echo -e "${GREEN}使用本地 server.py${NC}"
|
|
139
|
+
else
|
|
140
|
+
# 从远程下载
|
|
141
|
+
echo "从远程下载..."
|
|
142
|
+
curl -fsSL -o "$INSTALL_DIR/server.py" "https://raw.githubusercontent.com/chaihuo/mcp-server/main/server.py"
|
|
143
|
+
echo -e "${GREEN}下载完成${NC}"
|
|
144
|
+
fi
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
# 配置 WorkBuddy
|
|
148
|
+
configure_workbuddy() {
|
|
149
|
+
echo -e "${YELLOW}配置 WorkBuddy...${NC}"
|
|
150
|
+
|
|
151
|
+
if [ ! -d "$WORKBUDDY_DIR" ]; then
|
|
152
|
+
echo -e "${RED}未找到 WorkBuddy 目录: $WORKBUDDY_DIR${NC}"
|
|
153
|
+
echo "请确认 WorkBuddy 已安装,或手动配置 MCP"
|
|
154
|
+
return 1
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
# 创建 MCP 配置
|
|
158
|
+
mkdir -p "$WORKBUDDY_DIR/mcp"
|
|
159
|
+
|
|
160
|
+
# 复制 server.py 到 WorkBuddy 目录
|
|
161
|
+
cp "$INSTALL_DIR/server.py" "$WORKBUDDY_DIR/mcp/chaihuo-server.py"
|
|
162
|
+
|
|
163
|
+
# 创建配置文件
|
|
164
|
+
cat > "$WORKBUDDY_DIR/mcp_config.json" << EOF
|
|
165
|
+
{
|
|
166
|
+
"mcpServers": {
|
|
167
|
+
"chaihuo": {
|
|
168
|
+
"command": "$INSTALL_DIR/venv/bin/python",
|
|
169
|
+
"args": ["$WORKBUDDY_DIR/mcp/chaihuo-server.py"],
|
|
170
|
+
"env": {
|
|
171
|
+
"SCF_URL": "$SCF_URL"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
EOF
|
|
177
|
+
|
|
178
|
+
echo -e "${GREEN}WorkBuddy 配置完成${NC}"
|
|
179
|
+
echo -e "${YELLOW}配置文件: $WORKBUDDY_DIR/mcp_config.json${NC}"
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
# 生成 JWT Secret
|
|
183
|
+
generate_jwt_secret() {
|
|
184
|
+
echo -e "${YELLOW}生成 JWT Secret...${NC}"
|
|
185
|
+
|
|
186
|
+
JWT_SECRET=$(openssl rand -base64 32)
|
|
187
|
+
|
|
188
|
+
# 更新配置文件
|
|
189
|
+
cat > "$WORKBUDDY_DIR/mcp_config.json" << EOF
|
|
190
|
+
{
|
|
191
|
+
"mcpServers": {
|
|
192
|
+
"chaihuo": {
|
|
193
|
+
"command": "$INSTALL_DIR/venv/bin/python",
|
|
194
|
+
"args": ["$WORKBUDDY_DIR/mcp/chaihuo-server.py"],
|
|
195
|
+
"env": {
|
|
196
|
+
"SCF_URL": "$SCF_URL",
|
|
197
|
+
"JWT_SECRET": "$JWT_SECRET"
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
EOF
|
|
203
|
+
|
|
204
|
+
echo -e "${GREEN}JWT Secret 生成成功${NC}"
|
|
205
|
+
echo -e "${YELLOW}请保存以下密钥(用于生成用户 Token):${NC}"
|
|
206
|
+
echo -e "${GREEN}$JWT_SECRET${NC}"
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# 测试安装
|
|
210
|
+
test_installation() {
|
|
211
|
+
echo -e "${YELLOW}测试安装...${NC}"
|
|
212
|
+
|
|
213
|
+
source "$INSTALL_DIR/venv/bin/activate"
|
|
214
|
+
|
|
215
|
+
if python -c "import fastmcp" 2>/dev/null; then
|
|
216
|
+
echo -e "${GREEN}✓ fastmcp 安装成功${NC}"
|
|
217
|
+
else
|
|
218
|
+
echo -e "${RED}✗ fastmcp 安装失败${NC}"
|
|
219
|
+
return 1
|
|
220
|
+
fi
|
|
221
|
+
|
|
222
|
+
if [ -f "$INSTALL_DIR/server.py" ]; then
|
|
223
|
+
echo -e "${GREEN}✓ server.py 存在${NC}"
|
|
224
|
+
else
|
|
225
|
+
echo -e "${RED}✗ server.py 不存在${NC}"
|
|
226
|
+
return 1
|
|
227
|
+
fi
|
|
228
|
+
|
|
229
|
+
echo -e "${GREEN}安装测试通过!${NC}"
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
# 打印完成信息
|
|
233
|
+
print_finish() {
|
|
234
|
+
echo ""
|
|
235
|
+
echo -e "${GREEN}=== 安装完成!===${NC}"
|
|
236
|
+
echo ""
|
|
237
|
+
echo -e "${YELLOW}下一步操作:${NC}"
|
|
238
|
+
echo "1. 重启 WorkBuddy"
|
|
239
|
+
echo "2. 在 WorkBuddy 中测试记账功能"
|
|
240
|
+
echo ""
|
|
241
|
+
echo -e "${YELLOW}配置信息:${NC}"
|
|
242
|
+
echo "- 安装目录: $INSTALL_DIR"
|
|
243
|
+
echo "- 配置文件: $WORKBUDDY_DIR/mcp_config.json"
|
|
244
|
+
echo "- SCF 地址: $SCF_URL"
|
|
245
|
+
echo ""
|
|
246
|
+
echo -e "${YELLOW}如需卸载,运行:${NC}"
|
|
247
|
+
echo "rm -rf $INSTALL_DIR"
|
|
248
|
+
echo ""
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
# 主流程
|
|
252
|
+
main() {
|
|
253
|
+
echo -e "${GREEN}开始安装柴米记账 MCP Server...${NC}"
|
|
254
|
+
echo ""
|
|
255
|
+
|
|
256
|
+
check_python
|
|
257
|
+
setup_install_dir
|
|
258
|
+
create_venv
|
|
259
|
+
install_dependencies
|
|
260
|
+
download_server
|
|
261
|
+
configure_workbuddy
|
|
262
|
+
generate_jwt_secret
|
|
263
|
+
test_installation
|
|
264
|
+
print_finish
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
# 运行主流程
|
|
268
|
+
main
|