2.8 KiB
2.8 KiB
MCP SSH Server
An Anthropic Model Context Protocol (MCP) server that provides SSH access to remote systems, enabling full access to remote virtual machines in a sandbox environment.
Features
- Uses stdio for MCP communication
- Provides SSH connection to remote servers
- Enables command execution on remote systems
- Secure public key authentication
- Configurable via environment variables or MCP config
Installation
pip install -e .
Configuration
The SSH server can be configured using environment variables or the MCP JSON configuration:
Environment Variable | Description | Default |
---|---|---|
MCP_SSH_HOSTNAME |
SSH server hostname or IP address | None |
MCP_SSH_PORT |
SSH server port | 22 |
MCP_SSH_USERNAME |
SSH username | None |
MCP_SSH_KEY_FILENAME |
Path to SSH private key file | None |
Claude Desktop MCP Configuration
Add the following to your Claude Desktop MCP configuration file:
{
"tools": [
{
"name": "mcpssh",
"path": "python -m mcpssh",
"environment": {
"MCP_SSH_HOSTNAME": "example.com",
"MCP_SSH_PORT": "22",
"MCP_SSH_USERNAME": "user",
"MCP_SSH_KEY_FILENAME": "/path/to/private_key"
}
}
]
}
Usage
This server implements the Anthropic MCP protocol and provides the following tools:
ssh_connect
: Connect to an SSH server using public key authentication (using config or explicit parameters)ssh_execute
: Execute a command on the SSH serverssh_disconnect
: Disconnect from the SSH server
Example
from mcp import ClientSession, StdioServerParameters
from mcpssh.server import SSHServerMCP
# Start the server in a subprocess
server_params = StdioServerParameters(
command="python",
args=["-m", "mcpssh"],
env={
"MCP_SSH_HOSTNAME": "example.com",
"MCP_SSH_PORT": "22",
"MCP_SSH_USERNAME": "user",
"MCP_SSH_KEY_FILENAME": "/path/to/private_key"
}
)
# Use with an MCP client
with ClientSession(server_params) as client:
# Connect to SSH server
client.ssh_connect()
# Execute a command
result = client.ssh_execute(command="ls -la")
print(result["stdout"])
# Disconnect
client.ssh_disconnect()
Direct Server Usage
from mcpssh.server import SSHServerMCP
# Initialize and run the server
server = SSHServerMCP(
hostname="example.com",
port=22,
username="user",
key_filename="/path/to/private_key"
)
# Run the server with stdio transport
server.run(transport="stdio")
Security Note
This tool provides full access to a remote system. It should only be used with virtual machines in sandbox environments where security implications are well understood.
License
MIT