|
|
@@ -16,18 +16,66 @@ echo -e "${BLUE} RAP2 MCP 工具安装程序 ${NC}"
|
|
|
echo -e "${BLUE}=========================================${NC}"
|
|
|
echo ""
|
|
|
|
|
|
+# 检查Conda环境
|
|
|
+echo -e "${YELLOW}[1/7] 检查Conda环境...${NC}"
|
|
|
+if ! command -v conda &> /dev/null; then
|
|
|
+ echo -e "${YELLOW}未检测到Conda,是否要安装Miniconda? [y/N] ${NC}"
|
|
|
+ read -r response
|
|
|
+ if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
|
+ echo -e "开始下载Miniconda安装程序..."
|
|
|
+ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
+ # macOS
|
|
|
+ curl -o miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
|
|
|
+ else
|
|
|
+ # Linux
|
|
|
+ curl -o miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ $? -ne 0 ]; then
|
|
|
+ echo -e "${RED}下载Miniconda失败,请手动安装Conda后重试${NC}"
|
|
|
+ echo -e "安装指南: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ echo -e "安装Miniconda..."
|
|
|
+ bash miniconda.sh -b -p $HOME/miniconda
|
|
|
+
|
|
|
+ if [ $? -ne 0 ]; then
|
|
|
+ echo -e "${RED}安装Miniconda失败,请手动安装后重试${NC}"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 添加到PATH
|
|
|
+ export PATH="$HOME/miniconda/bin:$PATH"
|
|
|
+
|
|
|
+ # 初始化conda
|
|
|
+ conda init bash
|
|
|
+ conda init zsh
|
|
|
+
|
|
|
+ echo -e "${GREEN}✓ Miniconda已安装${NC}"
|
|
|
+ echo -e "${YELLOW}请关闭并重新打开终端,然后重新运行此安装脚本${NC}"
|
|
|
+ exit 0
|
|
|
+ else
|
|
|
+ echo -e "${RED}错误: 需要Conda环境来继续安装${NC}"
|
|
|
+ echo -e "请安装Conda后重试。安装指南: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+CONDA_VERSION=$(conda --version | awk '{print $2}')
|
|
|
+echo -e "${GREEN}✓ 已找到Conda $CONDA_VERSION${NC}"
|
|
|
+
|
|
|
# 检查Python环境
|
|
|
-echo -e "${YELLOW}[1/6] 检查Python环境...${NC}"
|
|
|
+echo -e "${YELLOW}[2/7] 检查Python环境...${NC}"
|
|
|
if ! command -v python3 &> /dev/null; then
|
|
|
- echo -e "${RED}错误: 未找到Python3,请先安装Python3${NC}"
|
|
|
- exit 1
|
|
|
+ echo -e "${YELLOW}未找到Python3,将通过Conda安装${NC}"
|
|
|
+else
|
|
|
+ PYTHON_VERSION=$(python3 --version | awk '{print $2}')
|
|
|
+ echo -e "${GREEN}✓ 已找到系统Python $PYTHON_VERSION${NC}"
|
|
|
fi
|
|
|
|
|
|
-PYTHON_VERSION=$(python3 --version | awk '{print $2}')
|
|
|
-echo -e "${GREEN}✓ 已找到Python $PYTHON_VERSION${NC}"
|
|
|
-
|
|
|
# 检查和创建目录结构
|
|
|
-echo -e "${YELLOW}[2/6] 设置目录结构...${NC}"
|
|
|
+echo -e "${YELLOW}[3/7] 设置目录结构...${NC}"
|
|
|
if [ ! -d "${SCRIPT_DIR}/rap2-mcp" ]; then
|
|
|
echo -e "创建rap2-mcp目录..."
|
|
|
mkdir -p "${SCRIPT_DIR}/rap2-mcp"
|
|
|
@@ -41,36 +89,44 @@ fi
|
|
|
|
|
|
echo -e "${GREEN}✓ 目录结构已准备就绪${NC}"
|
|
|
|
|
|
-# 创建虚拟环境
|
|
|
-echo -e "${YELLOW}[3/6] 创建Python虚拟环境...${NC}"
|
|
|
-if [ -d "${SCRIPT_DIR}/venv" ]; then
|
|
|
- echo -e "检测到已有虚拟环境,是否重新创建? [y/N] "
|
|
|
+# 创建Conda环境
|
|
|
+echo -e "${YELLOW}[4/7] 创建Conda环境...${NC}"
|
|
|
+CONDA_ENV_NAME="rap2_mcp"
|
|
|
+
|
|
|
+# 检查环境是否已存在
|
|
|
+if conda info --envs | grep -q "$CONDA_ENV_NAME"; then
|
|
|
+ echo -e "检测到已有Conda环境'$CONDA_ENV_NAME',是否重新创建? [y/N] "
|
|
|
read -r response
|
|
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
|
- echo -e "删除旧的虚拟环境..."
|
|
|
- rm -rf "${SCRIPT_DIR}/venv"
|
|
|
- python3 -m venv "${SCRIPT_DIR}/venv"
|
|
|
+ echo -e "删除旧的Conda环境..."
|
|
|
+ conda env remove -n "$CONDA_ENV_NAME" -y
|
|
|
+ conda create -n "$CONDA_ENV_NAME" python=3.9 -y
|
|
|
fi
|
|
|
else
|
|
|
- python3 -m venv "${SCRIPT_DIR}/venv"
|
|
|
+ echo -e "创建新的Conda环境 '$CONDA_ENV_NAME'..."
|
|
|
+ conda create -n "$CONDA_ENV_NAME" python=3.9 -y
|
|
|
fi
|
|
|
|
|
|
-# 激活虚拟环境
|
|
|
-if [ -f "${SCRIPT_DIR}/venv/bin/activate" ]; then
|
|
|
- source "${SCRIPT_DIR}/venv/bin/activate"
|
|
|
- echo -e "${GREEN}✓ 虚拟环境已激活${NC}"
|
|
|
-else
|
|
|
- echo -e "${RED}错误: 无法创建或激活虚拟环境${NC}"
|
|
|
+# 激活Conda环境
|
|
|
+echo -e "${YELLOW}[5/7] 激活Conda环境...${NC}"
|
|
|
+# 这里我们需要使用source命令来激活conda环境
|
|
|
+source $(conda info --base)/etc/profile.d/conda.sh
|
|
|
+conda activate "$CONDA_ENV_NAME"
|
|
|
+
|
|
|
+if [ $? -ne 0 ]; then
|
|
|
+ echo -e "${RED}错误: 无法激活Conda环境${NC}"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
+echo -e "${GREEN}✓ Conda环境'$CONDA_ENV_NAME'已激活${NC}"
|
|
|
+
|
|
|
# 更新pip
|
|
|
-echo -e "${YELLOW}[4/6] 更新pip...${NC}"
|
|
|
+echo -e "${YELLOW}[6/7] 更新pip...${NC}"
|
|
|
pip install --upgrade pip > /dev/null 2>&1
|
|
|
echo -e "${GREEN}✓ pip已更新至最新版本${NC}"
|
|
|
|
|
|
# 安装依赖
|
|
|
-echo -e "${YELLOW}[5/6] 安装依赖...${NC}"
|
|
|
+echo -e "${YELLOW}[7/7] 安装依赖...${NC}"
|
|
|
|
|
|
# 创建requirements.txt如果不存在
|
|
|
if [ ! -f "${SCRIPT_DIR}/requirements.txt" ]; then
|
|
|
@@ -113,8 +169,54 @@ else
|
|
|
echo -e "${GREEN}✓ 所有依赖已成功安装${NC}"
|
|
|
fi
|
|
|
|
|
|
+# 创建启动脚本
|
|
|
+echo -e "创建启动脚本..."
|
|
|
+cat > "${SCRIPT_DIR}/start.sh" << EOF
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# 获取脚本所在目录的绝对路径
|
|
|
+SCRIPT_DIR="\$(cd "\$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
|
+
|
|
|
+# 默认值
|
|
|
+RAP2_URL="http://rap2api.taobao.org"
|
|
|
+RAP2_SID=""
|
|
|
+RAP2_SID_SIG=""
|
|
|
+
|
|
|
+# 解析参数
|
|
|
+while [[ \$# -gt 0 ]]; do
|
|
|
+ case \$1 in
|
|
|
+ --url=*)
|
|
|
+ RAP2_URL="\${1#*=}"
|
|
|
+ shift
|
|
|
+ ;;
|
|
|
+ --sid=*)
|
|
|
+ RAP2_SID="\${1#*=}"
|
|
|
+ shift
|
|
|
+ ;;
|
|
|
+ --sid-sig=*)
|
|
|
+ RAP2_SID_SIG="\${1#*=}"
|
|
|
+ shift
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ echo "未知参数: \$1"
|
|
|
+ exit 1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+done
|
|
|
+
|
|
|
+# 激活Conda环境
|
|
|
+source \$(conda info --base)/etc/profile.d/conda.sh
|
|
|
+conda activate rap2_mcp
|
|
|
+
|
|
|
+# 启动服务器
|
|
|
+python "\${SCRIPT_DIR}/rap2-mcp/rap2_mcp_server.py" \\
|
|
|
+ --rap2-url="\$RAP2_URL" \\
|
|
|
+ --rap2-sid="\$RAP2_SID" \\
|
|
|
+ --rap2-sid-sig="\$RAP2_SID_SIG"
|
|
|
+EOF
|
|
|
+
|
|
|
# 设置启动脚本权限
|
|
|
-echo -e "${YELLOW}[6/6] 设置启动脚本权限...${NC}"
|
|
|
+echo -e "设置启动脚本权限..."
|
|
|
chmod +x "${SCRIPT_DIR}/start.sh"
|
|
|
echo -e "${GREEN}✓ 启动脚本权限已设置${NC}"
|
|
|
|
|
|
@@ -131,7 +233,7 @@ echo -e "配置格式:"
|
|
|
echo -e "${YELLOW}{
|
|
|
\"mcpServers\": {
|
|
|
\"RAP2 MCP\": {
|
|
|
- \"command\": \"${SCRIPT_DIR}/venv/bin/python\",
|
|
|
+ \"command\": \"$(conda info --base)/envs/rap2_mcp/bin/python\",
|
|
|
\"args\": [
|
|
|
\"${SCRIPT_DIR}/rap2-mcp/rap2_mcp_server.py\",
|
|
|
\"--rap2-url=http://rap2api.taobao.org\",
|