Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

VPS Guardian

PYPI · VPS-GUARDIAN-MCP · 2 COMPONENTS

Secure SSH bridge for AI agents to observe and safely administer Linux VPSs.

−15 this week 76 Trust /100

Last scanned (7 hours ago)

Scores higher than 72% of PyPI servers

Category Cloud Infrastructure

Recent critical change

GHSA-6q48-6c7w-9gw2 affects this package (21 Oct 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 35 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to murzirius/VPS-Guardian-MCP). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 22 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 9075 tokens (~58/item across 155 items; 152 tools + 3 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage67
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "execute_agent_job_recovery" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 154 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 4 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 +7
    • Stability: fail → pass ▲ security
  • 25 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/vps-guardian-mcp@0.37.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo murzirius/VPS-Guardian-MCP
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/murzirius/VPS-Guardian-MCP/.github/workflows/publish.yml@refs/tags/v0.37.0
Rekor log index 3245169792
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:3d4f9e0d4f961eac43f7c86b8d907e1deee1cfff9a545f61363f855e2edcc400

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 35 packages
Packages resolved 35
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 152 exposed · ~8,918 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_mission_workspace_files ~45

Add selected existing files to a draft within live Mission file/text limits; no recursive scan.

NameTypeReqDescription
relative_pathsarrayyes–
workspace_idstringyes–

No output schema declared.

No examples provided.

advance_agent_job ~48

Run one bounded read-only step, optionally detached so it can finish after MCP disconnects.

NameTypeReqDescription
backgroundboolean––
job_idstringyes–
session_id–––

No output schema declared.

No examples provided.

analyze_disk_usage ~180

Analyze disk usage for a directory to discover space bottlenecks and large files. Safely walks the filesystem without following symlinks and automatically skips virtual pseudo-filesystems (/proc, /sys, /dev, /run). Args: target_path: Starting path to inspect (defaults to '/var'). max_depth: Depth of directory nesting to inspect (1 to 5, default 2). min_size_mb: Minimum size threshold in megabytes to include (default 50 MB). top_n: Maximum number of largest items to return (1 to 50, default 15). Returns: JSON string with partition usage, largest directories, and largest files.

NameTypeReqDescription
max_depthinteger––
min_size_mbinteger––
target_pathstring––
top_ninteger––

No output schema declared.

No examples provided.

apply_change_set ~41

Apply, validate, reload, health-check, and automatically roll back one ChangeSet.

NameTypeReqDescription
change_set_idstringyes–
confirmation_token–––

No output schema declared.

No examples provided.

apply_project_patch ~38

Apply a confirmed bounded source patch with backups; it never executes project code.

NameTypeReqDescription
confirmation_token–––
patch_idstringyes–

No output schema declared.

No examples provided.

assess_project_change ~64

Find reverse-import impact and related test candidates within three hops; not runtime or coverage proof.

NameTypeReqDescription
after_fingerprint–––
max_resultsinteger––
project_pathstringyes–
relative_pathstringyes–
symbol_name–––

No output schema declared.

No examples provided.

audit_ssh_config ~40

Audit the SSH daemon configuration against security best practices. Returns: JSON string with detected settings, security score (0-100), and remediation guidance.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

begin_change_set ~36

Open a short-lived, bounded, reversible Nginx configuration ChangeSet.

NameTypeReqDescription
target–––
titlestringyes–

No output schema declared.

No examples provided.

begin_project_patch ~38

Open a short-lived, bounded source patch; no project code runs.

NameTypeReqDescription
project_pathstringyes–
titlestringyes–

No output schema declared.

No examples provided.

cancel_agent_job ~37

Cancel a job; in-flight read-only results cannot revive it.

NameTypeReqDescription
job_idstringyes–
reasonstring––

No output schema declared.

No examples provided.

check_dns_health ~67

Audit system DNS resolution health, configured nameservers, and query responsiveness. Args: domains: Optional custom list of domains to probe. Defaults to essential public services. Returns: JSON string with configured nameservers, individual domain lookup latencies, and health verdict.

NameTypeReqDescription
domains–––

No output schema declared.

No examples provided.

check_failed_logins ~69

Inspect recent failed SSH login attempts to detect brute-force attackers. Args: limit: Number of recent failed attempts to inspect (default: 20, max: 100). Returns: JSON string with recent failed logins and top offending attacker IP addresses.

NameTypeReqDescription
limitinteger––

No output schema declared.

No examples provided.

check_guardian_updates ~101

Check if a newer version or commit of VPS-Guardian-MCP is available on GitHub. Provides automated version verification and action guidance for self-updating. Cached for 5 minutes to minimize network and CPU overhead. Args: force_refresh: Set to True to bypass cache and query GitHub API directly. Returns: JSON string with current version, latest commit, update availability, and AI warning notice.

NameTypeReqDescription
force_refreshboolean––

No output schema declared.

No examples provided.

check_http_endpoint ~87

Check a public HTTP(S) URL: response status, redirects, TLS, latency, and optional text. This is read-only and intentionally returns only metadata, never a page body. Use it before or after a deployment to verify the public result.

NameTypeReqDescription
expected_statusinteger––
expected_text–––
timeout_secondsinteger––
urlstringyes–

No output schema declared.

No examples provided.

check_http_endpoints ~65

Check up to 20 public HTTP(S) endpoints in one compact deployment health report. Each item accepts url, expected_status (default 200), expected_text (optional), and timeout_seconds (default 10). This tool is read-only.

NameTypeReqDescription
endpointsarrayyes–

No output schema declared.

No examples provided.

check_kernel_errors ~74

Audit kernel logs for hardware failures, storage I/O errors, or application segfaults. Args: limit: Maximum number of error entries to retrieve (1 to 50, default 20). Returns: JSON string with categorized kernel errors, root causes, and critical issue counters.

NameTypeReqDescription
limitinteger––

No output schema declared.

No examples provided.

check_oom_events ~89

Inspect kernel logs for Linux Out-Of-Memory (OOM) Killer invocations. Surfaces terminated processes, PIDs, and consumed RSS memory at time of termination. Args: limit: Maximum number of recent OOM events to return (1 to 50, default 10). Returns: JSON string with detected OOM incidents and diagnostic summary.

NameTypeReqDescription
limitinteger––

No output schema declared.

No examples provided.

check_service_status ~87

Check the operational status of a systemd service unit. Args: service_name: Name of the system service (e.g. 'nginx', 'mysql', 'postgresql', 'ufw', 'docker'). Returns: JSON string with active state ('active', 'inactive', 'failed'), enabled state, and recent status logs.

NameTypeReqDescription
service_namestringyes–

No output schema declared.

No examples provided.

check_ssl_certificates ~44

Audit SSL/TLS certificates configured on the host (Let's Encrypt / Certbot). Returns: JSON string listing domains, expiration dates, days remaining, and warning flags.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

check_system_limits ~47

Audit system-wide and user limits: file descriptors, max PIDs, virtual memory, socket backlogs. Returns: JSON string comparing allocations to kernel limits and highlighting threshold warnings (>80%).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

check_system_updates ~103

Audit available operating system package updates and pending security patches. Checks reboot requirements (/var/run/reboot-required), total upgradable packages, and security CVE patches. Cached for 5 minutes to minimize CPU and disk usage. Args: force_refresh: Set to True to bypass the 5-minute cache and query package managers directly. Returns: JSON string with update counts, security status, reboot flag, and recommended recovery action.

NameTypeReqDescription
force_refreshboolean––

No output schema declared.

No examples provided.

claim_agent_task ~44

Lease one dependency-ready task to an active agent session.

NameTypeReqDescription
lease_minutesinteger––
session_idstringyes–
task_idstringyes–

No output schema declared.

No examples provided.

clean_docker_garbage ~104

Safely reclaim disk space by pruning dangling images, stopped containers, unused volumes, and networks. Args: prune_type: Category to prune ('containers', 'images', 'volumes', 'networks', 'all'). Default is 'all'. confirmation_token: Single-use token returned by the preceding plan call. Returns: JSON string detailing deleted items and total disk capacity reclaimed.

NameTypeReqDescription
confirmation_token–––
prune_typestring––

No output schema declared.

No examples provided.

close_agent_checkpoint ~35

Close a checkpoint with a secret-redacted change outcome.

NameTypeReqDescription
checkpoint_idstringyes–
outcomestring––

No output schema declared.

No examples provided.

close_agent_session ~38

Close a session with an outcome; historical records remain secret-redacted.

NameTypeReqDescription
outcomestringyes–
session_idstringyes–

No output schema declared.

No examples provided.

close_maintenance_window ~37

Close a maintenance window with a secret-redacted outcome note.

NameTypeReqDescription
outcomestring––
window_idstringyes–

No output schema declared.

No examples provided.

compare_agent_checkpoint ~32

Compare a checkpoint to current state and return a confirmation-gated rollback plan.

NameTypeReqDescription
checkpoint_idstringyes–

No output schema declared.

No examples provided.

compare_system_snapshots ~68

Compare two snapshots and rank configuration or infrastructure drift by risk. Flags new exposed ports, failed units, cron changes, Docker drift, and configuration-hash changes. Both snapshots must be from the same host.

NameTypeReqDescription
baseline_idstringyes–
current_idstringyes–

No output schema declared.

No examples provided.

compare_workload_baseline ~30

Compare a saved workload baseline with the current workload state.

NameTypeReqDescription
baseline_idstringyes–

No output schema declared.

No examples provided.

compose_project_action ~51

Token-confirmed Docker Compose up, restart, or stop for selected project services.

NameTypeReqDescription
actionstringyes–
compose_filestringyes–
confirmation_token–––
services–––

No output schema declared.

No examples provided.

create_agent_checkpoint ~44

Capture a bounded pre-change system or workload observation; no changes are made.

NameTypeReqDescription
labelstring––
session_id–––
targetstringyes–

No output schema declared.

No examples provided.

create_agent_job ~72

Persist a bounded, read-only Agent Job. Checks: system_health, runtime_budget, workload_brief, event_delta, service_logs, service_status.

NameTypeReqDescription
checksarrayyes–
session_id–––
target–––
titlestringyes–
ttl_hoursinteger––

No output schema declared.

No examples provided.

create_agent_task ~57

Add a bounded task to the shared agent queue; no server action is executed.

NameTypeReqDescription
created_by_session–––
depends_on–––
priorityinteger––
target–––
titlestringyes–

No output schema declared.

No examples provided.

create_backup ~159

Create a compressed tar.gz archive of an authorized website or configuration directory. Archives are saved into an isolated backup repository (/var/backups/vps-guardian/). Permitted source locations: /var/www/, /etc/nginx/, /etc/mysql/, /etc/postgresql/, /etc/docker/, /etc/caddy/ Args: backup_type: Identifier label for the archive (e.g. 'site', 'config', 'data'). source_path: Target directory to archive. confirmation_token: Single-use token returned by the preceding plan call. Returns: JSON string with archive file path, size, file count, and duration.

NameTypeReqDescription
backup_typestringyes–
confirmation_token–––
source_pathstringyes–

No output schema declared.

No examples provided.

create_maintenance_window ~84

Create an expiring maintenance window for agent coordination. A window records intent and timing; it never bypasses the active safety mode or grants permission for VPS changes.

NameTypeReqDescription
allowed_actions–––
duration_minutesinteger––
session_id–––
starts_in_minutesinteger––
target–––
titlestringyes–

No output schema declared.

No examples provided.

create_mission_workspace ~52

Copy selected protected source files into a bounded Mission proposal; [] starts a new-files-only draft.

NameTypeReqDescription
project_pathstringyes–
relative_pathsarrayyes–
titlestringyes–

No output schema declared.

No examples provided.

create_system_snapshot ~79

Save a privacy-preserving, read-only VPS state baseline. Records ports, failed units, cron/timers, Docker inventory, and optional configuration file hashes. It never stores config content or cron commands. Snapshot storage is configurable with VPS_GUARDIAN_SNAPSHOT_DIR.

NameTypeReqDescription
include_config_hashesboolean––
label–––

No output schema declared.

No examples provided.

create_workload_baseline ~36

Save a secret-free known-good workload baseline for later drift comparison.

NameTypeReqDescription
label–––
targetstringyes–

No output schema declared.

No examples provided.

deploy_config_change ~89

Commit a validated configuration plan, reload its service, and auto-rollback on failure. Args: deployment_id: Short-lived identifier returned by plan_config_deployment. confirmation_token: Required only in controlled mode; bound to this plan. Returns: JSON outcome with atomic-write, reload, health-check, and rollback details.

NameTypeReqDescription
confirmation_token–––
deployment_idstringyes–

No output schema declared.

No examples provided.

detect_zombie_processes ~45

Scan system process table for defunct/zombie processes and identify non-reaping parents. Returns: JSON string reporting detected zombies, parent PIDs, and remediation advice.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

diagnose_project_dependencies ~64

Return bounded direct-dependency/lockfile issues and runtime mismatch evidence; unchanged fingerprints suppress repeated reports.

NameTypeReqDescription
after_fingerprint–––
environment_path–––
include_devboolean––
project_pathstringyes–
service_name–––

No output schema declared.

No examples provided.

diagnose_workload ~42

Gather bounded read-only logs, OOM, kernel, and health evidence for a workload.

NameTypeReqDescription
log_linesinteger––
targetstringyes–

No output schema declared.

No examples provided.

discover_projects ~33

Find bounded Git/application projects in configured VPS project roots.

NameTypeReqDescription
max_depthinteger––
root_path–––

No output schema declared.

No examples provided.

docker_container_action ~145

Safely execute lifecycle operations (start, stop, restart, pause, unpause) on a container. Args: container_name: Name or short/full ID of the target Docker container. action: Desired action ('start', 'stop', 'restart', 'pause', 'unpause'). timeout: Stop/restart timeout in seconds before forcible kill (default: 10). confirmation_token: Single-use token returned by the preceding plan call. Returns: JSON string detailing previous status, new status, and action outcome.

NameTypeReqDescription
actionstringyes–
confirmation_token–––
container_namestringyes–
timeoutinteger––

No output schema declared.

No examples provided.

execute_agent_job_recovery ~41

Execute a proposed restart through the existing safety-mode confirmation gate, then require verification.

NameTypeReqDescription
confirmation_token–––
job_idstringyes–

No output schema declared.

No examples provided.

execute_recovery ~296

Execute an emergency recovery operation from a strictly whitelisted list. Allowed actions: - 'restart_service': Restarts a systemd service (requires target=service_name, e.g. target='nginx'). - 'clean_docker_cache': Deep prune of unused containers, networks, images, and volumes. - 'clean_system_logs': Prunes journal logs older than 3 days and rotated archives in /var/log. - 'kill_process': Terminates a runaway process by PID (requires target=PID, e.g. target='12345'). - 'restart_nginx': Restarts Nginx web server (legacy alias for restart_service target='nginx'). - 'vacuum_systemd_journal': Truncates journal logs to limit (target defaults to '200M'). - 'clean_package_cache': Cleans APT archive cache and removes obsolete packages. - 'apply_security_updates': Non-interactively applies pending operating system security updates. - 'update_guardian': Self-updates VPS-Guardian-MCP from GitHub and refreshes virtual environment. Args: action_name: The exact recovery action to execute. target: Optional target parameter required by certain actions. confirmation_token: Single-use token returned by the preceding plan call. Returns: JSON string with operation outcome, freed resources, or security error.

NameTypeReqDescription
action_namestringyes–
confirmation_token–––
target–––

No output schema declared.

No examples provided.

find_project_references ~67

Find Python symbol-use candidates, distinguishing import aliases from name-only matches; never executes code.

NameTypeReqDescription
after_fingerprint–––
max_resultsinteger––
project_pathstringyes–
relative_pathstringyes–
symbol_namestringyes–

No output schema declared.

No examples provided.

find_workload ~33

Find an application by domain, container, Compose service, port, or path fragment.

NameTypeReqDescription
querystringyes–

No output schema declared.

No examples provided.

finish_agent_job ~36

Record the agent's conclusion after all checks or recovery verification.

NameTypeReqDescription
conclusionstringyes–
job_idstringyes–

No output schema declared.

No examples provided.

finish_agent_task ~54

Complete or fail an owned task and retain a bounded, redacted result.

NameTypeReqDescription
outcomestringyes–
resultstring––
session_idstringyes–
task_idstringyes–

No output schema declared.

No examples provided.

Install

How do I install the VPS Guardian MCP server?

VPS Guardian runs locally as a PyPI package, launched with uvx vps-guardian-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · vps-guardian-mcp

# add to Claude Code
claude mcp add murzirius-vps-guardian-mcp -- uvx vps-guardian-mcp
Common questions

What is the VPS Guardian MCP server?

VPS Guardian is an MCP server listed in the public MCP registry as io.github.murzirius/vps-guardian-mcp. Secure SSH bridge for AI agents to observe and safely administer Linux VPSs. This page covers its PyPI package (vps-guardian-mcp).

Is the VPS Guardian MCP server safe to use?

VPS Guardian scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the VPS Guardian MCP server expose?

VPS Guardian exposes 152 tools: get_system_health, get_top_processes, check_service_status, get_failed_systemd_units, read_service_logs, and 147 more. Their descriptions and schemas cost roughly 8,918 tokens of context every time the server is loaded.

Is the VPS Guardian MCP server still maintained?

VPS Guardian is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the VPS Guardian MCP server under?

VPS Guardian declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.