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
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-serverFAQ
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
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
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
