Skip to main content
Glama
run.sh6.82 kB
#!/bin/bash # 小红书 MCP 服务器启动脚本 # 用法: ./run.sh [dev|prod|development|production] [options] set -e # 遇到错误立即退出 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 项目根目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 显示帮助信息 show_help() { cat << EOF ${GREEN}小红书 MCP 服务器启动脚本${NC} ${BLUE}用法:${NC} ./run.sh [模式] [选项] ${BLUE}模式:${NC} dev, development 开发模式(有头浏览器,DEBUG日志) prod, production 生产模式(无头浏览器,INFO日志) debug 调试模式(启用debugpy,等待调试器连接,端口5678) help, --help, -h 显示此帮助信息 ${BLUE}选项:${NC} --port PORT 指定服务器端口(默认: 8000) --host HOST 指定服务器主机(默认: 127.0.0.1) --log-level LEVEL 指定日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL) --log-file FILE 指定日志文件路径 --headless 强制使用无头模式 --no-headless 强制使用有头模式 ${BLUE}示例:${NC} ./run.sh dev # 开发模式启动 ./run.sh prod # 生产模式启动 ./run.sh debug # 调试模式启动(等待调试器连接) ./run.sh dev --port 9000 # 开发模式,端口9000 ./run.sh prod --log-level DEBUG # 生产模式,DEBUG日志 ./run.sh dev --log-file logs/app.log # 开发模式,日志写入文件 ./run.sh debug --port 9000 # 调试模式,MCP端口9000 EOF } # 检查是否安装了 uv check_uv() { if ! command -v uv &> /dev/null; then echo -e "${RED}错误: 未找到 uv 命令${NC}" echo -e "${YELLOW}请先安装 uv:${NC}" echo " curl -LsSf https://astral.sh/uv/install.sh | sh" exit 1 fi } # 检查 Python 模块是否已安装 check_dependencies() { if ! uv run python -c "import xiaohongshu_mcp_python" 2>/dev/null; then echo -e "${YELLOW}正在安装依赖...${NC}" uv sync fi } # 解析参数 MODE="" ENV_ARGS=() EXTRA_ARGS=() # 解析第一个参数(模式) if [ $# -eq 0 ]; then # 默认开发模式 MODE="dev" else case "$1" in dev|development) MODE="dev" shift ;; prod|production) MODE="prod" shift ;; debug) MODE="debug" shift ;; help|--help|-h) show_help exit 0 ;; *) # 如果没有指定模式,默认使用开发模式,并将第一个参数作为额外参数 MODE="dev" ;; esac fi # 解析剩余参数 while [[ $# -gt 0 ]]; do case "$1" in help|--help|-h) show_help exit 0 ;; --port) EXTRA_ARGS+=("--port" "$2") shift 2 ;; --host) EXTRA_ARGS+=("--host" "$2") shift 2 ;; --log-level) EXTRA_ARGS+=("--log-level" "$2") shift 2 ;; --log-file) EXTRA_ARGS+=("--log-file" "$2") shift 2 ;; --headless) EXTRA_ARGS+=("--headless") shift ;; --no-headless) EXTRA_ARGS+=("--no-headless") shift ;; *) echo -e "${RED}错误: 未知参数: $1${NC}" show_help exit 1 ;; esac done # 检查环境 check_uv check_dependencies # 根据模式设置环境参数 if [ "$MODE" = "dev" ]; then ENV_ARGS=("--env" "development") if [[ ! " ${EXTRA_ARGS[@]} " =~ " --log-level " ]]; then EXTRA_ARGS+=("--log-level" "DEBUG") fi if [[ ! " ${EXTRA_ARGS[@]} " =~ " --headless " ]] && [[ ! " ${EXTRA_ARGS[@]} " =~ " --no-headless " ]]; then EXTRA_ARGS+=("--no-headless") fi echo -e "${GREEN}🚀 启动开发模式${NC}" echo -e "${BLUE}环境: 开发环境${NC}" echo -e "${BLUE}浏览器: 有头模式${NC}" echo -e "${BLUE}日志: DEBUG${NC}" elif [ "$MODE" = "prod" ]; then ENV_ARGS=("--env" "production") if [[ ! " ${EXTRA_ARGS[@]} " =~ " --log-level " ]]; then EXTRA_ARGS+=("--log-level" "INFO") fi if [[ ! " ${EXTRA_ARGS[@]} " =~ " --headless " ]] && [[ ! " ${EXTRA_ARGS[@]} " =~ " --no-headless " ]]; then EXTRA_ARGS+=("--headless") fi echo -e "${GREEN}🚀 启动生产模式${NC}" echo -e "${BLUE}环境: 生产环境${NC}" echo -e "${BLUE}浏览器: 无头模式${NC}" echo -e "${BLUE}日志: INFO${NC}" elif [ "$MODE" = "debug" ]; then ENV_ARGS=("--env" "development") if [[ ! " ${EXTRA_ARGS[@]} " =~ " --log-level " ]]; then EXTRA_ARGS+=("--log-level" "DEBUG") fi if [[ ! " ${EXTRA_ARGS[@]} " =~ " --headless " ]] && [[ ! " ${EXTRA_ARGS[@]} " =~ " --no-headless " ]]; then EXTRA_ARGS+=("--no-headless") fi echo -e "${GREEN}🐛 启动调试模式${NC}" echo -e "${BLUE}环境: 开发环境${NC}" echo -e "${BLUE}浏览器: 有头模式${NC}" echo -e "${BLUE}日志: DEBUG${NC}" echo -e "${YELLOW}调试器: 等待连接 (端口 5678)${NC}" echo -e "${YELLOW}在 VSCode 中使用 '附加到进程' 配置连接调试器${NC}" echo "" # 检查是否安装了 debugpy if ! uv run python -c "import debugpy" 2>/dev/null; then echo -e "${YELLOW}正在安装 debugpy...${NC}" uv pip install debugpy fi # 创建临时调试脚本 DEBUG_SCRIPT=$(mktemp /tmp/xiaohongshu_debug_XXXXXX.py) cat > "$DEBUG_SCRIPT" << 'PYTHON_EOF' import debugpy import sys import os # 配置 debugpy debugpy.listen(('localhost', 5678)) print('🐛 调试器已启动,等待连接...') print('📌 在 VSCode 中使用 "小红书MCP - 附加到进程" 配置连接') print('⏳ 等待调试器连接中...') debugpy.wait_for_client() print('✅ 调试器已连接!') # 设置 PYTHONPATH sys.path.insert(0, os.path.join(os.getcwd(), 'src')) os.environ['PYTHONPATH'] = os.path.join(os.getcwd(), 'src') # 导入并运行主程序 from xiaohongshu_mcp_python.main import cli_main cli_main() PYTHON_EOF # 使用 debugpy 启动,等待调试器连接 exec uv run python "$DEBUG_SCRIPT" "${ENV_ARGS[@]}" "${EXTRA_ARGS[@]}" fi echo "" echo -e "${YELLOW}执行命令:${NC} uv run python -m xiaohongshu_mcp_python.main ${ENV_ARGS[*]} ${EXTRA_ARGS[*]}" echo "" # 启动服务器 exec uv run python -m xiaohongshu_mcp_python.main "${ENV_ARGS[@]}" "${EXTRA_ARGS[@]}"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/luyike221/xiaohongshu-mcp-python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server