areso avatar

Safe Ssh Mcp

areso/safe-ssh-mcp

This is a deliberately restricted SSH wrapper that only exposes read-only diagnostic commands to AI agents. Instead of handing Claude a full bash shell, you get curated tools like df, du, dmesg, uptime, systemctl status checks, and top output. It's designed for DevOps scenarios where you want an AI to help troubleshoot remote systems without risking accidental modifications. The server enforces host safety by limiting the command surface area to monitoring and diagnostics. Ships with both stdio and SSE transport support, and uses standard SSH key authentication. AGPL licensed, but the copyleft doesn't extend to client applications since they communicate over IPC.

GitHub stars
8
tools
12
transport
STDIO
last updated
Nov 12, 2026

Tools

12 tools

Public tool metadata for what this MCP can expose to an agent.

get_disk_freeRuns `df -h` to show disk free space.

Runs `df -h` to show disk free space.

No parameter schema in public metadata yet.

get_disk_usageRuns `find <path> -mindepth 1 -maxdepth 1 -exec du -sh -- {} + 2>/dev/null | sort -rh | head -n 20`.

Runs `find <path> -mindepth 1 -maxdepth 1 -exec du -sh -- {} + 2>/dev/null | sort -rh | head -n 20`.

No parameter schema in public metadata yet.

get_dmesgRuns `dmesg`.

Runs `dmesg`.

No parameter schema in public metadata yet.

get_uptimeRuns `uptime`.

Runs `uptime`.

No parameter schema in public metadata yet.

get_current_datetimeRuns `date`.

Runs `date`.

No parameter schema in public metadata yet.

get_distroname_versionRuns `cat /etc/os-release`.

Runs `cat /etc/os-release`.

No parameter schema in public metadata yet.

get_systemd_list_allRuns `systemctl list-units --all --no-pager`.

Runs `systemctl list-units --all --no-pager`.

No parameter schema in public metadata yet.

get_systemd_list_failedRuns `systemctl list-units --state=failed --no-pager`.

Runs `systemctl list-units --state=failed --no-pager`.

No parameter schema in public metadata yet.

get_systemd_list_timersRuns `systemctl list-timers --no-pager`.

Runs `systemctl list-timers --no-pager`.

No parameter schema in public metadata yet.

get_crontab_tasksRuns `crontab -l`.

Runs `crontab -l`.

No parameter schema in public metadata yet.

get_systemd_statusRuns `systemctl status {daemon}`.

Runs `systemctl status {daemon}`.

No parameter schema in public metadata yet.

get_topRuns `top -b -n 1 -c`.

Runs `top -b -n 1 -c`.

No parameter schema in public metadata yet.

Sponsors

Readme

Safe SSH MCP Server

A secure and scoped SSH MCP server for executing read-only diagnostic commands over SSH.
In this project, "safe" refers specifically to host safety: the server is designed to prevent modifications to the remote system and reduce the risk of operational harm. It does NOT attempt to guarantee that command output cannot be misused by external agents.

Badges

Snyk Vulnerability Database report - security check
PyPI Downloads

Overview

The core philosophy behind this MCP server is safety first. Instead of providing an AI agent with an unrestricted bash shell, this server exposes only carefully curated, read-only commands for system diagnostics and monitoring.

Available Tools (Partial List)

A few examples from each group; <...> marks a validated parameter.


View the full README on GitHub

Details

Repository
github.com/areso/safe-ssh-mcp
Package
safe-ssh-mcp
Transport
STDIO
Registry
MCP registry, active