VPS Initialize
# MCP VPS Initialize
A Model Context Protocol (MCP) server for automated VPS initialization and management. This tool provides SSH-based automation for setting up fresh VPS instances with common services and CI/CD pipelines.
## Features
- 🔐 **SSH Authentication**: Supports both password and private key authentication
- 🛠️ **VPS Initialization**: Automated setup of Node.js, PM2, Rust, Nginx, Redis
- 🌐 **Nginx Configuration**: Domain setup with reverse proxy and SSL certificates
- 🚀 **GitHub CI/CD**: Automated deploy key generation and workflow creation
- 📝 **Comprehensive Logging**: Winston-based structured logging
- 🔧 **TypeScript**: Fully typed with strict TypeScript configuration
## Installation
```bash
# Clone the repository
git clone <repository-url>
cd mcp-vps-initialize
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
```
## Development
```bash
# Run in development mode
npm run dev
# Lint code
npm run lint
npm run lint:fix
# Format code
npm run format
npm run format:check
```
## MCP Tools
### 1. SSH Connect
Connect to a VPS via SSH using password or private key authentication.
**Parameters:**
- `host` (required): VPS IP address or hostname
- `username` (required): SSH username
- `port` (optional): SSH port (default: 22)
- `password` (optional): SSH password
- `privateKeyPath` (optional): Path to private key file
- `passphrase` (optional): Private key passphrase
**Example:**
```json
{
"host": "192.168.1.100",
"username": "root",
"password": "your-password"
}
```
### 2. VPS Initialize
Initialize a fresh VPS with system updates and optional services.
**Parameters:**
- `services` (optional): Object specifying which services to install
- `nodejs` (boolean): Install Node.js LTS
- `pm2` (boolean): Install PM2 process manager
- `rust` (boolean): Install Rust toolchain
- `nginx` (boolean): Install and configure Nginx
- `redis` (boolean): Install and configure Redis
**Example:**
```json
{
"services": {
"nodejs": true,
"pm2": true,
"nginx": true,
"redis": false
}
}
```
### 3. Nginx Setup
Configure Nginx with domain, reverse proxy, and SSL certificates.
**Parameters:**
- `domain` (required): Domain name for the site
- `port` (required): Backend port to proxy requests to
- `ssl` (optional): Enable SSL with Certbot (default: true)
**Example:**
```json
{
"domain": "example.com",
"port": 3000,
"ssl": true
}
```
### 4. GitHub CI/CD Setup
Setup GitHub CI/CD with deploy keys and automated workflows.
**Parameters:**
- `repoUrl` (required): GitHub repository URL
- `deployPath` (required): Deployment path on the server
**Example:**
```json
{
"repoUrl": "https://github.com/username/repo.git",
"deployPath": "/opt/deployments/myapp"
}
```
### 5. Execute Command
Execute arbitrary commands on the connected VPS.
**Parameters:**
- `command` (required): Command to execute
**Example:**
```json
{
"command": "systemctl status nginx"
}
```
## Workflow
### Basic VPS Setup
1. **Connect to VPS:**
```json
{
"tool": "ssh_connect",
"args": {
"host": "your-vps-ip",
"username": "root",
"password": "your-password"
}
}
```
2. **Initialize VPS:**
```json
{
"tool": "vps_initialize",
"args": {
"services": {
"nodejs": true,
"pm2": true,
"nginx": true
}
}
}
```
3. **Setup Nginx:**
```json
{
"tool": "nginx_setup",
"args": {
"domain": "yourdomain.com",
"port": 3000,
"ssl": true
}
}
```
4. **Setup CI/CD:**
```json
{
"tool": "github_cicd_setup",
"args": {
"repoUrl": "https://github.com/username/repo.git",
"deployPath": "/opt/deployments/myapp"
}
}
```
### GitHub CI/CD Instructions
After running the `github_cicd_setup` tool, you'll receive:
1. **Deploy Key**: Add to your GitHub repository's Deploy Keys
2. **GitHub Secrets**: Add to your repository's Actions secrets
3. **Workflow File**: Add to `.github/workflows/deploy.yml`
The generated workflow will:
- Trigger on pushes to main/master branch
- Run tests (if available)
- Build the application (if build script exists)
- Deploy to your VPS automatically
## Security Features
- **Firewall Configuration**: Automatic UFW setup with secure defaults
- **SSL Certificates**: Automated Let's Encrypt certificate generation
- **SSH Key Management**: Secure deploy key generation
- **Process Isolation**: Optional deploy user creation
## Logging
Logs are written to:
- `logs/combined.log`: All log levels
- `logs/error.log`: Error logs only
- Console: Formatted output with colors
Log levels: `error`, `warn`, `info`, `debug`
## Configuration
The server can be configured through environment variables:
- `LOG_LEVEL`: Set logging level (default: 'info')
- `PORT`: Server port (if running standalone)
## Troubleshooting
### Common Issues
1. **SSH Connection Failed**
- Verify IP address and credentials
- Check firewall settings
- Ensure SSH service is running
2. **SSL Certificate Issues**
- Verify domain DNS points to server
- Check firewall allows HTTP/HTTPS
- Ensure email is valid for Let's Encrypt
3. **Service Installation Failed**
- Check system update status
- Verify internet connectivity
- Review error logs
### Debug Mode
Enable debug logging:
```bash
LOG_LEVEL=debug npm start
```
## Requirements
- Node.js 18+
- Fresh Ubuntu/Debian VPS
- Domain name (for SSL setup)
- GitHub repository (for CI/CD)
## License
MIT License - see LICENSE file for details.
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: execute_command runs commands, github_cicd_setup configures CI/CD, nginx_setup handles web server setup, ssh_connect establishes SSH connections, and vps_initialize performs initial VPS setup. There is no overlap or ambiguity between these functions.
Most tools follow a consistent verb_noun pattern (e.g., execute_command, nginx_setup, ssh_connect), but github_cicd_setup uses an acronym and vps_initialize includes 'vps' as a prefix, which slightly deviates from the pattern. Overall, the naming is readable and mostly predictable.
With 5 tools, the server is well-scoped for VPS initialization tasks. Each tool serves a specific, necessary function in the setup process, from connecting to the VPS to configuring services, making the count appropriate and efficient.
The toolset covers core VPS initialization workflows, including connection, basic setup, command execution, web server configuration, and CI/CD integration. A minor gap might be the lack of tools for monitoring or backup setup, but agents can work around this with existing tools.