Skip to main content
Glama
my-mcp-ssh

my-mcp-ssh

by ffpy

my-mcp-ssh

EN doc CN doc

A Model Context Protocol (MCP) based SSH connection tool that allows large language models to securely connect to remote servers via SSH and perform file operations through the MCP protocol.

Features

  • SSH Connection Management: Connect to remote SSH servers

  • Command Execution: Execute commands on remote servers

  • File Transfer: Upload and download files

  • Session Management: Maintain and close SSH sessions

Related MCP server: ssh-client-mcp-server

Installation

Dependencies

  • Python >= 3.12

  • uv package manager

# Clone the project
git clone https://github.com/ffpy/my-mcp-ssh.git

# Enter the project directory
cd my-mcp-ssh

# Install dependencies
uv sync

Usage

Configure in client

{
  "mcpServers": {
    "my-mcp-ssh": {
      "command": "uv",
      "args": [
        "--directory",
        "<your_path>/my-mcp-ssh",
        "run",
        "src/main.py"
      ],
      "env": {}
    }
  }
}

Environment Variables

SSH Connection Defaults (Optional)

Environment variables provide default values for SSH connections, useful when frequently connecting to the same server or in automated environments:

  • SSH_HOST: SSH server hostname or IP address

  • SSH_PORT: SSH server port

  • SSH_USERNAME: SSH username

  • SSH_PASSWORD: SSH password (if using password authentication)

  • SSH_KEY_PATH: SSH private key file path (if using key authentication)

  • SSH_KEY_PASSPHRASE: SSH private key passphrase (if needed)

When to use SSH environment variables:

  • Repeated connections: When connecting to the same server multiple times

  • CI/CD pipelines: For automated deployment scripts

  • Development environments: Set defaults for your commonly used servers

  • Container deployments: Configure defaults without modifying code

Note: Parameters passed to the connect tool always override environment variables.

Server Configuration

Additional server behavior can be configured:

  • SESSION_TIMEOUT: Session timeout in minutes, default is 30 minutes

  • MAX_OUTPUT_LENGTH: Maximum command output length in characters, default is 5000 characters

SSH Credentials File

For better security, you can store SSH credentials in a local configuration file instead of passing passwords as parameters.

  1. Copy the example file:

cp ssh-credentials.json.example ssh-credentials.json
  1. Edit ssh-credentials.json with your actual credentials:

{
  "root@192.168.1.100": "your_password",
  "admin@web-[0-9].example.com": "web_password",
  "deploy@server-{dev,test,staging}.company.com": "deploy_password",
  "admin@*.internal.network": "internal_password"
}

Supported Patterns:

  • * - matches any characters

  • ? - matches single character

  • [0-9] - matches any digit

  • {dev,test,staging} - matches any of the listed options

Authentication Priority Order:

  1. Parameters passed to connect tool (password, key_path)

  2. Exact match in credentials file (username@host)

  3. Pattern match in credentials file (wildcards)

  4. Environment variable password (SSH_PASSWORD)

  5. Environment variable key (SSH_KEY_PATH)

  6. Default SSH key (~/.ssh/id_rsa if exists)

Security:

  • File permissions are automatically set to 600 (owner read/write only)

  • The file is added to .gitignore to prevent accidental commits

Note:

  • Credential file changes take effect immediately without server restart

  • The file is read fresh on each connection attempt

Tool List

connect

Connect to an SSH server

Parameters:

  • host: SSH server hostname or IP address (optional)

  • port: SSH server port (optional, default 22)

  • username: SSH username (optional)

  • password: SSH password for authentication (optional)

  • key_path: SSH private key file path for authentication (optional)

  • key_passphrase: SSH private key passphrase if needed (optional)

disconnect

Disconnect from an SSH session

Parameters:

  • session_id: The session ID to disconnect

list_sessions

List all active SSH sessions

Parameters:

  • None

execute

Execute a command on the SSH server

Parameters:

  • session_id: Session ID

  • command: Command to execute

  • stdin: Input string to provide to the command, default is empty

  • timeout: Command timeout in seconds, default is 60 seconds

upload

Upload a file to the SSH server

Parameters:

  • session_id: Session ID

  • local_path: Local file path

  • remote_path: Remote file path

download

Download a file from the SSH server

Parameters:

  • session_id: Session ID

  • remote_path: Remote file path

  • local_path: Local file path

Debugging

Run ./inspector.sh for online debugging

License

my-mcp-ssh is licensed under the Apache License, Version 2.0

Available Tools

6 tools
connectA

Connect to SSH server

Args:
    host: SSH server hostname or IP address (optional)
    port: SSH server port (optional, default 22)
    username: SSH username (optional)
    password: SSH password for authentication (optional)
    key_path: SSH private key file path for authentication (optional)
    key_passphrase: SSH private key passphrase if needed (optional)

Returns:
    Connection status

Inputs: host, port, key_path, password, +2 more.

disconnectB

Disconnect from SSH server

Args:
    session_id: Session ID to disconnect

Returns:
    Disconnection status

Inputs: session_id (required).

downloadC

Download file from SSH server

Args:
    session_id: Session ID
    remote_path: Remote file path
    local_path: Local file path

Returns:
    Dictionary containing download status information

Inputs: local_path (required), session_id (required), remote_path (required).

executeA

Execute command on SSH server

Args:
    session_id: Session ID
    command: Command to execute
    stdin: Input string to provide to the command, defaults to None
    timeout: Command timeout in seconds, defaults to 60 seconds

Returns:
    Command output (stdout and stderr) and exit status

Inputs: command (required), session_id (required), stdin, timeout.

list_sessionsA

List all active SSH sessions

Returns:
    List containing information about all sessions

Inputs: no named parameters.

uploadC

Upload file to SSH server

Args:
    session_id: Session ID
    local_path: Local file path
    remote_path: Remote file path

Returns:
    Dictionary containing upload status information

Inputs: local_path (required), session_id (required), remote_path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct action: connect/disconnect manage sessions, list_sessions enumerates them, execute runs commands, and upload/download transfer files. There is no overlap or ambiguity between tool purposes.

    Naming Consistency5/5

    All tool names follow a clear imperative verb style, using lowercase with underscores. The names are concise and predictable, with list_sessions being the only verb_noun form, which is appropriate for a listing operation.

    Tool Count5/5

    The server provides 6 tools, which is well-scoped for an SSH MCP server. Each tool serves a core function (session management, command execution, file transfer) without unnecessary bloat, fitting the typical 3-15 tool range.

    Completeness5/5

    The tool surface covers the full lifecycle of SSH interactions: connect, disconnect, session listing, command execution, and file upload/download. No obvious gaps exist for standard SSH usage, making the set complete for its stated purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables remote SSH command execution and bidirectional file transfers through a standardized interface. It allows AI assistants to securely manage remote servers while keeping credentials isolated and applying command-level security controls.
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives AI agents SSH capabilities to execute commands, transfer files, and inspect remote systems through a preconfigured host list.
      78 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server for managing remote SSH servers, enabling AI agents to execute commands, transfer files, and perform deployment operations securely.
      MIT