115 lines
3.9 KiB
JSON
115 lines
3.9 KiB
JSON
{
|
|
"id": "ssh",
|
|
"name": "SSH Remote Access",
|
|
"type": "mcp_local",
|
|
"launch_command": "python3 ssh_mcp_server.py",
|
|
"transport": "stdio",
|
|
"requires": [
|
|
"PYTHON"
|
|
],
|
|
"dependencies": [
|
|
"paramiko>=3.4"
|
|
],
|
|
"env": [
|
|
{
|
|
"name": "SSH_MCP_POOL_TTL",
|
|
"label": "Connection pool TTL (seconds)",
|
|
"description": "How long an idle SSH connection stays open before being closed. Default: 300 (5 min).",
|
|
"required": false,
|
|
"secret": false,
|
|
"default": "300",
|
|
"example": "300"
|
|
},
|
|
{
|
|
"name": "SSH_MCP_COMMAND_TIMEOUT",
|
|
"label": "Command timeout (seconds)",
|
|
"description": "Max time a remote command can run before being killed. Default: 120.",
|
|
"required": false,
|
|
"secret": false,
|
|
"default": "120",
|
|
"example": "120"
|
|
},
|
|
{
|
|
"name": "SSH_MCP_CONNECT_TIMEOUT",
|
|
"label": "Connect timeout (seconds)",
|
|
"description": "Max time to wait for the SSH handshake. Default: 15.",
|
|
"required": false,
|
|
"secret": false,
|
|
"default": "15",
|
|
"example": "15"
|
|
},
|
|
{
|
|
"name": "SSH_MCP_LOGIN_PW_TTL",
|
|
"label": "Login password cache TTL (seconds)",
|
|
"description": "How long an elicited login password stays cached in RAM. Default: 300.",
|
|
"required": false,
|
|
"secret": false,
|
|
"default": "300",
|
|
"example": "300"
|
|
},
|
|
{
|
|
"name": "SSH_MCP_SUDO_PW_TTL",
|
|
"label": "Sudo password cache TTL (seconds)",
|
|
"description": "How long an elicited sudo password stays cached in RAM. Default: 300.",
|
|
"required": false,
|
|
"secret": false,
|
|
"default": "300",
|
|
"example": "300"
|
|
},
|
|
{
|
|
"name": "SSH_MCP_KEY_PASSPHRASE",
|
|
"label": "SSH key passphrase (non-interactive override)",
|
|
"description": "Passphrase for an encrypted private key. Overrides elicitation. Use only in automated environments.",
|
|
"required": false,
|
|
"secret": true,
|
|
"example": ""
|
|
}
|
|
],
|
|
"setup_instructions": [
|
|
"Install dependencies: pip install -r requirements.txt",
|
|
"No OAuth or API key needed: host authentication is managed at runtime via add_alias.",
|
|
"Add an alias: mcp__ssh__add_alias(alias=\"my-server\", hostname=\"...\", username=\"...\", auth=\"key\")",
|
|
"The server stores aliases in ~/.ssh_aliases.json (auto-managed, never hand-edit).",
|
|
"Optional: tune TTLs via SSH_MCP_* environment variables (see env[] above)."
|
|
],
|
|
"docs": [
|
|
{
|
|
"lang": "en",
|
|
"description": "Full SSH remote server access: read/write files, grep, execute commands, manage systemd services, upload/download files and directories, and probe system info \u2014 all over SFTP and SSH with the same output format as Skald's native tools. Aliases manage host config (hostname, port, user, auth method, sudo policy). Login passwords and sudo passwords are elicited on demand and kept only in RAM with configurable TTL. No OAuth, no API keys, no secrets on disk.",
|
|
"llm_short_description": "SSH remote access \u2014 connect to remote servers via alias system. Read, write, list, grep, edit files and execute commands on remote hosts over SSH."
|
|
}
|
|
],
|
|
"mcp_config": {
|
|
"command": "python3",
|
|
"args": [
|
|
"ssh_mcp_server.py"
|
|
],
|
|
"env": {
|
|
"SSH_MCP_POOL_TTL": "{ENV:SSH_MCP_POOL_TTL}",
|
|
"SSH_MCP_COMMAND_TIMEOUT": "{ENV:SSH_MCP_COMMAND_TIMEOUT}",
|
|
"SSH_MCP_CONNECT_TIMEOUT": "{ENV:SSH_MCP_CONNECT_TIMEOUT}",
|
|
"SSH_MCP_LOGIN_PW_TTL": "{ENV:SSH_MCP_LOGIN_PW_TTL}",
|
|
"SSH_MCP_SUDO_PW_TTL": "{ENV:SSH_MCP_SUDO_PW_TTL}",
|
|
"SSH_MCP_KEY_PASSPHRASE": "{SECRET:SSH_MCP_KEY_PASSPHRASE}"
|
|
}
|
|
},
|
|
"homepage": "",
|
|
"icon_small": "icon_sm.svg",
|
|
"icon_large": "icon_lg.svg",
|
|
"scope": "user",
|
|
"tags": [
|
|
"ssh",
|
|
"mcp",
|
|
"local",
|
|
"remote",
|
|
"server",
|
|
"terminal",
|
|
"sysadmin"
|
|
],
|
|
"auth": {
|
|
"type": "none"
|
|
},
|
|
"version": 2,
|
|
"version_string": "1.0.1",
|
|
"version_release_date": "2026-07-21"
|
|
} |