About MCP SSH Docker Server
MCP SSH Docker Server provides an MCP interface for running commands on remote systems over SSH and inside Docker containers. It is intended for clients that need command output, progress updates, and cancellation support.
Key features
- 01Run commands on remote systems over SSH
- 02Run commands inside Docker containers
- 03Stream command output and progress
- 04Return structured JSON results
- 05Cancel commands and enforce timeouts
Use cases
- 01Run commands on a remote host
- 02Execute commands in a Docker container
- 03Stream output from a long-running command
- 04Retrieve command results as JSON
MCP support
The MCP server exposes SSH and Docker command execution tools to MCP clients, including container listing and command cancellation.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP SSH Docker Server
A Message Control Protocol (MCP) server that provides SSH and Docker command execution capabilities. This server allows you to execute commands on remote systems and Docker containers through a standardized interface.
Features
- SSH command execution on remote systems
- Docker container command execution
- Real-time command output streaming
- Progress reporting for long-running commands
- Structured JSON output support
- Command cancellation support
- Connection and command timeouts
- Comprehensive error handling
Prerequisites
- Python 3.7+
- SSH access to target system
- Docker installed on target system (for Docker commands)
Installation
Using pip
pip install mcp-ssh-frr
From source
- Clone the repository:
git clone https://github.com/aweher/mcp-ssh-frr.git
cd mcp-ssh-frr
- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Install the package in development mode:
pip install -e .
-
Configure SSH:
-
Place your SSH private key in
./config/id_rsa -
Set up environment variables:
export SSH_HOST="your-remote-host" export SSH_USER="your-username" # Defaults to root export SSH_PORT="22" # Optional, defaults to 22 -
Don't forget to add your pubkey into
authorized_keysfile onyour-remote-host
-
Usage
Starting the Server
python mcp_ssh_docker_server.py
Available Tools
1. SSH Command Execution (ssh_exec)
Execute any command on the remote system:
{
"name": "ssh_exec",
"args": {
"command": "ls",
"args": ["-la", "/etc"],
"stream": false, # Set to true for real-time output
"structured_output": false # Set to true for JSON output
}
}
2. Docker Command Execution (ssh_exec_docker)
Execute commands inside Docker containers:
{
"name": "ssh_exec_docker",
"args": {
"container": "my-container",
"command": "vtysh",
"args": ["-c", "show ip bgp"],
"stream": false,
"structured_output": false
}
}
List available containers:
{
"name": "ssh_exec_docker",
"args": {
"list_containers": true,
"structured_output": false
}
}
Output Formats
- Text Output (default):
$ command arg1 arg2
(exit code 0)
output line 1
output line 2
- Structured JSON Output:
{
"command": "command arg1 arg2",
"exit_code": 0,
"stdout": "output line 1\noutput line 2",
"stderr": "",
"duration": 0.123,
"metadata": {
"container": "my-container" // For Docker commands
}
}
- Progress Updates (when streaming):
[progress] 45% - Bytes read: 1024
Configuration
Timeouts
- SSH Connection Timeout: 10 seconds
- Command Execution Timeout: 30 seconds
- Stream Maximum Time: 300 seconds (5 minutes)
Buffer Size
- Stream Buffer Size: 1024 bytes
Error Handling
The server handles various error scenarios:
- Connection timeouts
- Authentication failures
- Command execution errors
- Docker container errors
- Command cancellation
Security
- Uses SSH key-based authentication
- Command arguments are properly escaped
- No command injection vulnerabilities
- Secure connection handling
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
GPLv3
Author
Ariel S. Weher <ariel[at]weher.net>
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.