VPS Ops MCP server
io.github.koller-nexus/vps-ops-mcp·v0.1.0·1 starsStdio MCP server that inspects and (with confirmation) mutates one VPS over SSH.
1 stars49 downloads/wk
Reviews
Write oneNobody has reviewed VPS Ops yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
VPS Ops tools (25)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
compose_psdocker compose ps in dir (arg or VPS_COMPOSE_DIR).
compose_pull_updocker compose pull then up -d [services…]. Requires confirm:true.
compose_restartdocker compose restart [services…]. Requires confirm:true.
compose_updocker compose up -d [services…]. Requires confirm:true. dir or VPS_COMPOSE_DIR.
disk_cleanup_dockerdocker system prune -f; volumes only if confirm_volumes:true. Requires confirm:true.
docker_inspectdocker inspect on a container/image name.
docker_logsdocker logs --tail N --timestamps. Optional since. N <= 1000.
docker_node_lsList Docker Swarm nodes as JSON lines (fallback to table).
docker_psList all Docker containers as JSON lines (fallback to table).
docker_restartdocker restart NAME. Requires confirm:true.
docker_rmdocker rm -f NAME. Requires confirm:true AND force_name === name.
docker_service_lsList Docker Swarm services as JSON lines (fallback to table).
docker_startdocker start NAME. Requires confirm:true.
docker_statsOne-shot docker stats --no-stream.
docker_stopdocker stop NAME. Requires confirm:true.
host_dmesgKernel log tail via dmesg -T. N <= 200. sudo -n, then fallback without sudo.
host_fail2banfail2ban-client status; optional jail (default overall, or sshd).
host_failed_unitsFailed systemd units (systemctl --failed --no-pager).
host_firewallufw status verbose (sudo -n, then fallback without sudo).
host_listenListening TCP/UDP sockets (ss -lntup). sudo -n, then fallback without sudo.
host_topTop 30 processes by memory (ps aux --sort=-%mem).
ssh_hardening_checkEffective sshd settings: port, passwordauthentication, permitrootlogin, pubkeyauthentication.
vps_journalRead systemd journal for an allowlisted unit (or *.service). N <= 500.
vps_pingHealth check: uname -a, uptime, and hostname on the VPS via SSH.
vps_resourcesDisk (df -h), memory (free -h), and load average.
Public scan report
scanner v0.1.10 · 2026-11-03 · same rubric, same numbers if you re-run it
- Code scan16 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 20 days ago15/15
- Maintainer identityregistry namespace matches repository owner7/10
How VPS Ops compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 82/100
- higher than 63% of 48,255 servers
- Tools
- 25
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 49
- more than 41% of 12,191 servers with a package
What its tools let an agent do: 25 read
Install VPS Ops in Claude Code, Cursor or VS Code
Runs npx -y @koller-nexus/vps-ops-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add vps-ops-mcp -- npx -y @koller-nexus/vps-ops-mcp
What the publisher says
From the VPS Ops repository's README, as published. We do not edit it. Read it on GitHub
vps-ops-mcp
A stdio MCP server that operates one VPS over SSH. Cursor and Codex start the process with bun and call read-only tools (host health, Unix debug, Docker, Compose, Swarm, firewall) plus mutation tools (restart, stop, start, prune). Mutations require an explicit confirmation.
Transport is stdio. Do not start the server as a long-lived process by hand: the client (Cursor or Codex) launches it.
Contributing
See CONTRIBUTING.md (branches, pull requests, verification) and ISSUE.md (how to file an issue).
Requirements
- Bun
- Python 3 (used by the registration scripts)
- OpenSSH client (ssh on PATH)
- A readable SSH private key with access to the remote user
- On the remote host: Docker (and passwordless sudo -n for ufw, fail2ban, sshd -T, ss, and dmesg if you use those tools)
Configuration
cp .env.example .envEdit .env. The file is gitignored.
VPSCOMPOSEDIR must be absolute and match /^[a-zA-Z0-9/_.-]+$/ (it must start with /).
Installation
bun installnpm package (requires Bun; the MCP Registry points at this artifact):
bunx @koller-nexus/vps-ops-mcpMCP Registry name: io.github.koller-nexus/vps-ops-mcp. The registry publishes metadata only after the package exists on public npm.
Register with clients
The scripts write MCP config from variables already exported in the shell. They do not load .env themselves. If you skip the export, the scripts fall back to their defaults (host, user, port, and a local key path).
Do this once at the repository root before each script:
set -a
source .env
set +aEach run backs up the destination file (*.bak.YYYYMMDDHHMMSS) and replaces only the vps-ops server. Other MCP servers stay in place.
Optional script variables:
VPSCOMPOSEDIR is written into the client config only when it is set and non-empty.
Cursor
Global registration (applies in every workspace):
./scripts/register-cursor-mcp.shThe script writes ~/.cursor/mcp.json in this shape:
{
"mcpServers": {
"vps-ops": {
"command": "bun",
"args": ["/absolute/path/vps-ops-mcp/src/index.ts"],
"env": {
"VPS_HOST": "your.host",
"VPS_USER": "ubuntu",
"VPS_PORT": "22",
"VPS_SSH_KEY_PATH": "/absolute/path/to/key",
"VPS_COMMAND_TIMEOUT_MS": "30000",
"VPS_LOG_MAX_BYTES": "200000",
"VPS_ALLOW_MUTATIONS": "true"
}
}
}
}To scope it to one project, point the script at that project's mcp.json:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
VPS Ops: common questions
- Is VPS Ops MCP server safe?
- Mostly: it is graded B (82/100). Read the VPS Ops safety report
- How do I install VPS Ops?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does VPS Ops need an API key?
- Yes. The registry entry asks for
VPS_SSH_KEY_PATH,VPS_SSH_KEY_PASSPHRASE. - Is VPS Ops maintained?
- The last commit was 21 days ago (2026-10-13). The latest release is v0.1.0.
- How does VPS Ops compare with other MCP servers?
- safety score 82/100 (higher than 63% of 48,255 servers); tools 25 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.