Install ssh-mcp from npm
Install exact version 2.8.0. No verified executable entrypoint is available, so use the package documentation to launch it.
npm install --save-exact ssh-mcp@2.8.0A Model Context Protocol server that allows LLMs to securely execute shell commands on remote Linux and Windows systems via SSH. It supports password and key-based authentication, command timeouts, and sudo elevation for administrative tasks
Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.
Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.
Install exact version 2.8.0. No verified executable entrypoint is available, so use the package documentation to launch it.
npm install --save-exact ssh-mcp@2.8.0| Canonical slug | ssh-mcp-server-ff3d3e45 | Deployment | Local Only |
|---|---|---|---|
| Canonical package | npm:ssh-mcp | Repository | tufantunc/ssh-mcp |
| First published | Aug 12, 2026 | Latest release | Aug 14, 2026 |
| Last security verification | — | Classification confidence | 90% |
| Publication | Draft | Official distribution | Not verified |
| Channel | Identifier | Current version | Versions | Source |
|---|---|---|---|---|
| npm | ssh-mcp | 2.8.0 | 41 | Repository |
| Package | Version | Published / observed | Inventory | Security scan |
|---|---|---|---|---|
| npmssh-mcp | 2.8.0Current | Sep 5, 2026 | 11 toolsSucceeded · 1 resources · 0 prompts | Evidence restricted |
Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.
No public current-version evidence is available yet.
| Tool | Category | Annotations | Risk |
|---|---|---|---|
close-sessionClose a named session. A background session's command is signalled on the host (INT, then TERM, then KILL) before its channel is dropped; an interactive session's shell is ended. The response says so if the command could not be signalled or had not stopped in time.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Session name to close"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"name"
]
}Annotations{
"destructiveHint": true
} | — | Destructive | — |
list-connectionsList all configured SSH profiles and their connection status. Use this to discover available hosts before running commands.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}Annotations{
"readOnlyHint": true
} | — | Read only | — |
list-sessionsList active sessions for a given SSH profile.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"profile": {
"description": "Profile name (uses default if omitted)",
"type": "string"
}
}
}Annotations{
"readOnlyHint": true
} | — | Read only | — |
open-sessionOpen a named session on a remote host. Use type="interactive" for stateful shell (CWD/env persists between commands) or type="background" for long-running processes.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Session name (alphanumeric, dash, underscore, max 64 chars)"
},
"type": {
"default": "interactive",
"description": "Session type",
"type": "string",
"enum": [
"interactive",
"background"
]
},
"command": {
"description": "Command for background sessions",
"type": "string"
},
"profile": {
"description": "Profile name (uses default if omitted)",
"type": "string"
}
},
"required": [
"name"
]
} | — | — | |
privileged-commandExecute a command with sudo elevation. Goes through the approval gate; approvalPolicy on the profile decides whether that is a prompt, an automatic allow, or a refusal. The sudo password is piped via stdin (never visible in process list).Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "Command to execute with sudo"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"command"
]
}Annotations{
"destructiveHint": true
} | — | Destructive | — |
read-commandExecute a READ-ONLY command from an allowlist (ls, cat, grep, find, stat, df, etc.). This tool does NOT modify the system. Prefer this tool for all read operations.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "Read-only shell command (must be in the allowlist)"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"command"
]
}Annotations{
"readOnlyHint": true
} | — | Read only | — |
read-session-outputRead recent output from a background session (e.g., tail -f logs).Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Background session name"
},
"lines": {
"default": 50,
"description": "Number of recent lines to read",
"type": "number"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"name"
]
}Annotations{
"readOnlyHint": true
} | — | Read only | — |
run-commandExecute an arbitrary shell command on the remote server. May modify the system. Commands classified destructive or privileged go through the approval gate; approvalPolicy on the profile decides whether that is a prompt, an automatic allow, or a refusal.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "Shell command to execute"
},
"profile": {
"description": "Profile name",
"type": "string"
},
"session": {
"description": "Run in an existing interactive session (stateful)",
"type": "string"
},
"tty": {
"description": "Allocate a pseudo-terminal",
"type": "boolean"
}
},
"required": [
"command"
]
}Annotations{
"destructiveHint": true
} | — | Destructive | — |
sftp-downloadDownload a file from the remote server via SFTP.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"remotePath": {
"type": "string",
"description": "Remote file path to download"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"remotePath"
]
}Annotations{
"readOnlyHint": true
} | — | Read only | — |
sftp-uploadUpload a file to the remote server via SFTP (secure file transfer, not shell-based).Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"remotePath": {
"type": "string",
"description": "Remote file path"
},
"content": {
"type": "string",
"description": "File content to upload"
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"remotePath",
"content"
]
}Annotations{
"destructiveHint": true
} | — | Destructive | — |
signal-processSend a signal (INT, TERM, KILL) to a remote process by PID.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"pid": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Process ID to signal (positive integer)"
},
"signal": {
"default": "TERM",
"description": "Signal to send",
"type": "string",
"enum": [
"INT",
"TERM",
"KILL"
]
},
"profile": {
"description": "Profile name",
"type": "string"
}
},
"required": [
"pid"
]
}Annotations{
"destructiveHint": true
} | — | Destructive | — |
ssh://connectionsList all SSH profiles and their connection status
ssh://connections/{profile}Get details for a specific SSH profile
ssh://sessions/{profile}/{session}Get metadata for a specific session
| Endpoint | Transport | Authentication | Health | Observed |
|---|---|---|---|---|
| No verified remote endpoint is linked. | ||||
Install the selected package version with: npm install --save-exact ssh-mcp@2.8.0
SSH MCP Server exposed 11 tools during independent protocol observation, including close-session, list-connections, list-sessions, open-session, privileged-command, read-command, read-session-output, run-command, and others.
The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.
Curated product and capability guides containing this catalog record.