Update entrypoint.sh
Browse files- entrypoint.sh +62 -141
entrypoint.sh
CHANGED
|
@@ -1,69 +1,56 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
cat <<EOF > /app/config.json
|
| 4 |
{
|
| 5 |
"mcpServers": {
|
| 6 |
-
"github": {
|
| 7 |
-
"command": "npx",
|
| 8 |
-
"args": [
|
| 9 |
-
"-y",
|
| 10 |
-
"@modelcontextprotocol/server-github@latest"
|
| 11 |
-
],
|
| 12 |
-
"env": {
|
| 13 |
-
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}",
|
| 14 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 15 |
-
}
|
| 16 |
-
},
|
| 17 |
-
"filesystem": {
|
| 18 |
-
"command": "npx",
|
| 19 |
-
"args": [
|
| 20 |
-
"-y",
|
| 21 |
-
"@modelcontextprotocol/server-filesystem@latest",
|
| 22 |
-
"/home/mcp"
|
| 23 |
-
],
|
| 24 |
-
"env": {
|
| 25 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 26 |
-
}
|
| 27 |
-
},
|
| 28 |
-
"edgeone-pages-mcp-server": {
|
| 29 |
-
"command": "npx",
|
| 30 |
-
"args": ["edgeone-pages-mcp@latest"],
|
| 31 |
-
"env": {
|
| 32 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 33 |
-
}
|
| 34 |
-
},
|
| 35 |
-
"mcp-server-firecrawl": {
|
| 36 |
-
"command": "npx",
|
| 37 |
-
"args": [
|
| 38 |
-
"-y",
|
| 39 |
-
"firecrawl-mcp@latest"
|
| 40 |
-
],
|
| 41 |
-
"env": {
|
| 42 |
-
"FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}",
|
| 43 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 44 |
-
}
|
| 45 |
-
},
|
| 46 |
-
"tavily-mcp": {
|
| 47 |
-
"command": "npx",
|
| 48 |
-
"args": [
|
| 49 |
-
"-y",
|
| 50 |
-
"tavily-mcp@latest"
|
| 51 |
-
],
|
| 52 |
-
"env": {
|
| 53 |
-
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
|
| 54 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 55 |
-
}
|
| 56 |
-
},
|
| 57 |
-
"sequential-thinking": {
|
| 58 |
-
"command": "npx",
|
| 59 |
-
"args": [
|
| 60 |
-
"-y",
|
| 61 |
-
"@modelcontextprotocol/server-sequential-thinking@latest"
|
| 62 |
-
],
|
| 63 |
-
"env": {
|
| 64 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 65 |
-
}
|
| 66 |
-
},
|
| 67 |
"fetch": {
|
| 68 |
"command": "npx",
|
| 69 |
"args": [
|
|
@@ -73,89 +60,23 @@ cat <<EOF > /app/config.json
|
|
| 73 |
"env": {
|
| 74 |
"NODE_OPTIONS": "--no-deprecation"
|
| 75 |
}
|
| 76 |
-
},
|
| 77 |
-
"code-runner": {
|
| 78 |
-
"command": "npx",
|
| 79 |
-
"args": [
|
| 80 |
-
"-y",
|
| 81 |
-
"deno",
|
| 82 |
-
"run",
|
| 83 |
-
"--allow-all",
|
| 84 |
-
"jsr:@mcpc/code-runner-mcp/bin"
|
| 85 |
-
],
|
| 86 |
-
"env": {
|
| 87 |
-
"DENO_PERMISSION_ARGS": "--allow-net",
|
| 88 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 89 |
-
}
|
| 90 |
-
},
|
| 91 |
-
"context7": {
|
| 92 |
-
"command": "npx",
|
| 93 |
-
"args": [
|
| 94 |
-
"-y",
|
| 95 |
-
"@upstash/context7-mcp@latest"
|
| 96 |
-
],
|
| 97 |
-
"env": {
|
| 98 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 99 |
-
}
|
| 100 |
-
},
|
| 101 |
-
"chaitin-ip-intelligence-search-tool": {
|
| 102 |
-
"command": "npx",
|
| 103 |
-
"args": [
|
| 104 |
-
"-y",
|
| 105 |
-
"chaitin-ip-intelligence-search-tool@latest"
|
| 106 |
-
],
|
| 107 |
-
"env": {
|
| 108 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 109 |
-
}
|
| 110 |
-
},
|
| 111 |
-
"anilist": {
|
| 112 |
-
"command": "npx",
|
| 113 |
-
"args": [
|
| 114 |
-
"-y",
|
| 115 |
-
"anilist-mcp@latest"
|
| 116 |
-
],
|
| 117 |
-
"env": {
|
| 118 |
-
"ANILIST_TOKEN": "${ANILIST_TOKEN}",
|
| 119 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 120 |
-
}
|
| 121 |
-
},
|
| 122 |
-
"brave-search": {
|
| 123 |
-
"command": "npx",
|
| 124 |
-
"args": [
|
| 125 |
-
"-y",
|
| 126 |
-
"@modelcontextprotocol/server-brave-search@latest"
|
| 127 |
-
],
|
| 128 |
-
"env": {
|
| 129 |
-
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
|
| 130 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 131 |
-
}
|
| 132 |
-
},
|
| 133 |
-
"time-mcp": {
|
| 134 |
-
"command": "npx",
|
| 135 |
-
"args": ["-y", "time-mcp@latest"],
|
| 136 |
-
"env": {
|
| 137 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 138 |
-
}
|
| 139 |
-
},
|
| 140 |
-
"youtube": {
|
| 141 |
-
"command": "npx",
|
| 142 |
-
"args": ["-y", "youtube-data-mcp-server@latest"],
|
| 143 |
-
"env": {
|
| 144 |
-
"YOUTUBE_API_KEY": "${YOUTUBE_API_KEY}",
|
| 145 |
-
"YOUTUBE_TRANSCRIPT_LANG": "${YOUTUBE_TRANSCRIPT_LANG}",
|
| 146 |
-
"NODE_OPTIONS": "--no-deprecation"
|
| 147 |
-
}
|
| 148 |
}
|
| 149 |
}
|
| 150 |
}
|
| 151 |
EOF
|
| 152 |
|
| 153 |
-
#
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
| 160 |
|
| 161 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
|
| 3 |
+
# 设置错误处理和日志记录
|
| 4 |
+
set -e
|
| 5 |
+
trap 'echo "$(date +"%Y-%m-%d %H:%M:%S") - 错误:脚本执行失败,行号: $LINENO, 命令: $BASH_COMMAND"' ERR
|
| 6 |
+
|
| 7 |
+
# 创建日志目录
|
| 8 |
+
mkdir -p /tmp/mcp_logs
|
| 9 |
+
LOG_FILE="/tmp/mcp_logs/mcpo_$(date +%Y%m%d_%H%M%S).log"
|
| 10 |
+
|
| 11 |
+
# 记录开始时间和环境信息
|
| 12 |
+
echo "===== MCP服务器启动 $(date) =====" | tee -a $LOG_FILE
|
| 13 |
+
echo "主机名: $(hostname)" | tee -a $LOG_FILE
|
| 14 |
+
|
| 15 |
+
# 检查Node.js版本
|
| 16 |
+
if command -v node &> /dev/null; then
|
| 17 |
+
NODE_VERSION=$(node -v)
|
| 18 |
+
echo "Node.js版本: $NODE_VERSION" | tee -a $LOG_FILE
|
| 19 |
+
else
|
| 20 |
+
echo "警告: 未找到Node.js" | tee -a $LOG_FILE
|
| 21 |
+
fi
|
| 22 |
+
|
| 23 |
+
# 检查Python版本
|
| 24 |
+
if command -v python3 &> /dev/null; then
|
| 25 |
+
PYTHON_VERSION=$(python3 --version 2>&1)
|
| 26 |
+
echo "Python版本: $PYTHON_VERSION" | tee -a $LOG_FILE
|
| 27 |
+
else
|
| 28 |
+
echo "警告: 未找到Python3" | tee -a $LOG_FILE
|
| 29 |
+
fi
|
| 30 |
+
|
| 31 |
+
# 检查npm版本
|
| 32 |
+
if command -v npm &> /dev/null; then
|
| 33 |
+
NPM_VERSION=$(npm --version 2>&1)
|
| 34 |
+
echo "npm版本: $NPM_VERSION" | tee -a $LOG_FILE
|
| 35 |
+
else
|
| 36 |
+
echo "警告: 未找到npm" | tee -a $LOG_FILE
|
| 37 |
+
fi
|
| 38 |
+
|
| 39 |
+
# 检查mcpo可执行文件
|
| 40 |
+
if command -v mcpo &> /dev/null; then
|
| 41 |
+
MCPO_VERSION=$(mcpo --version 2>&1 || echo "无法获取版本")
|
| 42 |
+
echo "MCPO版本: $MCPO_VERSION" | tee -a $LOG_FILE
|
| 43 |
+
MCPO_PATH=$(which mcpo)
|
| 44 |
+
echo "MCPO路径: $MCPO_PATH" | tee -a $LOG_FILE
|
| 45 |
+
else
|
| 46 |
+
echo "警告: mcpo命令未找到" | tee -a $LOG_FILE
|
| 47 |
+
fi
|
| 48 |
+
|
| 49 |
+
# 创建最小配置 - 只使用一个服务进行测试
|
| 50 |
+
echo "创建最小配置文件..." | tee -a $LOG_FILE
|
| 51 |
cat <<EOF > /app/config.json
|
| 52 |
{
|
| 53 |
"mcpServers": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
"fetch": {
|
| 55 |
"command": "npx",
|
| 56 |
"args": [
|
|
|
|
| 60 |
"env": {
|
| 61 |
"NODE_OPTIONS": "--no-deprecation"
|
| 62 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
}
|
| 64 |
}
|
| 65 |
}
|
| 66 |
EOF
|
| 67 |
|
| 68 |
+
# 检查配置文件
|
| 69 |
+
echo "配置文件内容:" | tee -a $LOG_FILE
|
| 70 |
+
cat /app/config.json | tee -a $LOG_FILE
|
| 71 |
+
|
| 72 |
+
# 尝试直接通过npx安装和运行fetch服务(测试依赖项是否正常)
|
| 73 |
+
echo "测试NPX安装..." | tee -a $LOG_FILE
|
| 74 |
+
npx -y @kazuph/mcp-fetch@latest --help > /tmp/mcp_logs/npx_test.log 2>&1 || echo "NPX测试失败,查看 /tmp/mcp_logs/npx_test.log" | tee -a $LOG_FILE
|
| 75 |
+
|
| 76 |
+
# 启动MCPO服务器
|
| 77 |
+
echo "启动MCP服务器..." | tee -a $LOG_FILE
|
| 78 |
|
| 79 |
+
# 使用debug模式运行mcpo
|
| 80 |
+
# 输出日志到文件,同时显示在控制台
|
| 81 |
+
echo "执行命令: mcpo --config /app/config.json --log-level debug" | tee -a $LOG_FILE
|
| 82 |
+
mcpo --config /app/config.json --log-level debug 2>&1 | tee -a $LOG_FILE
|