Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.bvisible/mcp-ssh-manager

NPM · MCP-SSH-MANAGER · SCANNED SEP 21

SSH server management for agents, with per-server read-only and allowlist security modes

Available components

+3 this week 90 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 36 of 104 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to bvisible/mcp-ssh-manager). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 23 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6024 tokens (~162/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "ssh_execute" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.bvisible/mcp-ssh-manager server?

io.github.bvisible/mcp-ssh-manager runs locally as an npm package, launched with npx -y mcp-ssh-manager. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mcp-ssh-manager

# add to Claude Code
claude mcp add bvisible-mcp-ssh-manager -- npx -y mcp-ssh-manager
// .cursor/mcp.json
{
  "mcpServers": {
    "bvisible-mcp-ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "bvisible-mcp-ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add bvisible-mcp-ssh-manager -- npx -y mcp-ssh-manager
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bvisible-mcp-ssh-manager": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-ssh-manager"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add bvisible-mcp-ssh-manager --command npx --arg -y --arg mcp-ssh-manager
# ~/.hermes/config.yaml
mcp_servers:
  bvisible-mcp-ssh-manager:
    command: "npx"
    args: ["-y", "mcp-ssh-manager"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "bvisible-mcp-ssh-manager": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "mcp-ssh-manager"
      ]
    }
  }
}
# add to Vellum
assistant mcp add bvisible-mcp-ssh-manager -t stdio -c npx -a -y mcp-ssh-manager
// mcp.json
{
  "mcpServers": {
    "bvisible-mcp-ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 5 Sept 26 +4
    • Stability: unverified → 0.27 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed npm/mcp-ssh-manager@3.8.5

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo bvisible/mcp-ssh-manager
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/bvisible/mcp-ssh-manager/.github/workflows/release.yml@refs/heads/main
Rekor log index 2626346854
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:0271c45792552d0f3d49c7002f19bff547a0325a7493323d3a103964e3f01fea38249dda271690050dc22e36465e36898a0fe0676300453a92aa5052b

Background: How many MCP packages publish verified provenance →

Dependencies 104 packages
Packages resolved 104
Stale 36
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 37 exposed · ~6,024 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ssh_alert_setup ~205

Configures and evaluates CPU, memory, and disk usage alert thresholds for a remote server. The action parameter selects: set writes the threshold config to /etc/ssh-manager-alerts.json on the remote host (mutating, may need write access to /etc, and is blocked on readonly servers); get reads back that config; check reads current metrics and compares them to stored thresholds. get and check are read-only. enabled defaults to true; check errors if no config exists yet.

NameTypeReqDescription
actionstringyesAction: set thresholds, get config, or check current metrics against thresholds
cpuThresholdnumberCPU usage threshold percentage (e.g., 80)
diskThresholdnumberDisk usage threshold percentage (e.g., 85)
enabledbooleanEnable or disable alerts (default: true)
memoryThresholdnumberMemory usage threshold percentage (e.g., 90)
serverstringyesServer name

No output schema declared.

No examples provided.

ssh_alias ~125

Manages local name aliases that let you reference a configured server by a shorter or alternative name. The action parameter selects add, remove, or list. add creates an alias pointing to an existing server and requires both alias and server; remove deletes an alias and requires alias; list shows all aliases (read-only). add and remove persist the alias mapping locally. The target server must already exist for add to succeed.

NameTypeReqDescription
actionstringyesAction to perform
aliasstringAlias name (for add/remove)
serverstringServer name (for add)

No output schema declared.

No examples provided.

ssh_backup_create ~274

Creates a database or file backup on the remote server over SSH, writing a compressed archive plus a JSON metadata file into backupDir. Supports mysql, postgresql, mongodb, and files (full is not yet implemented and errors). Database types require database; files requires paths. After writing it prunes backups older than retention days (default 7); compress defaults to true. Runs pre-backup and post-backup hooks.

NameTypeReqDescription
backupDirstringBackup directory (default: /var/backups/ssh-manager)
compressbooleanCompress backup (default: true)
databasestringDatabase name (required for db types)
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
excludearrayPatterns to exclude from backup
namestringyesBackup name (e.g., production, app-data)
pathsarrayPaths to backup (for files type)
retentionnumberRetention period in days (default: 7)
serverstringyesServer name
typestringyesBackup type: mysql, postgresql, mongodb, files, or full

No output schema declared.

No examples provided.

ssh_backup_list ~127

Lists existing backups found in backupDir on the remote server, returning each backup id, type, database or paths, size, compression, retention, status, and creation time parsed from stored metadata. Read-only: it inspects the filesystem and mutates nothing. Optional type filters results to mysql, postgresql, mongodb, files, or full. backupDir defaults to the configured backup directory.

NameTypeReqDescription
backupDirstringBackup directory (default: /var/backups/ssh-manager)
serverstringyesServer name
typestringFilter by backup type

No output schema declared.

No examples provided.

ssh_backup_restore ~215

Restores a previously created backup identified by backupId, reading its metadata to pick the engine. This is destructive and overwrites the target: PostgreSQL runs pg_restore with --clean --if-exists which DROPs existing objects, MongoDB runs mongorestore --drop, and MySQL pipes the dump into the live database replacing matching objects. Supports mysql, postgresql, mongodb, and files. Runs pre-restore and post-restore hooks.

NameTypeReqDescription
backupDirstringBackup directory (default: /var/backups/ssh-manager)
backupIdstringyesBackup ID to restore
databasestringTarget database name (for db restores)
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
serverstringyesServer name
targetPathstringTarget path for files restore (default: /)

No output schema declared.

No examples provided.

ssh_backup_schedule ~193

Schedules a recurring backup on the remote server by writing an executable bash script to /usr/local/bin/ssh-manager-backup-NAME.sh and installing a crontab entry for the given cron expression. Mutates the remote filesystem and crontab, and typically needs root to write that path. Supports mysql, postgresql, mongodb, and files; the generated script also deletes backups older than retention days (default 7).

NameTypeReqDescription
databasestringDatabase name (for db types)
namestringyesBackup name
pathsarrayPaths to backup (for files type)
retentionnumberRetention period in days (default: 7)
schedulestringyesCron schedule (e.g., "0 2 * * *" for daily at 2 AM)
serverstringyesServer name
typestringyesBackup type

No output schema declared.

No examples provided.

ssh_command_alias ~133

Manages local shorthand aliases that map a short name to a full command string, stored in local config with no remote execution or side effects. The action selects behavior: add (requires both alias and command), remove (requires alias), list to show all aliases tagged as profile or custom, or suggest to return existing aliases matching a search term passed in the command field. Adding an existing alias overwrites it.

NameTypeReqDescription
actionstringyesAction to perform
aliasstringAlias name (for add/remove)
commandstringCommand to alias (for add) or search term (for suggest)

No output schema declared.

No examples provided.

ssh_connection_status ~110

Inspects and manages the pooled SSH connections held by this server process; affects only local in-memory connections, never remote state. The action parameter selects: status lists active connections with age and keepalive (read-only); reconnect closes then reopens one connection; disconnect closes one connection; cleanup drops aged-out and dead connections. The server parameter is required for reconnect and disconnect and ignored otherwise.

NameTypeReqDescription
actionstringyesAction to perform
serverstringServer name (for reconnect/disconnect)

No output schema declared.

No examples provided.

ssh_db_dump ~221

Dumps a database to a file on the remote server over SSH; it reads data only and does not modify the database. Supports mysql (using --single-transaction --routines --triggers), postgresql (custom format with --clean --if-exists, restorable via pg_restore), and mongodb. compress defaults to true and gzips the output. The optional tables list applies to MySQL and PostgreSQL only and is ignored for MongoDB.

NameTypeReqDescription
compressbooleanCompress output with gzip (default: true)
databasestringyesDatabase name
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
outputFilestringyesOutput file path (will be created on remote server)
serverstringyesServer name
tablesarraySpecific tables to dump (MySQL/PostgreSQL only)
typestringyesDatabase type

No output schema declared.

No examples provided.

ssh_db_import ~208

Imports a dump file into a target database on the remote server and is destructive to existing data. PostgreSQL uses pg_restore --clean --if-exists which DROPs existing objects before loading; MongoDB uses mongorestore with --drop controlled by the drop flag (default true); MySQL pipes the file into the live database, replacing objects defined in it. Supports mysql, postgresql, mongodb. Compressed .gz inputs are decompressed automatically.

NameTypeReqDescription
databasestringyesTarget database name
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
dropbooleanDrop existing collections/tables before import (MongoDB only, default: true)
inputFilestringyesInput file path (on remote server)
serverstringyesServer name
typestringyesDatabase type

No output schema declared.

No examples provided.

ssh_db_list ~167

Lists database objects on the remote server for the given engine without modifying anything. When database is provided it lists the tables (SQL) or collections (MongoDB) of that database; when omitted it lists all databases with common system databases filtered out. Supports mysql, postgresql, and mongodb. Returns the items and a count. Read-only and safe to call repeatedly.

NameTypeReqDescription
databasestringDatabase name (if provided, lists tables/collections; if omitted, lists databases)
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
serverstringyesServer name
typestringyesDatabase type

No output schema declared.

No examples provided.

ssh_db_query ~188

Runs a read-only query against a remote database. For mysql and postgresql it is strictly limited to SELECT: the query must begin with SELECT and any insert, update, delete, drop, create, alter, truncate, grant, revoke, or exec keyword is rejected before execution. For mongodb it runs a find() and requires the collection parameter. Returns the raw command output as text.

NameTypeReqDescription
collectionstringCollection name (MongoDB only)
databasestringyesDatabase name
dbHoststringDatabase host (default: localhost)
dbPasswordstringDatabase password
dbPortnumberDatabase port
dbUserstringDatabase user
querystringyesSQL query (SELECT only) or MongoDB find query
serverstringyesServer name
typestringyesDatabase type

No output schema declared.

No examples provided.

ssh_deploy ~147

Deploys a list of local files to remote paths on the named server, uploading each to a temporary location first and then moving it into place. Mutates remote state. By default it backs up any existing target file before overwriting; backup can be disabled per call. Options can set owner and permissions, supply a sudo password, and name a single service to restart afterward. Detects sensible owner and permission defaults from the remote path. Runs pre and post deploy hooks. Blocked entirely on servers in readonly or restricted security mode.

NameTypeReqDescription
filesarrayyesArray of files to deploy
optionsobjectDeployment options
serverstringyesServer name or alias

No output schema declared.

No examples provided.

ssh_download ~124

Downloads one remote file from the named server to a local destination path over SFTP, overwriting any existing local file at that path. Affects only the local filesystem and is read-only on the remote side, so it stays allowed even on servers in readonly or restricted security mode. Reads the remote file using the configured SSH user, which must have permission to read it. Handles single files only; use ssh_sync for directories.

NameTypeReqDescription
localPathstringyesLocal destination path
remotePathstringyesRemote file path
serverstringyesServer name

No output schema declared.

No examples provided.

ssh_execute ~180

Runs a shell command over SSH on a named configured server and returns stdout, stderr, and exit code. Mutates remote state depending on the command; not read-only. Expands command aliases before running. Uses the cwd parameter or, if omitted, the server configured default directory; adapts syntax for Linux versus Windows PowerShell targets. Timeout defaults to 120000 ms and is capped at 300000 ms. Under readonly mode destructive commands like rm or dd are refused; under restricted mode the command must match allow patterns. Output is truncated when very large.

NameTypeReqDescription
commandstringyesCommand to execute
cwdstringWorking directory (optional, uses default if configured)
serverstringyesServer name from configuration
timeoutnumberCommand timeout in milliseconds (default: 120000, max: 300000)

No output schema declared.

No examples provided.

ssh_execute_group ~223

Runs one command on every server belonging to the named group and returns a per-server success or failure report. Members come from the groups defined with ssh_group_manage plus every server whose configuration carries a matching group field, so a group can exist through the config alone. Mutates remote state on each member and is not idempotent. Best-effort: the security policy of each server is evaluated independently, so readonly or restricted members are reported as failed without aborting the rest unless stopOnError is set. Strategy may be parallel, sequential, or rolling (delay applies between servers). Per-server timeout is 30000 ms; cwd defaults to the default_dir of each server.

NameTypeReqDescription
commandstringyesCommand to execute
cwdstringWorking directory
delaynumberDelay between servers in ms (for rolling)
groupstringyesGroup name (e.g., "production", "staging", "all")
stopOnErrorbooleanStop execution on first error
strategystringExecution strategy

No output schema declared.

No examples provided.

ssh_execute_sudo ~186

Runs a command with elevated privileges via sudo on the named server and returns the exit code and output. Prepends sudo when absent. If a password is given, or a sudo password is configured for the server, it is piped to sudo -S and masked in the returned output. Mutates remote state and can be destructive. Honors the cwd parameter or the server default directory and adapts to Linux or Windows. Timeout defaults to 30000 ms. Blocked entirely in readonly mode; in restricted mode the command must satisfy the allow and deny patterns.

NameTypeReqDescription
commandstringyesCommand to execute with sudo
cwdstringWorking directory
passwordstringSudo password (will be masked in output)
serverstringyesServer name or alias
timeoutnumberCommand timeout in milliseconds (default: 30000)

No output schema declared.

No examples provided.

ssh_group_manage ~205

Creates, updates, deletes, and inspects named server groups used by ssh_execute_group, persisting changes to local configuration only with no remote side effects. The action selects the operation: create, update, delete, add-servers, remove-servers, or list. Every action except list requires name; add-servers and remove-servers also require a non-empty servers array. list is read-only and also reports the groups derived from the per-server group field of the SSH configuration, which are read-only here and change only by editing that configuration. Optional strategy, delay, and stopOnError set default group execution behavior.

NameTypeReqDescription
actionstringyesAction to perform
delaynumberDelay between servers in ms
descriptionstringGroup description
namestringGroup name
serversarrayServer names
stopOnErrorbooleanStop on error flag
strategystringExecution strategy

No output schema declared.

No examples provided.

ssh_health_check ~117

Runs a comprehensive read-only health check on the named server by executing diagnostic shell commands over SSH, then returns parsed JSON with overall status, CPU, memory, disk usage, and uptime. It only reads metrics and changes nothing on the remote host. Set detailed to true to additionally include load average and network metrics; it defaults to false. Critical CPU, memory, or disk conditions are surfaced in a critical_issues list.

NameTypeReqDescription
detailedbooleanInclude detailed metrics (network, load average)
serverstringyesServer name

No output schema declared.

No examples provided.

ssh_history ~155

Returns the in-memory log of SSH commands previously run through this server process during the current session, formatted with timestamps, server, duration, and success status. Purely local and read-only: it opens no SSH connection and does not persist across restarts. Optional filters narrow the results by server name, by success or failure, and by a search substring in the command text; limit defaults to 20 most recent entries. Does not expose command output, only the commands and their outcomes.

NameTypeReqDescription
limitnumberNumber of commands to show (default: 20)
searchstringSearch in commands
serverstringFilter by server name
successbooleanFilter by success/failure

No output schema declared.

No examples provided.

ssh_hooks ~115

Manages automation hooks that fire around SSH operations such as pre-deploy, toggling them on or off in local configuration only with no immediate remote action. The action selects behavior: list shows each hook with its enabled state, description, and action count; enable and disable flip a hook and both require the hook name; status summarizes which hooks are currently enabled versus disabled. Toggling persists and affects later operations.

NameTypeReqDescription
actionstringyesAction to perform
hookstringHook name (for enable/disable)

No output schema declared.

No examples provided.

ssh_key_manage ~135

Manages SSH host key fingerprints in your local known_hosts file for the named server. The action parameter selects: verify, check, and list are read-only comparisons or listings; accept adds or updates the host key in known_hosts; remove deletes it. accept and remove mutate local state and are blocked on servers configured as readonly. server is required for every action except list. autoAccept defaults to false and should be used with caution.

NameTypeReqDescription
actionstringyesAction to perform
autoAcceptbooleanAutomatically accept new keys (use with caution)
serverstringServer name (required for most actions)

No output schema declared.

No examples provided.

ssh_list_servers ~103

Lists all SSH servers defined in the loaded configuration, returning for each the name, host, user, port, authentication type (password or key), default directory, group, and description. Read-only and local: it reads configuration only and opens no SSH connections. Deliberately omits secrets, so no passwords, key paths, passphrases, or sudo passwords are returned. Takes no parameters. Useful as a first call to discover which server names other tools accept.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ssh_monitor ~157

Collects a read-only snapshot of system resources on the named Linux server by running inspection commands such as top, free, df, ss, and ps. The type parameter selects the view and defaults to overview; other values are cpu, memory, disk, network, and process. Does not change remote state and needs no sudo. The interval and duration parameters are accepted for continuous monitoring intent but a single snapshot is gathered. Targets Linux tooling, so output may be empty on Windows hosts.

NameTypeReqDescription
durationnumberDuration in seconds for continuous monitoring
intervalnumberUpdate interval in seconds for continuous monitoring
serverstringyesServer name from configuration
typestringType of monitoring (default: overview)

No output schema declared.

No examples provided.

ssh_process_manager ~216

Lists, inspects, or terminates processes on a remote server over SSH. The action parameter selects: list returns top processes (read-only), info returns details for one process (read-only), and kill sends a signal to terminate a process and mutates remote state. pid is required for kill and info. kill is blocked on servers configured as readonly. signal defaults to TERM, sortBy defaults to cpu, and limit defaults to 20; filter narrows the list by name or command.

NameTypeReqDescription
actionstringyesAction: list processes, kill process, or get process info
filterstringFilter processes by name/command
limitnumberNumber of processes to return (default: 20)
pidnumberProcess ID (required for kill and info actions)
serverstringyesServer name
signalstringSignal to send when killing (default: TERM)
sortBystringSort processes by CPU or memory (default: cpu)

No output schema declared.

No examples provided.

ssh_profile ~106

Manages SSH Manager profiles that bundle command aliases and hooks for different project types, affecting local configuration only with no remote side effects. The action selects behavior: list shows available profiles and the active one, current shows the active profile details, and switch activates a named profile and requires the profile argument. A successful switch reports that Claude Code must be restarted before the new profile takes effect.

NameTypeReqDescription
actionstringyesAction to perform
profilestringProfile name (for switch)

No output schema declared.

No examples provided.

ssh_service_status ~123

Checks the running state of the named system services on a remote server by querying each one over SSH, returning JSON per service plus running and stopped counts and an aggregate health rating. Read-only: it inspects status without starting, stopping, or restarting anything. The services array parameter is required and lists the service names to check, for example nginx, mysql, or docker; common names are resolved to their actual unit names automatically.

NameTypeReqDescription
serverstringyesServer name
servicesarrayyesService names to check (e.g., nginx, mysql, docker)

No output schema declared.

No examples provided.

ssh_session_close ~111

Terminates an open SSH session given its session ID, writing exit to the remote shell, ending it, and discarding its in-memory history and context; the session ID becomes unusable afterward. Destructive to session state but does not delete remote files. Passing the literal value all closes every active session at once, ignoring individual close errors. It does not drop the pooled underlying connection, only the interactive shell.

NameTypeReqDescription
sessionstringyesSession ID to close (or "all" to close all sessions)

No output schema declared.

No examples provided.

ssh_session_list ~100

Lists currently active SSH sessions with their ID, server, state, working directory, command count, age, idle time, and any defined variables. Read-only: it inspects in-memory session state and changes nothing on remote hosts or local config. The optional server argument is a case-insensitive substring filter on server name; omit it to list every active session. Closed sessions are excluded from the results.

NameTypeReqDescription
serverstringFilter by server name

No output schema declared.

No examples provided.

ssh_session_send ~144

Runs one command inside an already-open session identified by its session ID, reusing the persisted working directory, environment, and history of that shell. Mutates remote state like any shell command and is not idempotent; cd and export update the saved context for subsequent calls. Commands run through a bash-style shell (Unix-oriented). The security policy of the underlying server is enforced, so readonly or restricted servers may refuse. Default timeout is 30000 ms.

NameTypeReqDescription
commandstringyesCommand to execute in the session
sessionstringyesSession ID from ssh_session_start
timeoutnumberCommand timeout in milliseconds (default: 30000)

No output schema declared.

No examples provided.

ssh_session_start ~119

Opens a new persistent interactive shell on the named configured server and returns a generated session ID. Stateful and side-effecting: it establishes (or reuses pooled) SSH connection and keeps an open shell that preserves working directory, environment, and command history across later ssh_session_send calls, unlike one-shot ssh_execute. The optional name is only a human label. The session stays open and consumes a remote shell until ssh_session_close is called.

NameTypeReqDescription
namestringOptional session name for identification
serverstringyesServer name from configuration

No output schema declared.

No examples provided.

ssh_sync ~397

Synchronizes files or directories between local and remote using rsync over SSH on the named server. Each of source and destination must carry a local: or remote: prefix and one side must be local and the other remote; with no prefix it assumes a push from local to remote. On Windows MCP hosts, provide native Windows local paths such as C:\project or .\project; the tool converts drive-letter and UNC paths to MSYS2 format before spawning rsync. Do not pre-convert a local path to /c/project because Node performs local filesystem checks using Windows path semantics. Mutates the destination. Setting delete true removes destination files absent from source, which is destructive; dryRun true previews without changing anything. Compression is on by default. Password authentication requires sshpass installed locally. Blocked on readonly or restricted servers. Timeout defaults to 30000 ms.

NameTypeReqDescription
checksumbooleanUse checksum instead of timestamp for comparison
compressbooleanCompress during transfer
deletebooleanDelete files in destination not in source
destinationstringyesDestination path with a "local:" or "remote:" prefix. On Windows, use a native local path such as "local:C:\output" or "local:.\output"; do not pre-convert it to MSYS2 /c/... syntax.
dryRunbooleanPerform dry run without actual changes
excludearrayPatterns to exclude from sync
serverstringyesServer name from configuration
sourcestringyesSource path with a "local:" or "remote:" prefix. On Windows, use a native local path such as "local:C:\project" or "local:.\project"; do not pre-convert it to MSYS2 /c/... syntax.
timeoutnumberTimeout in milliseconds (default: 30000)
verbosebooleanShow detailed progress

No output schema declared.

No examples provided.

ssh_tail ~174

Reads the tail of a remote log file on the named server, optionally filtered by a grep pattern. Read-only; it does not modify remote state. Behavior depends on follow, which defaults to true: in follow mode it starts a streaming tail whose output is written to the server process stderr rather than returned, and the response only reports a session note, so to capture content directly set follow to false to get the last N lines back. The lines parameter defaults to 10.

NameTypeReqDescription
filestringyesPath to the log file to tail
followbooleanFollow file for new content (default: true)
grepstringFilter lines with grep pattern
linesnumberNumber of lines to show initially (default: 10)
serverstringyesServer name from configuration

No output schema declared.

No examples provided.

ssh_tunnel_close ~110

Tears down active SSH tunnels created earlier, freeing the bound local ports; this affects only local tunnel state, not the remote host. Exactly one of tunnelId or server must be supplied: tunnelId closes that single tunnel, while server closes every tunnel for the named server and reports how many were closed. Supplying neither raises an error. Closing is final and cannot be undone.

NameTypeReqDescription
serverstringClose all tunnels for this server
tunnelIdstringTunnel ID to close

No output schema declared.

No examples provided.

ssh_tunnel_create ~180

Opens a new SSH connection to the named server and starts a port-forwarding or SOCKS proxy tunnel that keeps running until closed. The type parameter selects local forward, remote forward, or dynamic SOCKS5 proxy. localPort is always required; remoteHost and remotePort are required for local and remote types but ignored for dynamic. localHost defaults to 127.0.0.1. Returns a tunnel ID used later to close it.

NameTypeReqDescription
localHoststringLocal host (default: 127.0.0.1)
localPortnumberyesLocal port
remoteHoststringRemote host (not needed for dynamic)
remotePortnumberRemote port (not needed for dynamic)
serverstringyesServer name or alias
typestringyesTunnel type

No output schema declared.

No examples provided.

ssh_tunnel_list ~97

Lists currently active SSH tunnels tracked by this process, showing each tunnel ID, server, type, state, local and remote endpoints, active and total connection counts, bytes transferred, error count, and timestamps. Read-only: it does not create, modify, or close anything. The optional server parameter filters results to one server; omit it to list every active tunnel across all servers.

NameTypeReqDescription
serverstringFilter by server name

No output schema declared.

No examples provided.

ssh_upload ~134

Uploads one local file to a remote destination path over SFTP on the named server, overwriting any existing remote file at that path. Mutates remote state and is not idempotent beyond replacing the target. Creates no backup. Requires the local file to exist. Does not use sudo, so the remote path must be writable by the configured SSH user. This tool is blocked entirely on servers set to readonly or restricted security mode. For directory trees use ssh_sync instead.

NameTypeReqDescription
localPathstringyesLocal file path
remotePathstringyesRemote destination path
serverstringyesServer name

No output schema declared.

No examples provided.

Common questions

What is the io.github.bvisible/mcp-ssh-manager server?

io.github.bvisible/mcp-ssh-manager is listed in the public MCP registry as io.github.bvisible/mcp-ssh-manager. SSH server management for agents, with per-server read-only and allowlist security modes. This page covers its npm package (mcp-ssh-manager).

Is the io.github.bvisible/mcp-ssh-manager server safe to use?

io.github.bvisible/mcp-ssh-manager scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.bvisible/mcp-ssh-manager server expose?

io.github.bvisible/mcp-ssh-manager exposes 37 tools: ssh_execute, ssh_upload, ssh_download, ssh_sync, ssh_tail, and 32 more. Their descriptions and schemas cost roughly 6,024 tokens of context every time the server is loaded.

Is the io.github.bvisible/mcp-ssh-manager server still maintained?

io.github.bvisible/mcp-ssh-manager is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.bvisible/mcp-ssh-manager server under?

io.github.bvisible/mcp-ssh-manager declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.