{"name":"io.github.YawLabs/ssh-mcp","slug":"yawlabs-ssh-mcp","title":"SSH MCP Server","description":"MCP server for SSH operations with built-in diagnostics","url":"https://mcp.market/server/yawlabs-ssh-mcp","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":41,"stars":5,"forks":2,"downloads_week":1171,"last_push_at":"2026-09-14T23:29:51.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/YawLabs/ssh-mcp","website":"https://yaw.sh/mcp-servers/ssh-mcp/","version":"0.17.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@yawlabs/ssh-mcp","version":"0.17.0","transport":{"type":"stdio"}}],"tools":[{"name":"ssh_agent_ensure","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_config_lookup","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_delete","description":"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.……","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_diagnose","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_download","description":"Download a file from a remote host to local filesystem via SFTP.…","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_exec","description":"Execute a command on a remote host via SSH. The command is interpreted by the remote login shell \\u2014 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 ch","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_find","description":"Search for files on a remote host. Wraps the find command with structured parameters so you don't have to construct find syntax manually.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_git_check","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_key_list","description":"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. Reports isError only when ~/.ssh exists but could not be read -- an absent or empty ~/.ssh is a successful answer with a ssh-keygen hint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_key_load","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_known_hosts_fix","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_ls","description":"List files in a directory on a remote host via SFTP.…","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_mkdir","description":"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. Unlike the other SFTP tools, the path may be relative.……","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_multi_exec","description":"Execute a command on multiple remote hosts in parallel. Runs at most SSH_MCP_MAX_POOL_SIZE hosts at once (default 100) and works through a longer list as slots free up. `timeout` is per host: it bounds each host's command, not the whole call. Each parallel slot works through its share of the list one host at a time, so with the pool to itself a call can take up to about ceil(hosts / SSH_MCP_MAX_PO","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_read_file","description":"Read a file from a remote host via SFTP.…","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_service_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_stat","description":"Get metadata for a file or directory on a remote host via SFTP. Returns size, permissions (octal), uid/gid, mtime/atime, and the path type. Symlinks are reported as `symlink -> <target kind>`: the type describes the link itself while size/mode/mtime describe its TARGET, and a dangling symlink is reported rather than erroring. Use this instead of parsing `ls -la` output.…","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_tail","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_test","description":"Quick connectivity test to an SSH host. Reports success/failure with timing and actionable error details. Lighter and faster than ssh_diagnose \\u2014 use this for a quick check before running operations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ssh_upload","description":"Upload a local file to a remote host via SFTP.……","write_action":true,"price_micros":0,"input_schema":null},{"name":"ssh_write_file","description":"Write content to a file on a remote host via SFTP. Creates or overwrites the file.……","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":91,"grade":"A","scanned_at":"2026-09-19T18:55:43.395Z","report":{"scannerVersion":"0.1.4","scannedAt":"2026-09-19T18:55:43.319Z","components":{"code":{"score":25,"max":25,"notes":["14 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 5 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@yawlabs/ssh-mcp","version":"0.17.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-14T23:19:55.083Z","repositoryUrl":"git+https://github.com/YawLabs/ssh-mcp.git","weeklyDownloads":1171}],"repo":{"found":true,"owner":"YawLabs","repo":"ssh-mcp","archived":false,"pushedAt":"2026-09-14T23:29:51Z","stars":5,"forks":2,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/260788729?v=4","ownerCreatedAt":"2026-02-11T00:00:33Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/260788729?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":5,"forks":2,"downloadsWeek":1171,"license":"MIT","lastPushAt":"2026-09-14T23:29:51.000Z","score":41}}}},"grade_history":[{"kind":"restore","fromGrade":"F","toGrade":"A","reason":"score 91","createdAt":"2026-09-19T18:55:44.587Z"}],"reviews":[]}