| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- #!/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}"
|