Back to MCP directory
publicPublicdnsLocal runtime

devpilot

MCP VPS初始化工具是一个基于SSH的自动化VPS管理服务器,提供VPS初始化、服务安装、Nginx配置、CI/CD部署等功能,支持TypeScript开发与完善日志记录。

article

README

🚀 MCP VPS 初始化工具

MCP VPS 初始化工具是一个基于模型上下文协议(MCP)的服务器,用于自动化 VPS 的初始化和管理。该工具借助 SSH 实现自动化,能为全新的 VPS 实例搭建常见服务和 CI/CD 管道。

✨ 主要特性

  • 🔐 SSH 认证:支持密码和私钥两种认证方式
  • 🛠️ VPS 初始化:自动安装 Node.js、PM2、Rust、Nginx 和 Redis
  • 🌐 Nginx 配置:通过反向代理和 SSL 证书进行域名设置
  • 🚀 GitHub CI/CD:自动生成部署密钥并创建工作流
  • 📝 全面日志记录:基于 Winston 的结构化日志记录
  • 🔧 TypeScript 支持:采用严格的 TypeScript 配置,提供完整类型检查

📦 安装指南

# 克隆仓库
git clone <repository-url>
cd mcp-vps-initialize

# 安装依赖
npm install

# 构建项目
npm run build

# 启动服务器
npm start

🚀 快速开始

开发环境

# 以开发模式运行
npm run dev

# 代码检查
npm run lint
npm run lint:fix

# 代码格式化
npm run format
npm run format:check

💻 使用示例

MCP 工具

1. SSH 连接

通过 SSH 使用密码或私钥认证连接到 VPS。 参数说明

  • host(必填):VPS 的 IP 地址或主机名
  • username(必填):SSH 用户名
  • port(选填):SSH 端口(默认:22)
  • password(选填):SSH 密码
  • privateKeyPath(选填):私钥文件路径
  • passphrase(选填):私钥密码

示例

{
  "host": "192.168.1.100",
  "username": "root",
  "password": "your-password"
}

2. VPS 初始化

使用系统更新和可选服务初始化全新的 VPS。 参数说明

  • services(选填):指定要安装的服务对象
    • nodejs(布尔值):安装 Node.js LTS
    • pm2(布尔值):安装 PM2 进程管理器
    • rust(布尔值):安装 Rust 工具链
    • nginx(布尔值):安装并配置 Nginx
    • redis(布尔值):安装并配置 Redis

示例

{
  "services": {
    "nodejs": true,
    "pm2": true,
    "nginx": true,
    "redis": false
  }
}

3. Nginx 设置

使用域名、反向代理和 SSL 证书配置 Nginx。 参数说明

  • domain(必填):网站域名
  • port(必填):反向代理的后端端口
  • ssl(选填):使用 Certbot 启用 SSL(默认:true)

示例

{
  "domain": "example.com",
  "port": 3000,
  "ssl": true
}

4. GitHub CI/CD 设置

使用部署密钥和自动化工作流设置 GitHub CI/CD。 参数说明

  • repoUrl(必填):GitHub 仓库 URL
  • deployPath(必填):服务器上的部署路径

示例

{
  "repoUrl": "https://github.com/username/repo.git",
  "deployPath": "/opt/deployments/myapp"
}

5. 执行命令

在已连接的 VPS 上执行任意命令。 参数说明

  • command(必填):要执行的命令

示例

{
  "command": "systemctl status nginx"
}

工作流程

基本 VPS 设置

  1. 连接到 VPS
{
  "tool": "ssh_connect",
  "args": {
    "host": "your-vps-ip",
    "username": "root",
    "password": "your-password"
  }
}
  1. 初始化 VPS
{
  "tool": "vps_initialize",
  "args": {
    "services": {
      "nodejs": true,
      "pm2": true,
      "nginx": true
    }
  }
}
  1. 设置 Nginx
{
  "tool": "nginx_setup",
  "args": {
    "domain": "yourdomain.com",
    "port": 3000,
    "ssl": true
  }
}
  1. 设置 CI/CD
{
  "tool": "github_cicd_setup",
  "args": {
    "repoUrl": "https://github.com/username/repo.git",
    "deployPath": "/opt/deployments/myapp"
  }
}

GitHub CI/CD 说明

运行 github_cicd_setup 工具后,你将获得:

  1. 部署密钥:添加到你的 GitHub 仓库的部署密钥中
  2. GitHub 机密:添加到你的仓库的 Actions 机密中
  3. 工作流文件:添加到 .github/workflows/deploy.yml

生成的工作流将:

  • 在推送到主分支时触发
  • 运行测试(如果有)
  • 构建应用程序(如果存在构建脚本)
  • 自动部署到你的 VPS

🔒 安全特性

  • 防火墙配置:自动使用安全默认值设置 UFW
  • SSL 证书:自动生成 Let's Encrypt 证书
  • SSH 密钥管理:安全生成部署密钥
  • 进程隔离:可选创建部署用户

📝 日志记录

日志将写入以下位置:

  • logs/combined.log:包含所有日志级别
  • logs/error.log:仅包含错误日志
  • 控制台:带有颜色的格式化输出

日志级别:errorwarninfodebug

⚙️ 配置

服务器可以通过环境变量进行配置:

  • LOG_LEVEL:设置日志级别(默认:'info')
  • PORT:服务器端口(如果独立运行)

🛠️ 故障排除

常见问题

  1. SSH 连接失败
    • 验证 IP 地址和凭据
    • 检查防火墙设置
    • 确保 SSH 服务正在运行
  2. SSL 证书问题
    • 验证域名 DNS 是否指向服务器
    • 检查防火墙是否允许 HTTP/HTTPS
    • 确保 Let's Encrypt 使用的电子邮件有效
  3. 服务安装失败
    • 检查系统更新状态
    • 验证网络连接
    • 查看错误日志

调试模式

启用调试日志:

LOG_LEVEL=debug npm start

📋 系统要求

  • Node.js 18+
  • 全新的 Ubuntu/Debian VPS
  • 域名(用于 SSL 设置)
  • GitHub 仓库(用于 CI/CD)

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client