io.github.YawLabs/ssh-mcp
NPM · @YAWLABS/SSH-MCP · SCANNED AUG 7
MCP server for SSH operations with built-in diagnostics
Available components
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 →
Supply Chain Security87
- No malware found by supply-chain analysis.Pass
- Known CVEs were checked across the 102 of 106 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Dependency health was assessed across the 102 of 106 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 16 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3059 tokens (~145/item across 21 items; 21 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 Management40
- Stability observed for 12 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
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @yawlabs/ssh-mcp
claude mcp add yawlabs-ssh-mcp -- npx -y @yawlabs/ssh-mcp
codex mcp add yawlabs-ssh-mcp -- npx -y @yawlabs/ssh-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yawlabs-ssh-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@yawlabs/ssh-mcp"
],
"enabled": true
}
}
} openclaw mcp add yawlabs-ssh-mcp --command npx --arg -y --arg @yawlabs/ssh-mcp
mcp_servers:
yawlabs-ssh-mcp:
command: "npx"
args: ["-y", "@yawlabs/ssh-mcp"] {
"mcpServers": {
"yawlabs-ssh-mcp": {
"command": "npx",
"args": [
"-y",
"@yawlabs/ssh-mcp"
]
}
}
} 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.
- 7 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 5 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +63
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- Security disclosure: unverified → fail ▼ functional
- Schema quality: unverified → excellent ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.23 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Licence: MIT functional
- 1 Aug 26 −14
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 31 Jul 26 −6
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −18
- Malware scan: pass → unverified ▼ security
- 27 Jul 26 38
First indexed and scored.
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 7 Aug 2026 · Analysed npm/@yawlabs/[email protected]
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Dependencies 102 packages
| Packages resolved | 102 |
|---|---|
| Deprecated | 97 |
| Stale | 34 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
ssh_agent_ensure ~46
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ssh_config_lookup ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
No output schema declared.
No examples provided.
ssh_delete ~204
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 `rm -rf` explicitly so the destructive intent is visible in the tool trace.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path of the file or empty directory to delete. Must start with /. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_diagnose ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| port | integer | – | SSH port (default: 22) |
No output schema declared.
No examples provided.
ssh_download ~155
Download a file from a remote host to local filesystem via SFTP.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| localPath | string | yes | Local path to save the downloaded file |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| remotePath | string | yes | Absolute path to the remote file. Must start with /. |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_exec ~292
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 `env` to set environment variables for this call without modifying the command string. Subject to SSH_MCP_COMMAND_WHITELIST / SSH_MCP_COMMAND_BLACKLIST if configured (policy is checked against the env-prefixed command).
| Name | Type | Req | Description |
|---|---|---|---|
| command | string | yes | Shell command to execute on the remote host (interpreted by the remote login shell) |
| env | object | – | Environment variables to set for this command. Injected as a `KEY='value' ...` prefix; works on any sshd regardless of AcceptEnv config. Values are POSIX-single-quoted, so any byte is safe. |
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| timeout | integer | – | Command timeout in milliseconds (default: 30000) |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_find ~292
Search for files on a remote host. Wraps the find command with structured parameters so you don't have to construct find syntax manually.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| maxdepth | number | – | Maximum directory depth to search |
| maxsize | string | – | Maximum file size (e.g. '10M', '500k') |
| minsize | string | – | Minimum file size (e.g. '1M', '100k') |
| name | string | – | Filename pattern with wildcards (e.g. '*.log', 'config.*') |
| newer | string | – | Reference file path -- find matches files modified more recently than this file |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Directory to search in (e.g. /var/log, /home/user) |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| timeout | integer | – | Command timeout in milliseconds (default: 30000) |
| type | string | – | File type: f=file, d=directory, l=symlink |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_git_check ~89
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | – | Git hosting hostname (default: "github.com") |
| user | string | – | SSH user for the git host (default: "git") |
No output schema declared.
No examples provided.
ssh_key_list ~49
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ssh_key_load ~67
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.
| Name | Type | Req | Description |
|---|---|---|---|
| keyPath | string | yes | Path to the SSH private key to load (e.g. ~/.ssh/id_ed25519) |
No output schema declared.
No examples provided.
ssh_known_hosts_fix ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| port | integer | – | SSH port (default: 22) |
No output schema declared.
No examples provided.
ssh_ls ~138
List files in a directory on a remote host via SFTP.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path to the remote directory. Must start with /. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_mkdir ~189
Create a directory on a remote host via SFTP. Set `recursive: true` to create parent directories as needed (like `mkdir -p`). Existing intermediate dirs are tolerated; an existing leaf path is still an error.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path of the directory to create |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| recursive | boolean | – | Create parent directories as needed (default: false). Like `mkdir -p`. |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_multi_exec ~204
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).
| Name | Type | Req | Description |
|---|---|---|---|
| command | string | yes | Shell command to execute on all hosts |
| hosts | array | yes | List of SSH hostnames or IPs |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| timeout | integer | – | Command timeout in milliseconds (default: 30000) |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_read_file ~137
Read a file from a remote host via SFTP.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path to the remote file. Must start with /. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_service_status ~182
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| service | string | yes | Systemd service name (e.g. nginx, sshd, docker) |
| timeout | integer | – | Command timeout in milliseconds (default: 30000) |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_stat ~187
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 `ls -la` output.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path to the remote file or directory. Must start with /. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_tail ~215
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.
| Name | Type | Req | Description |
|---|---|---|---|
| grep | string | – | Case-insensitive pattern to filter lines |
| host | string | yes | SSH hostname or IP address |
| lines | integer | – | Number of lines to read from the end (default: 100). Must be a positive integer. |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path to the file to tail |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| timeout | integer | – | Command timeout in milliseconds (default: 30000) |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_test ~73
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| port | integer | – | SSH port (default: 22) |
No output schema declared.
No examples provided.
ssh_upload ~153
Upload a local file to a remote host via SFTP.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | SSH hostname or IP address |
| localPath | string | yes | Path to the local file to upload |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| remotePath | string | yes | Absolute path on the remote host. Must start with /. |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.
ssh_write_file ~157
Write content to a file on a remote host via SFTP. Creates or overwrites the file.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | File content to write |
| host | string | yes | SSH hostname or IP address |
| password | string | – | SSH password. STRONGLY prefer key-based auth (privateKeyPath or ssh-agent). Passwords pass through MCP protocol frames as plaintext and may be logged by the transport or host process. |
| path | string | yes | Absolute path to the remote file. Must start with /. |
| port | integer | – | SSH port (default: 22) |
| privateKeyPath | string | – | Path to SSH private key |
| username | string | – | SSH username (default: current user) |
No output schema declared.
No examples provided.