ssh-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ssh_execA | Execute a command on a remote host via SSH. The command is interpreted by the remote login shell — pipes, redirects, globs, and other shell metacharacters work as expected. Returns stdout, stderr, and exit code. Use |
| ssh_read_fileB | Read a file from a remote host via SFTP. |
| ssh_write_fileA | Write content to a file on a remote host via SFTP. Creates or overwrites the file. |
| ssh_uploadB | Upload a local file to a remote host via SFTP. |
| ssh_downloadA | Download a file from a remote host to local filesystem via SFTP. |
| ssh_lsB | List files in a directory on a remote host via SFTP. |
| ssh_statA | Get metadata for a file or directory on a remote host via SFTP. Returns size, permissions (octal), uid/gid, mtime/atime, and type flags (isFile, isDirectory, isSymbolicLink). Use this instead of parsing |
| ssh_mkdirA | Create a directory on a remote host via SFTP. Set |
| ssh_deleteA | Delete a file or empty directory on a remote host via SFTP. Auto-detects the path type and calls the right SFTP op (unlink for files/symlinks, rmdir for empty dirs). Recursive directory delete is intentionally NOT supported -- for that, use ssh_exec with |
| ssh_diagnoseA | Diagnose SSH connectivity issues. Checks ssh-agent status, loaded keys, known_hosts, SSH config, and attempts a test connection. Use this BEFORE attempting SSH operations if you suspect connectivity issues, or AFTER a failed SSH operation to understand why it failed. |
| ssh_agent_ensureA | Ensure ssh-agent is running and reachable. Starts a new agent if needed and sets environment variables so subsequent SSH operations work. Use this FIRST when SSH operations fail with agent-related errors. |
| ssh_key_listA | List all SSH private keys in ~/.ssh/ with their type, fingerprint, and whether they are loaded in the agent. Use this to find which keys are available and which ones need to be loaded. |
| ssh_key_loadA | Load an SSH private key into the running agent. Ensures the agent is running first. Use this after ssh_key_list shows a key that is not loaded. |
| ssh_config_lookupA | Resolve the effective SSH configuration for a host. Shows hostname, user, port, identity files, proxy settings, and all other options from ~/.ssh/config. Use this to understand how SSH will connect to a host. |
| ssh_known_hosts_fixA | Remove a stale host key from known_hosts and re-scan the host to add the current key. Use this when you see 'Host key verification failed' errors, typically after a server has been recreated or reprovisioned. |
| ssh_testA | Quick connectivity test to an SSH host. Reports success/failure with timing and actionable error details. Lighter and faster than ssh_diagnose — use this for a quick check before running operations. |
| ssh_git_checkA | Test Git-over-SSH authentication to a hosting provider (GitHub, GitLab, Bitbucket, etc). Verifies your SSH key is registered and working. Use this when git clone/pull/push fails with SSH errors. |
| ssh_multi_execA | Execute a command on multiple remote hosts in parallel. Returns results per host. Use this instead of calling ssh_exec multiple times — it's faster and shows results side by side. Subject to SSH_MCP_COMMAND_WHITELIST / SSH_MCP_COMMAND_BLACKLIST if configured (policy is checked once before fan-out). |
| ssh_findB | Search for files on a remote host. Wraps the find command with structured parameters so you don't have to construct find syntax manually. |
| ssh_tailA | Read the last N lines of a file on a remote host, optionally filtering by a grep pattern. Use this for reading log files instead of ssh_exec with manual tail/grep commands. |
| ssh_service_statusA | Check the status of a systemd service on a remote host. Returns whether it's active, its PID, uptime, and description. Use this instead of ssh_exec with systemctl. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Every tool has a clearly defined purpose: execution, file transfer, metadata, diagnostics, key/agent management, and specialized helpers like git_check and service_status. Potential overlaps (e.g., ssh_test vs ssh_diagnose) are explicitly differentiated by speed and depth.
All tools share the ssh_ prefix and mostly follow a verb-noun pattern (ssh_read_file, ssh_write_file, ssh_upload, ssh_mkdir). A few deviate slightly, like ssh_known_hosts_fix and ssh_service_status, but the overall convention remains predictable.
21 tools is somewhat high for most servers, but the SSH domain genuinely spans execution, SFTP, key management, agent management, diagnostics, and networking. Each tool appears to justify its inclusion, though a few edge-case utilities feel additive.
The toolset covers the core lifecycle of SSH operations: connection, command exec, file transfer, diagnostics, key loading, and service status checking. Minor gaps exist, such as no remote file move/rename or permission change tool, but these are likely outside the primary scope because ssh_exec can handle them.