vserver-monitoring-mcp
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., "@vserver-monitoring-mcpRun a full health check and report any potential problems."
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.
vServer Monitoring MCP Server
An MCP server (Model Context Protocol) that gives Claude SSH-based, read-only access to a Linux vServer. Claude can query system metrics, read log files, collect network information and produce complete health check reports.
Purpose
Monitoring a Linux server usually requires SSH access and knowing the relevant commands and log locations. This MCP server hides that complexity: it connects to the server over SSH and returns structured monitoring data. You can simply ask "How is my server doing?" in a chat and get a complete health check report, including automatic warnings when configured thresholds are exceeded.
Related MCP server: ai-ssh-mcp
Available tools
Tool | Description |
| CPU load, RAM usage, disk usage and uptime; warnings based on configured thresholds |
| Last N lines of a configured log file (e.g. syslog, auth.log, nginx logs) |
| Open ports (listening services), active connections and network interfaces with IP addresses |
| Full health check: combines system metrics, network information and log excerpts in one report |
| Lists all log files configured in |
All tools support the output formats markdown (readable, default) and json (structured, for further processing).
Requirements
Python 3.12+
SSH access to the target server with an SSH key (RSA, Ed25519 or ECDSA)
The public key must be listed in
~/.ssh/authorized_keyson the target serverStandard Linux tools on the target server (
cat,free,df,ss,ip,tail,uptime)
Installation
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtAlternatively, use the install script:
./install.shConfiguration
Copy config.example.yaml to config.yaml and adjust the values:
server:
host: "your-server.example.com"
port: 22
username: "monitoring"
ssh_key_path: "~/.ssh/id_ed25519"
# ssh_key_passphrase: "passphrase-if-encrypted"
timeout: 10
monitoring:
logs:
- path: "/var/log/syslog"
name: "syslog"
description: "System log with general system messages"
- path: "/var/log/auth.log"
name: "auth"
description: "Authentication and authorization log"
# Add more logs as needed:
# - path: "/var/log/nginx/error.log"
# name: "nginx-error"
network:
check_ports: true
check_connections: true
system:
thresholds:
cpu_warning: 80
cpu_critical: 95
memory_warning: 80
memory_critical: 95
disk_warning: 80
disk_critical: 95config.yaml must be located in the same directory as vserver_mcp.py. It contains your server details and is excluded from version control via .gitignore.
Testing the connection
python3 test_connection.pyThis script connects to the server configured in config.yaml. The unit tests in test_vserver_mcp.py run without a server:
python -m unittest test_vserver_mcp -vClaude Desktop integration
{
"mcpServers": {
"vserver-monitoring": {
"command": "/path/to/vserver_monitoring_mcp/.venv/bin/python",
"args": [
"/path/to/vserver_monitoring_mcp/vserver_mcp.py"
]
}
}
}The configuration file is located at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Important: The path in args must be absolute. On startup the server changes into the directory of the script, so that config.yaml is found.
See QUICKSTART.md and INTEGRATION.md for details.
Example prompts
Show me the current system metrics of my server.Run a full health check and report any potential problems.Show me the last 50 lines of the auth log.Which ports are open on my server?Security
The server executes read-only monitoring commands on the target host over SSH (for example free, df, ss, tail). It does not change anything on the server. Even so, it holds a working SSH key, so:
Use a dedicated, unprivileged user instead of
root, with read access only to the log files you want to expose.Use a dedicated SSH key for this purpose. Consider restricting it in
authorized_keys(for example withfrom="...",no-port-forwarding,no-agent-forwarding,no-pty).Only list log files in
config.yamlthat you are comfortable sharing with the AI assistant.
Status
Beta. Usable for standard Linux servers (Debian/Ubuntu).
Contributing
See CONTRIBUTING.md.
License
MIT, see LICENSE. The name is not covered by the license.
Related MCP Connectors
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Monitoring + status pages set up by talking to Claude. Auto-detects 30+ SDKs and your URLs.
Give Claude only the Google Drive files you choose. Every action logged.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides read-only server monitoring and diagnostic tools for AI assistants to manage Linux and Unraid systems via SSH. It enables natural language interactions for container management, storage health checks, and system log analysis while keeping credentials secure.17ISC
- AlicenseAqualityDmaintenanceEnables natural language SSH server management via Claude Code, allowing users to read logs, check services, run commands, and transfer files across multiple servers.6MIT
- FlicenseAqualityDmaintenanceEnables Claude to monitor CPU, memory, disk, processes, network connections, Docker containers, and system logs for system diagnostics and troubleshooting.5-
- FlicenseNot gradedqualityBmaintenanceA read-only MCP server that gives Claude Code secure, non-invasive access to infrastructure logs, service status, metrics, Ansible facts, and Docker state via SSH, with a strict command allowlist and no write operations.-