RemoteShell MCP
🔗 RemoteShell MCP
A Model Context Protocol (MCP) server that enables LLMs to securely manage and execute commands on remote SSH servers.
✨ Características
🔐 Gestión segura de credenciales - Guardar los perfiles de servidor SSH una vez, sin necesidad de volver a escribir las credenciales
💻 Ejecución remota de comandos - Ejecutar comandos de shell no interactivos de forma remota
📁 Operaciones de archivos - Subir/descargar archivos mediante SFTP
🤖 Impulsado por LLM - Construido con FastMCP y Paramiko
Related MCP server: SSH MCP Server
🚀 Instalación
RemoteShell es un servidor MCP stdio distribuido en PyPI. Ejecútalo directamente con uvx — no se requiere ningún paso de instalación. Luego registra el servidor con tu agente de codificación de IA:
Claude Code
claude mcp add remoteshell --scope user -- uvx remoteshell-mcpCodex
codex mcp add remoteshell -- uvx remoteshell-mcpOtros agentes — haz clic en el tuyo para expandir 👇
cursor mcp add remoteshell -- uvx remoteshell-mcpEdita ~/.gemini/config/mcp_config.json (global) o .agents/mcp_config.json (proyecto):
{
"mcpServers": {
"remoteshell": {
"command": "uvx",
"args": ["remoteshell-mcp"]
}
}
}O abre la vista MCP Servers en la TUI de Antigravity y ejecuta el comando /mcp.
opencode mcp addElige local y luego introduce uvx remoteshell-mcp.
Edita ~/.hermes/config.yaml:
mcp_servers:
remoteshell:
command: "uvx"
args: ["remoteshell-mcp"]Ejecuta /reload-mcp en la TUI de Hermes para que el nuevo servidor se cargue.
Edita ~/.openclaw/openclaw.json:
{
"mcp": {
"servers": {
"remoteshell": {
"command": "uvx",
"args": ["remoteshell-mcp"]
}
}
}
}O ejecuta openclaw configure para añadirlo mediante el asistente interactivo.
Añade esto a la configuración de tu cliente MCP:
{
"mcpServers": {
"remoteshell": {
"command": "uvx",
"args": ["remoteshell-mcp"]
}
}
}📖 Uso
¡Empezar es fácil! Puedes:
🤖 Deja que el LLM configure por ti - Simplemente indica al LLM tu host, nombre de usuario, contraseña, etc., y pídele que configure el servidor
⚙️ Configuración manual - Edita directamente el archivo de configuración en
~/.config/remoteshell/hosts.json
💾 Configuración y almacenamiento
RemoteShell almacena de forma segura tus configuraciones de servidor en:
~/.config/remoteshell/hosts.json🔧 Gestión de configuración
Gestionado por LLM: El LLM gestiona automáticamente este archivo usando las herramientas
save_serveryremove_serverEdición manual: También puedes editar directamente el archivo JSON para configuraciones avanzadas
📋 Ejemplo de configuración
{
"version": 1,
"servers": {
"production-server": {
"host": "1.2.3.4",
"user": "root",
"port": 22,
"auth_type": "password",
"password": "your_secure_password",
"last_connected": null
},
"staging-server": {
"host": "staging.example.com",
"user": "ubuntu",
"port": 22,
"auth_type": "private_key",
"private_key": "~/.ssh/id_rsa",
"last_connected": "2025-01-01T00:00:00+00:00"
}
}
}🔒 Nota de seguridad
En sistemas POSIX, protege tu archivo de configuración:
chmod 600 ~/.config/remoteshell/hosts.json🛠️ Herramientas disponibles
RemoteShell proporciona las siguientes herramientas MCP para la gestión de servidores remotos:
📋 list_servers()
Propósito: Muestra todos los perfiles de servidor guardados con su estado de conexión y última actividad.
Cuándo usarla:
El usuario pide "conectar al servidor" o "mostrar máquinas"
No se proporciona un
connection_idespecíficoSe necesita ver los servidores disponibles
Ejemplo: "Muéstrame qué servidores tengo configurados" → Devuelve una lista de todos los servidores guardados con su estado en línea
💾 save_server(connection_id, host, user, auth_type, credential, port)
Propósito: Crea o actualiza un perfil de servidor con credenciales de autenticación.
Parámetros:
connection_id: Identificador único del servidor (p. ej., "production", "staging")host: Nombre de host o dirección IP del servidoruser: Nombre de usuario SSHauth_type:"password"o"private_key"credential:Para
password: Cadena de contraseña en texto planoPara
private_key: Ruta del archivo (p. ej.,~/.ssh/id_rsa) o contenido de la clave PEM
port: Puerto SSH (opcional; por defecto es 22 y conserva el puerto guardado existente si se omite)
Cuándo usarla:
Añadir una nueva configuración de servidor
Actualizar credenciales tras un fallo de autenticación
Cambiar los detalles de conexión del servidor
🗑️ remove_server(connection_id)
Propósito: Elimina permanentemente un perfil de servidor del almacenamiento.
Cuándo usarla:
El usuario solicita explícitamente eliminar u olvidar un servidor
El servidor ya no es accesible o necesario
⚠️ Advertencia: Esta acción no se puede deshacer
⚡ execute_command(connection_id, command)
Propósito: Ejecuta comandos de shell no interactivos de forma remota y devuelve los resultados.
Devuelve: stdout, stderr y exit_code
Cuándo usarla:
Ejecutar comandos del sistema, scripts o utilidades
Comprobar el estado del servidor, uso de disco, listas de procesos
Operaciones de archivos, gestión de paquetes, etc.
Cuándo NO usarla:
Programas interactivos (vim, htop, top)
Comandos que requieren entrada manual (prompts
[Y/n]) - a menos que se usen banderas como-y
Ejemplo: execute_command(connection_id="production", command="df -h")
📤 upload_file(connection_id, local_path, remote_path)
Propósito: Sube archivos desde tu máquina local a un servidor remoto mediante SFTP.
Parámetros:
local_path: Ruta del archivo en tu máquina localremote_path: Ruta de destino en el servidor remoto
Notas:
Si
remote_pathes un directorio, se conserva el nombre de archivo originalSi se omite
local_path, el servidor selecciona una ruta predeterminada y la devuelve en la respuesta
📥 download_file(connection_id, remote_path, local_path)
Propósito: Descarga archivos desde un servidor remoto a tu máquina local mediante SFTP.
Parámetros:
remote_path: Ruta del archivo en el servidor remotolocal_path: Ruta de destino en tu máquina local
Notas:
Si se omite
local_path, el valor predeterminado es:~/.config/remoteshell/downloads/<connection_id>/<basename>
🧪 Desarrollo
Configuración de desarrollo local
Para el desarrollo local, usa esta configuración de MCP:
{
"mcpServers": {
"remoteshell": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/remoteShell-mcp", "run", "remoteshell-mcp"]
}
}
}Ejecutar pruebas
uv run pytestMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceA local Model Context Protocol server that allows LLMs to securely execute shell commands on remote Linux and Windows systems via SSH connections.6292
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that allows LLMs to securely execute shell commands on remote Linux and Windows systems via SSH. It supports password and key-based authentication, command timeouts, and sudo elevation for administrative tasks.49,165655MIT
- AlicenseNot gradedqualityAmaintenanceA local MCP server that enables LLMs to execute shell commands on remote hosts over SSH with multiple authentication methods.353MIT
- AlicenseNot gradedqualityDmaintenanceA centralized MCP server that enables LLM agents to securely execute commands and manage Linux servers via SSH.2MIT
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chouzz/remoteShell-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server