Platform Compatibility¶
Overview¶
This SSH MCP server enables remote server management via SSH. This document describes platform compatibility for both the client (machine running the MCP server) and the target (remote machine being connected to).
Compatibility Matrix¶
| Client (Local) | Target (Remote) | Status |
|---|---|---|
| Windows | Linux | Fully supported |
| macOS | Linux | Fully supported |
| Linux | Linux | Fully supported |
| Windows | macOS | Fully supported |
| macOS | macOS | Fully supported |
| Linux | macOS | Fully supported |
| Windows | Windows Server 2016+ | Fully supported |
| macOS | Windows Server 2016+ | Fully supported |
| Linux | Windows Server 2016+ | Fully supported |
| Any | Windows Server 2012 R2 | Not supported |
| Any | BSD variants, routers, NAS, embedded Linux | Experimental (flex/capability-gated) - see Alternate Platforms |
Client-Side Requirements¶
The MCP server can run on Windows, macOS, or Linux. Requirements:
- Python 3.10+
- Paramiko >= 3.5.0
- Standard SSH connectivity to target
The client platform does not affect functionality since all operations use the Paramiko SSH library, which is cross-platform.
Target Requirements by Platform¶
Linux¶
All Linux distributions with SSH access are supported. No special requirements.
Tested distributions: - Debian 11, 12 - Ubuntu 20.04, 22.04, 24.04 - CentOS 7, 8, 9 - Rocky Linux 8, 9 - Amazon Linux 2, 2023
macOS¶
macOS 10.15 (Catalina) and later are supported. Remote Login must be enabled in System Preferences.
See MACOS_COMPATIBILITY.md for macOS-specific details.
Windows¶
Windows Server 2016 and later are supported. Requires: - PowerShell 5.0 or later (built-in on supported versions) - OpenSSH Server enabled
See 25-windows-support.md for Windows-specific details including: - Supported versions and requirements - Behavioral differences from Linux/macOS - Known limitations - Troubleshooting guide
Architecture¶
The codebase uses platform-specific operation classes:
SshFileOperations
├── SshFileOperations_Linux
├── SshFileOperations_Mac
└── SshFileOperations_Win
SshDirectoryOperations
├── SshDirectoryOperations_Linux
├── SshDirectoryOperations_Mac
└── SshDirectoryOperations_Win
SshRunOperations
├── SshRunOperations_Linux (also used for macOS)
└── SshRunOperations_Win
SshTaskOperations
├── SshTaskOperations_Linux (also used for macOS)
└── SshTaskOperations_Win
SshOsOperations
├── SshOsOperations_Linux
├── SshOsOperations_Mac
└── SshOsOperations_Win
The correct operation class is automatically selected based on the detected OS during SSH connection.
flex targets don't get their own classes - they reuse the Linux run/task
operations and the Mac file/dir/os operations as-is (the same composition
macOS itself uses), wrapped in a capability gate that blocks only the
specific methods a confirmed-missing capability would break. See
Alternate Platforms for details.
Platform Detection¶
When connecting, the server automatically detects the remote OS:
- Linux: Detected via
uname -sreturning "Linux" - macOS: Detected via
uname -sreturning "Darwin" - Windows: Detected via
echo %OS%returning "Windows_NT" or PowerShell availability flex: Any other target whereuname -ssucceeds but returns something else (e.g.FreeBSD) - see Alternate Platforms
The detected OS type and subtype are available in connection status:
{
"os_type": "windows",
"os_subtype": "windows_server_2019"
}
Key Differences by Platform¶
| Feature | Linux | macOS | Windows |
|---|---|---|---|
| Shell | bash | bash/zsh | PowerShell |
| Elevation | sudo |
sudo |
Run as Administrator |
| Path separator | / |
/ |
\ |
| Archive format | .tar.gz |
.tar.gz |
.zip |
| Permissions | Unix octal | Unix octal | ACLs |
| Background tasks | nohup & |
nohup & |
Start-Process |
Unsupported Platforms¶
The following are explicitly not supported:
- Windows Server 2012 R2 and earlier: Requires PowerShell 5.0+
- Windows 8.1 and earlier: Requires PowerShell 5.0+
- Any device that doesn't respond to a basic shell command over SSH at all
(no
uname, or the account is denied shell access entirely post-auth)
FreeBSD, embedded Linux (routers, NAS, BusyBox-based systems), and other
non-standard POSIX targets are handled on a best-effort basis via the
flex platform and a capability-probing system - see
Alternate Platforms for what's supported, what
isn't, and the current work-in-progress caveats.