← SSH MCP Server

SSH MCP Server 2.8.0

npm · ssh-mcp · current release

11
Tools
1
Resources
2
Templates
0
Prompts

Observation

Observed 2026-09-04T07:51:52.020Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Tools 11

ToolCategoryAnnotationsRisk
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

Resources 1

Resource templates 2

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.