2.8.0npm · ssh-mcp · current release
Observed 2026-09-04T07:51:52.020Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}| 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 | — |
List all SSH profiles and their connection status
{
"resource_key": "ssh://connections",
"uri": "ssh://connections",
"name": "connections",
"description": "List all SSH profiles and their connection status",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "e4ad9cf4c0c3ad598f3324481e2e2651c3469b98bde351c7035c5b1fe75e02d0"
}Get details for a specific SSH profile
{
"template_key": "ssh://connections/{profile}",
"uri_template": "ssh://connections/{profile}",
"name": "profile",
"description": "Get details for a specific SSH profile",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "cc5fa00f7066d4a0f5fa7dab6f2d7d3238f366d926337b91322c1ad512a00d11"
}Get metadata for a specific session
{
"template_key": "ssh://sessions/{profile}/{session}",
"uri_template": "ssh://sessions/{profile}/{session}",
"name": "session",
"description": "Get metadata for a specific session",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "c19b33409062b0ebd4aeb2ddf6bcb691f490cb7aa01f3b835b4d15146b90e79c"
}