Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Vps

FreeNot checked

Vps — Model Context Protocol server

GitHubEmbed

About

Vps — Model Context Protocol server

README

An MCP (Model Context Protocol) server that gives AI assistants full control over a VPS via SSH. Execute commands, manage files, control services, monitor resources, manage Docker containers, and configure firewalls — all through a secure SSH tunnel.

✨ Features

Tool Description
run_command Execute any shell command on the VPS
read_file Read file contents via SFTP
write_file Create or overwrite files via SFTP
list_directory List directory contents with detailed info
manage_service Start, stop, restart, reload, enable, disable systemd services & view logs
list_services List systemd services filtered by state (running, failed, enabled)
system_stats Get CPU, memory, disk, network, uptime, and process stats
docker Manage Docker containers — list, start, stop, restart, logs, stats, images
firewall Manage UFW rules — status, allow, deny, delete, reset

📦 Installation

# Clone the repository
git clone https://github.com/your-username/vps-mcp-server.git
cd vps-mcp-server

# Install dependencies
pnpm install

# Build
pnpm build

⚙️ Configuration

Create a .env file from the example:

cp .env.example .env

Set the following environment variables:

Variable Required Default Description
VPS_HOST Hostname or IP of your VPS
VPS_USER SSH username
VPS_KEY_PATH Absolute path to your SSH private key
VPS_PORT 22 SSH port
VPS_KEY_PASSPHRASE Passphrase for the SSH key (if encrypted)

Example .env:

VPS_HOST=203.0.113.10
VPS_USER=deploy
VPS_KEY_PATH=/Users/you/.ssh/id_ed25519
VPS_PORT=22

🚀 Usage

With Claude Desktop / Gemini CLI / Any MCP Client

Add the server to your MCP client configuration:

{
  "mcpServers": {
    "vps": {
      "command": "node",
      "args": ["/absolute/path/to/vps-mcp-server/dist/index.js"],
      "env": {
        "VPS_HOST": "203.0.113.10",
        "VPS_USER": "deploy",
        "VPS_KEY_PATH": "/Users/you/.ssh/id_ed25519"
      }
    }
  }
}

Development Mode

pnpm dev

Production

pnpm build
pnpm start

🛠️ Tools Reference

run_command

Execute a shell command on the VPS.

Parameter Type Required Default Description
command string The shell command to execute
timeout number 30000 Timeout in milliseconds
working_directory string Directory to run the command in

Returns: JSON with exit_code, stdout, and stderr.


read_file

Read the contents of a file on the VPS via SFTP.

Parameter Type Required Default Description
path string Absolute path to the file
max_lines number Max lines to return (omit for full file)

write_file

Write content to a file on the VPS via SFTP.

Parameter Type Required Default Description
path string Absolute path to the file
content string Content to write
create_dirs boolean false Create parent directories if missing

list_directory

List files and directories at a given path.

Parameter Type Required Default Description
path string / Directory path to list
show_hidden boolean false Include dotfiles
long_format boolean true Show permissions, size, date

manage_service

Manage systemd services.

Parameter Type Required Default Description
service string Service name (e.g., nginx)
action enum start | stop | restart | reload | status | enable | disable | logs
log_lines number 50 Lines to show (for logs action)

list_services

List systemd services filtered by state.

Parameter Type Required Default Description
filter enum running all | running | failed | enabled

system_stats

Get system resource usage.

Parameter Type Required Default Description
include array ["all"] cpu | memory | disk | network | uptime | processes | all

docker

Manage Docker containers.

Parameter Type Required Default Description
action enum ps | start | stop | restart | logs | stats | images
container string Container name/ID (required for start/stop/restart/logs)
log_lines number 50 Lines to show (for logs action)

firewall

Manage UFW firewall rules.

Parameter Type Required Default Description
action enum status | allow | deny | delete | reset
rule string Rule spec (e.g., 80/tcp, 443, from 10.0.0.1)

📁 Project Structure

src/
├── index.ts            # Server bootstrap & lifecycle
├── ssh.ts              # SSHManager class (connection pooling)
├── types.ts            # Shared TypeScript types
├── helpers.ts          # Response helper functions
└── tools/
    ├── index.ts         # Tool registration barrel
    ├── run-command.ts   # Shell command execution
    ├── read-file.ts     # SFTP file reading
    ├── write-file.ts    # SFTP file writing
    ├── list-directory.ts
    ├── manage-service.ts
    ├── list-services.ts
    ├── system-stats.ts
    ├── docker.ts
    └── firewall.ts

🔒 Security Notes

  • The server connects via SSH using key-based authentication (no passwords).
  • Commands run with the privileges of the configured SSH user.
  • Service management and firewall tools use sudo — ensure your SSH user has appropriate sudoers permissions.
  • The server maintains a persistent SSH connection that is automatically reconnected if dropped.

📄 License

MIT

from github.com/harbouli/vps-mcp-server

Installing Vps

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/harbouli/vps-mcp-server

FAQ

Is Vps MCP free?

Yes, Vps MCP is free — one-click install via Unyly at no cost.

Does Vps need an API key?

No, Vps runs without API keys or environment variables.

Is Vps hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Vps in Claude Desktop, Claude Code or Cursor?

Open Vps on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Vps with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs