#!/bin/bash # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # 无颜色 # 获取脚本所在目录的绝对路径 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 显示标题 echo -e "${BLUE}=========================================${NC}" 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}[2/7] 检查Python环境...${NC}" if ! command -v python3 &> /dev/null; then echo -e "${YELLOW}未找到Python3,将通过Conda安装${NC}" else PYTHON_VERSION=$(python3 --version | awk '{print $2}') echo -e "${GREEN}✓ 已找到系统Python $PYTHON_VERSION${NC}" fi # 检查和创建目录结构 echo -e "${YELLOW}[3/7] 设置目录结构...${NC}" if [ ! -d "${SCRIPT_DIR}/rap2-mcp" ]; then echo -e "创建rap2-mcp目录..." mkdir -p "${SCRIPT_DIR}/rap2-mcp" fi # 确保服务器脚本在正确位置 if [ -f "${SCRIPT_DIR}/rap2_mcp_server.py" ] && [ ! -f "${SCRIPT_DIR}/rap2-mcp/rap2_mcp_server.py" ]; then echo -e "移动服务器脚本到正确位置..." cp "${SCRIPT_DIR}/rap2_mcp_server.py" "${SCRIPT_DIR}/rap2-mcp/rap2_mcp_server.py" fi echo -e "${GREEN}✓ 目录结构已准备就绪${NC}" # 创建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 "删除旧的Conda环境..." conda env remove -n "$CONDA_ENV_NAME" -y conda create -n "$CONDA_ENV_NAME" python=3.9 -y fi else echo -e "创建新的Conda环境 '$CONDA_ENV_NAME'..." conda create -n "$CONDA_ENV_NAME" python=3.9 -y fi # 激活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}[6/7] 更新pip...${NC}" pip install --upgrade pip > /dev/null 2>&1 echo -e "${GREEN}✓ pip已更新至最新版本${NC}" # 安装依赖 echo -e "${YELLOW}[7/7] 安装依赖...${NC}" # 创建requirements.txt如果不存在 if [ ! -f "${SCRIPT_DIR}/requirements.txt" ]; then echo -e "创建requirements.txt文件..." cat > "${SCRIPT_DIR}/requirements.txt" << EOF httpx>=0.24.0 fastmcp>=0.1.0 mcp-server>=0.1.0 fastapi>=0.100.0 EOF fi # 安装依赖 echo -e "从requirements.txt安装依赖..." pip install -r "${SCRIPT_DIR}/requirements.txt" # 验证依赖安装 DEPS_OK=true for pkg in httpx mcp.server fastmcp; do echo -n "检查 $pkg... " if ! python -c "import $pkg" &> /dev/null; then echo -e "${RED}失败${NC}" echo -e "${RED}尝试单独安装 $pkg...${NC}" pip install $pkg if ! python -c "import $pkg" &> /dev/null; then echo -e "${RED}无法安装 $pkg${NC}" DEPS_OK=false else echo -e "${GREEN}成功${NC}" fi else echo -e "${GREEN}成功${NC}" fi done if [ "$DEPS_OK" = false ]; then echo -e "${RED}警告: 部分依赖安装失败,程序可能无法正常工作${NC}" 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 "设置启动脚本权限..." chmod +x "${SCRIPT_DIR}/start.sh" echo -e "${GREEN}✓ 启动脚本权限已设置${NC}" echo -e "${GREEN}安装完成!${NC}" echo "" # 显示MCP配置说明 echo -e "${YELLOW}=== RAP2 MCP 配置指南 ===${NC}" echo -e "请在Cursor的MCP配置文件中添加以下配置:" echo -e "" echo -e "${GREEN}文件路径: ${HOME}/.cursor/mcp.json${NC}" echo -e "" echo -e "配置格式:" echo -e "${YELLOW}{ \"mcpServers\": { \"RAP2 MCP\": { \"command\": \"$(conda info --base)/envs/rap2_mcp/bin/python\", \"args\": [ \"${SCRIPT_DIR}/rap2-mcp/rap2_mcp_server.py\", \"--rap2-url=http://rap2api.taobao.org\", \"--rap2-sid=您的koa.sid值\", \"--rap2-sid-sig=您的koa.sid.sig值\" ] } } }${NC}" echo -e "" echo -e "${YELLOW}如何获取Cookie值:${NC}" echo -e "1. 使用浏览器登录RAP2系统" echo -e "2. 打开开发者工具(F12),切换到网络(Network)标签" echo -e "3. 选择任意请求,在Headers中找到Cookie" echo -e "4. 从Cookie中提取koa.sid和koa.sid.sig的值" echo -e "" echo -e "${YELLOW}快速启动:${NC}" echo -e "可以使用以下命令快速启动服务器:" echo -e "${GREEN}./start.sh --url=http://rap2api.taobao.org --sid=您的koa.sid值 --sid-sig=您的koa.sid.sig值${NC}" echo -e "" echo -e "${GREEN}祝你使用愉快!${NC}" echo -e "${BLUE}=========================================${NC}"