MCP Server for remote server administration via SSH — execute commands, manage files, edit configs, transfer files, control services. No agents needed on target servers.
Project description
SSH MCP Server
MCP Server für SSH-basierte Server-Administration. Ermöglicht KI-Assistenten die Verwaltung von Remote-Servern via SSH.
Supported MCP Clients
graph LR
subgraph Getestet
K[Kiro CLI]
C[Claude Desktop]
end
subgraph Kompatibel
A[Alle MCP-fähigen Clients<br/>stdio + StreamableHTTP]
end
K --> MCP[SSH MCP Server]
C --> MCP
A --> MCP
| Client | Transport | Status |
|---|---|---|
| Kiro CLI | stdio | ✅ getestet |
| Claude Desktop | stdio | ✅ getestet |
| Jeder MCP-Client | stdio / StreamableHTTP | ✅ kompatibel |
Features
Verwalte Linux-Server per SSH — direkt aus dem KI-Assistenten heraus. Keine Agents, Daemons oder Tools auf den Zielservern nötig. Nur ein SSH-Zugang reicht.
graph LR
AI[KI-Assistent] -->|MCP| S[SSH MCP Server]
S -->|SSH/SFTP| R1[Server 1]
S -->|SSH/SFTP| R2[Server 2]
S -->|SSH/SFTP| RN[Server N]
- Agentless: Kein Setup auf den Zielservern — funktioniert mit jedem SSH-Zugang
- Remote Command Execution: Einzelbefehle oder mehrzeilige Scripts ausführen
- Sudo Support: Befehle mit
sudoausführen, ohne interaktives Passwort - File Operations: Dateien lesen (teilweise/komplett), schreiben, suchen, chirurgisch editieren
- File Transfer: Upload/Download via SFTP
- Service Management: Systemd Services starten, stoppen, restarten, Status prüfen
- Code Navigation: Funktions-/Klassen-Übersicht aus Quelldateien extrahieren (grep-basiert, kein Language Server nötig)
- Multi-Server: Beliebig viele Server parallel verwalten
- Connection Pooling: SSH-Verbindungen werden 5 Minuten wiederverwendet
- User Approval: Schreibende Operationen erfordern Bestätigung durch den Operator
- Audit Log: Alle Aktionen werden protokolliert (Pfad konfigurierbar)
Installation
Von PyPI
pip install remote-admin-mcp
Mit uv (empfohlen für Entwicklung)
# Virtuelle Umgebung erstellen und Abhängigkeiten installieren
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
Mit pip
# Virtuelle Umgebung erstellen
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Abhängigkeiten installieren
pip install -e ".[dev]"
Konfiguration
- Kopiere
.env.examplezu.env:
cp .env.example .env
- Bearbeite
.envmit deinen Server-Zugangsdaten:
SSH_SERVER_1_NAME=production
SSH_SERVER_1_HOST=prod.example.com
SSH_SERVER_1_PORT=22
SSH_SERVER_1_USER=admin
SSH_SERVER_1_PASSWORD=your-password
SSH_SERVER_2_NAME=staging
SSH_SERVER_2_HOST=staging.example.com
SSH_SERVER_2_PORT=22
SSH_SERVER_2_USER=deploy
SSH_SERVER_2_PASSWORD=your-password
MCP Tools
list_servers
Liste alle konfigurierten Server auf.
execute_command
Führe einen Befehl auf einem Remote-Server aus.
Parameter:
server(string): Server-Namecommand(string): Auszuführender Befehluse_sudo(boolean): Mit sudo ausführen
read_file
Lese eine Datei vom Remote-Server.
Parameter:
server(string): Server-Namepath(string): Dateipfad
write_file
Schreibe eine Datei auf den Remote-Server.
Parameter:
server(string): Server-Namepath(string): Dateipfadcontent(string): Dateiinhalt
get_service_status
Prüfe den Status eines systemd Services.
Parameter:
server(string): Server-Nameservice(string): Service-Name
manage_service
Verwalte einen systemd Service (start/stop/restart/reload).
Parameter:
server(string): Server-Nameservice(string): Service-Nameaction(string): Aktion (start/stop/restart/reload)
Verwendung mit KI-Assistenten
Kiro CLI / Claude Desktop (uvx — empfohlen)
Kein manuelles Installieren nötig — uvx lädt und cached das Paket automatisch:
{
"mcpServers": {
"ssh": {
"command": "uvx",
"args": ["remote-admin-mcp"],
"env": {
"SSH_SERVER_1_NAME": "production",
"SSH_SERVER_1_HOST": "prod.example.com",
"SSH_SERVER_1_USER": "admin",
"SSH_SERVER_1_KEY_FILE": "~/.ssh/id_ed25519"
}
}
}
}
Alternative: Mit .env-Datei
{
"mcpServers": {
"ssh": {
"command": "uvx",
"args": ["--env-file", "/path/to/.env", "remote-admin-mcp"]
}
}
}
Alternative: Lokale Installation
{
"mcpServers": {
"ssh": {
"command": "/path/to/.venv/bin/ssh_mcp_server"
}
}
}
Beispiele
Log-Analyse:
"Zeige mir die letzten 100 Zeilen vom nginx error log auf production"
Service Restart:
"Starte den nginx Service auf staging neu"
Config ändern:
"Lies die nginx.conf auf production und erhöhe worker_processes auf 4"
Sicherheit
- Schreibende Tools erfordern User-Approval durch den MCP Client
- Lese-Tools (
list_servers,read_file,search_in_file,get_file_structure) sind auto-approved - SSH-Key-Authentifizierung empfohlen (Passwort-Auth möglich)
.envsollte NICHT ins Git committed werden
Audit Log
Alle Aktionen werden in ein Logfile geschrieben:
[2026-04-12 13:14:00] [production] execute: tail -100 /var/log/syslog
[2026-04-12 13:14:05] [production] write_file: /etc/nginx/nginx.conf — Config update
Default: ~/.ssh-mcp-audit.log. Konfigurierbar per Environment-Variable:
SSH_MCP_AUDIT_LOG=/var/log/ssh-mcp-audit.log
Entwicklung
# Tests ausführen
pytest -v
# Linting
ruff check src/
Lizenz
MIT — siehe LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file remote_admin_mcp-0.1.0.tar.gz.
File metadata
- Download URL: remote_admin_mcp-0.1.0.tar.gz
- Upload date:
- Size: 78.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0521bc87421f2097ce5a84a10f3336516b1c20368f74ee4f506d0bda74a54fd
|
|
| MD5 |
edcd1eb4a98964009591f9f460b5f4f0
|
|
| BLAKE2b-256 |
891ff48149bf9f00d47e488206809a9de1cceb6d9fdf545bc18c5a5c4a471b13
|
Provenance
The following attestation bundles were made for remote_admin_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on intershopper/remote-admin-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remote_admin_mcp-0.1.0.tar.gz -
Subject digest:
e0521bc87421f2097ce5a84a10f3336516b1c20368f74ee4f506d0bda74a54fd - Sigstore transparency entry: 1280729659
- Sigstore integration time:
-
Permalink:
intershopper/remote-admin-mcp@499915f1125b83ec0f5b3498ac251106bfbecfd0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/intershopper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@499915f1125b83ec0f5b3498ac251106bfbecfd0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file remote_admin_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: remote_admin_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec6525e10aaa270ddcd7f29521d3fed7f588d8f25e0a955736bae1be525dbb3a
|
|
| MD5 |
8097cabbe7688deeb04f92e7a33d6fa6
|
|
| BLAKE2b-256 |
0071f1a2b7c5d20277e1333e0db6453187b1c2fc0a60222ffa71668b5d3a565e
|
Provenance
The following attestation bundles were made for remote_admin_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on intershopper/remote-admin-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remote_admin_mcp-0.1.0-py3-none-any.whl -
Subject digest:
ec6525e10aaa270ddcd7f29521d3fed7f588d8f25e0a955736bae1be525dbb3a - Sigstore transparency entry: 1280729909
- Sigstore integration time:
-
Permalink:
intershopper/remote-admin-mcp@499915f1125b83ec0f5b3498ac251106bfbecfd0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/intershopper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@499915f1125b83ec0f5b3498ac251106bfbecfd0 -
Trigger Event:
release
-
Statement type: