vps-mcp-server
Manage Docker containers ā list, start, stop, restart, logs, stats, images
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vps-mcp-server Restart nginx and show recent logs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
š„ļø VPS MCP Server
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 |
| Execute any shell command on the VPS |
| Read file contents via SFTP |
| Create or overwrite files via SFTP |
| List directory contents with detailed info |
| Start, stop, restart, reload, enable, disable systemd services & view logs |
| List systemd services filtered by state (running, failed, enabled) |
| Get CPU, memory, disk, network, uptime, and process stats |
| Manage Docker containers ā list, start, stop, restart, logs, stats, images |
| Manage UFW rules ā status, allow, deny, delete, reset |
Related MCP server: MCP VPS Manager
š¦ 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 .envSet the following environment variables:
Variable | Required | Default | Description |
| ā | ā | Hostname or IP of your VPS |
| ā | ā | SSH username |
| ā | ā | Absolute path to your SSH private key |
| ā |
| SSH port |
| ā | ā | 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 devProduction
pnpm build
pnpm startš ļø Tools Reference
run_command
Execute a shell command on the VPS.
Parameter | Type | Required | Default | Description |
|
| ā | ā | The shell command to execute |
|
| ā |
| Timeout in milliseconds |
|
| ā | ā | 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 |
|
| ā | ā | Absolute path to the file |
|
| ā | ā | 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 |
|
| ā | ā | Absolute path to the file |
|
| ā | ā | Content to write |
|
| ā |
| Create parent directories if missing |
list_directory
List files and directories at a given path.
Parameter | Type | Required | Default | Description |
|
| ā |
| Directory path to list |
|
| ā |
| Include dotfiles |
|
| ā |
| Show permissions, size, date |
manage_service
Manage systemd services.
Parameter | Type | Required | Default | Description |
|
| ā | ā | Service name (e.g., |
|
| ā | ā |
|
|
| ā |
| Lines to show (for |
list_services
List systemd services filtered by state.
Parameter | Type | Required | Default | Description |
|
| ā |
|
|
system_stats
Get system resource usage.
Parameter | Type | Required | Default | Description |
|
| ā |
|
|
docker
Manage Docker containers.
Parameter | Type | Required | Default | Description |
|
| ā | ā |
|
|
| ā | ā | Container name/ID (required for |
|
| ā |
| Lines to show (for |
firewall
Manage UFW firewall rules.
Parameter | Type | Required | Default | Description |
|
| ā | ā |
|
|
| ā | ā | Rule spec (e.g., |
š 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
Available Tools
9 toolsdockerC
Manage Docker containers (list, start, stop, logs, stats)
Inputs: action (required), container, log_lines.
firewallC
Manage UFW firewall rules (status, allow, deny, delete)
Inputs: action (required), rule.
list_directoryA
List files and directories at a given path on the VPS
Inputs: path, long_format, show_hidden.
list_servicesA
List all systemd services or filter by state
Inputs: filter.
manage_serviceB
Manage systemd services on the VPS (start, stop, restart, status, enable, disable)
Inputs: action (required), service (required), log_lines.
read_fileA
Read the contents of a file on the VPS
Inputs: path (required), max_lines.
run_commandB
Execute a shell command on the VPS via SSH
Inputs: command (required), timeout, working_directory.
system_statsB
Get system resource usage (CPU, RAM, disk, network, uptime)
Inputs: include.
write_fileA
Write content to a file on the VPS (creates or overwrites)
Inputs: path (required), content (required), create_dirs.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogā¦
TDQS
Scored across 9 tools
Each tool targets a distinct resource or action: file operations, directory listing, command execution, service management, system stats, Docker, and firewall. The run_command tool is a catch-all but has a clearly separate purpose as an arbitrary command executor.
Most tools follow a verb_noun pattern (e.g., read_file, manage_service), but 'docker' and 'firewall' are bare nouns, and 'system_stats' is noun_noun. These are minor deviations that don't impede comprehension.
With 9 tools, the set is well-scoped for VPS management. Each tool covers a distinct area without redundancy or bloat, fitting comfortable within the ideal range.
The set covers core operations: file read/write/list, command execution, service management, system stats, Docker, and firewall. Missing file deletion/renaming and some advanced administrative tasks, but the surface is sufficient for common VPS workflows.
Maintenance
Related MCP Connectors
Manage Vozora VPS servers, SSH keys, firewalls, DNS and usage from an AI agent.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to connect to and control a Virtual Private Server via SSH. It provides a comprehensive suite of tools for remote file system operations, session management, and shell command execution.1017 npm2ISC
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to securely manage Virtual Private Servers via SSH, with features including command execution, file operations, system monitoring, and service management.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to securely execute commands, transfer files, and manage port forwarding on remote servers via SSH.158 npm38Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI assistants to manage remote servers via SSH with agentless command execution, file operations, and service management.9MIT