我的服务器是阿里云的99计划,2核-2g-40g,选取的镜像系统为Ubuntu 24
采用在宝塔上部署mcp-hub项目(如何你的服务器只有1核1g,推荐在1panel上部署,更加轻量化,消耗资源更少)
宝塔下载

1.我选的是稳定10版本,进入阿里云的实例界面


2.进入后输入
sudo -i #确保为root用户操作

复制后将命令粘贴进去,输入y后就会开始安装。
安装完成后会返回给你登录的外网链接,用户名和密码。如下格式所示
【云服务器】请在安全组放行xxxxx 端口
外网ipv4面板地址: https://....
内网面板地址: https://...
username: xxxx
password: xxxx
3.服务器放行端口



4.访问宝塔界面
输入返回给你的账号密码,登录后访问(提示不安全,选择继续)
环境配置,软件下载
1.node管理器下载

点击设置


2.终端pnpm环境下载
点击终端,输入以下命令,依次执行
node -v #node版本检查
npm -v #npm版本检查
npm install -g pnpm #下载pnpm环境
pnpm -v #pnpm版本检查

3.项目克隆
点击文件,新建一个mcphub文件夹。

点击进入文件,点击上面的终端,进入终端界面。

在终端运行以下命令。
克隆仓库
# 克隆仓库
git clone https://github.com/samanhappy/mcphub.git
cd mcphub
安装依赖
# 使用 pnpm 安装依赖(推荐)
pnpm install
# 或使用 npm
npm install
# 或使用 yarn
yarn install
项目启动
# 在开发模式下同时启动后端和前端
pnpm dev
# 这将启动:
# - 后端在 http://localhost:3001
# - 前端在 http://localhost:5173
# - 前端代理 API 调用到后端
添加node项目


点击设置,点击项目日志可以查看运行情况

前端修改vite–解决域名权限问题
Vite 开发服务器(vite dev server)出于安全机制,默认只允许本地回环地址(如 localhost、127.0.0.1)访问。当您通过自定义域名(如 mcphub.lutu1123.site)访问时,Vite 会拒绝请求以防止 DNS 重绑定攻击(DNS Rebinding Attack)。
✅ 解决方案:配置 server.allowedHosts
请按以下步骤操作:
第一步:打开前端项目的 Vite 配置文件
编辑
/mcphub/frontend/vite.config.js
如果您的项目结构不同,请在
frontend/目录下查找vite.config.js或vite.config.ts。
第二步:修改 server 配置,添加 allowedHosts
编辑
// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; // 如果是 Vue 项目
export default defineConfig({
plugins: [vue()],
server: {
host: '0.0.0.0', // 允许外部访问
//port: 5173,
// 👇 关键配置:允许指定域名访问
allowedHosts: [
'xxxx.xxx',
// 可选:添加其他合法域名
'www.xxxx.site',
'your-other-domain.com'
],
// 或者(不推荐,仅限可信内网):
// allowedHosts: 'all' // ⚠️ 安全风险!仅开发环境临时使用
},
});

✅ 推荐做法:显式列出您信任的域名,不要使用
allowedHosts: 'all',除非在完全隔离的内网开发环境。
第三步:重启项目
解决Linux中uv环境问题–uv命令连接失败问题
这是一个非常经典的问题:“虽然你在终端里能敲命令,但程序跑起来却找不到它”。
原因分析:
虽然你在终端(Shell)里可以通过 uvx –version 看到版本,说明环境变量(PATH)对当前的你是生效的。
但是,Node.js 的 child_process.spawn(代码报错的地方)在执行时,往往不会加载 .bashrc 或 .profile 中的自定义路径(比如 uv 默认安装在 /root/.local/bin 或 /root/.cargo/bin),它只去系统标准的 /usr/bin 或 /usr/local/bin 里找。
解决方案:
最简单有效的方法是建立一个软连接(Symlink),把 uvx “挂”到系统全局目录下,让 Node.js 即使不加载环境变量也能找到它。
请依次执行以下 3 个步骤:
第一步:找到 uvx 的真实路径
在终端输入:
Bash
which uvx
预期输出可能是 /root/.local/bin/uvx 或者 /root/.cargo/bin/uvx。
第二步:建立软连接到全局目录
假设第一步输出的路径是 /root/.local/bin/uvx(如果你的输出不一样,请替换下面的第一部分路径),执行:
Bash
# 注意:将下面命令的第一个路径替换为你第一步查到的实际路径
ln -s /root/.local/bin/uvx /usr/local/bin/uvx
(如果提示 File exists,说明已经有了,可以尝试链接到 /usr/bin/uvx)
为了保险,最好把 uv 也链接一下:
Bash
ln -s /root/.local/bin/uv /usr/local/bin/uv
第三步:彻底重启服务
做完软连接后,Node.js 就能在标准路径下找到它了。
使用
在antigravity中使用
{
"mcpServers": {
"mcp-router": {
"command": "D:\\Node.js\\node.exe",//修改成自己的
"args": [
"C:\\Users\\zhou\\AppData\\Roaming\\npm\\node_modules\\mcpr-cli\\dist\\mcpr.js",//修改成自己的
"connect",
"--host",
"mcphub.lutu1123.site", //填域名或服务器公网ip
"--port",
"3000"
],
"env": {
"SystemRoot": "C:\\WINDOWS",
"COMSPEC": "C:\\WINDOWS\\system32\\cmd.exe"
},
"startup_timeout_sec": 120
}
}
}

