Skip to main content
Glama

šŸ–„ļø 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

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

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 .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

Available Tools

9 tools
dockerC

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

    A3.6/5.0

    Scored across 9 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      10
      17 npm
      2
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables LLMs to securely manage Virtual Private Servers via SSH, with features including command execution, file operations, system monitoring, and service management.
      2
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to securely execute commands, transfer files, and manage port forwarding on remote servers via SSH.
      158 npm
      38
      Apache 2.0