vps-mcp-server

vps-mcp-server

Gives AI assistants full control over a VPS via SSH, enabling command execution, file management, service control, Docker and firewall management.

Category
Visit Server

README

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

šŸ“¦ 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured