Secure Shell Executor
FreeNot checkedProvides a secure way to execute shell commands with robust validation, whitelisting, and timeout handling through an asyncio-powered Python implementation.
About
Provides a secure way to execute shell commands with robust validation, whitelisting, and timeout handling through an asyncio-powered Python implementation.
README
Um servidor seguro para execução de comandos shell que implementa o Protocolo de Contexto de Modelo (MCP). Este servidor permite a execução remota de comandos shell autorizados com suporte para entrada via stdin.
Funcionalidades
- Execução Segura de Comandos: Apenas comandos autorizados podem ser executados
- Suporte para Entrada Padrão: Passa entrada para comandos via stdin
- Saída Abrangente: Retorna stdout, stderr, código de saída e tempo de execução
- Segurança com Operadores Shell: Valida comandos após operadores shell (;, &&, ||, |)
- Controle de Timeout: Define tempo máximo de execução para comandos
Configuração do cliente MCP no seu Claude.app
Versão publicada
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"shell": {
"command": "uvx",
"args": [
"mcp-shell-server"
],
"env": {
"ALLOW_COMMANDS": "ls,cat,pwd,grep,wc,touch,find"
}
},
}
}
Versão local
Configuração
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"shell": {
"command": "uv",
"args": [
"--directory",
".",
"run",
"mcp-shell-server"
],
"env": {
"ALLOW_COMMANDS": "ls,cat,pwd,grep,wc,touch,find"
}
},
}
}
Instalação
pip install mcp-shell-server
Uso
Iniciando o Servidor
ALLOW_COMMANDS="ls,cat,echo" uvx mcp-shell-server
# Ou usando o alias
ALLOWED_COMMANDS="ls,cat,echo" uvx mcp-shell-server
A variável de ambiente ALLOW_COMMANDS (ou seu alias ALLOWED_COMMANDS) especifica quais comandos podem ser executados. Comandos podem ser separados por vírgulas com espaços opcionais ao redor deles.
Formatos válidos para ALLOW_COMMANDS ou ALLOWED_COMMANDS:
ALLOW_COMMANDS="ls,cat,echo" # Formato básico
ALLOWED_COMMANDS="ls ,echo, cat" # Com espaços (usando alias)
ALLOW_COMMANDS="ls, cat , echo" # Múltiplos espaços
Formato da Requisição
# Execução básica de comando
{
"command": ["ls", "-l", "/tmp"]
}
# Comando com entrada stdin
{
"command": ["cat"],
"stdin": "Hello, World!"
}
# Comando com timeout
{
"command": ["long-running-process"],
"timeout": 30 # Tempo máximo de execução em segundos
}
# Comando com diretório de trabalho e timeout
{
"command": ["grep", "-r", "pattern"],
"directory": "/path/to/search",
"timeout": 60
}
Formato da Resposta
Resposta de sucesso:
{
"stdout": "saída do comando",
"stderr": "",
"status": 0,
"execution_time": 0.123
}
Resposta de erro:
{
"error": "Comando não permitido: rm",
"status": 1,
"stdout": "",
"stderr": "Comando não permitido: rm",
"execution_time": 0
}
Segurança
O servidor implementa várias medidas de segurança:
- Lista Branca de Comandos: Apenas comandos explicitamente permitidos podem ser executados
- Validação de Operadores Shell: Comandos após operadores shell (;, &&, ||, |) também são validados contra a lista branca
- Sem Injeção de Shell: Comandos são executados diretamente sem interpretação do shell
Desenvolvimento
Configurando o Ambiente de Desenvolvimento
- Clone o repositório
git clone https://github.com/yourusername/mcp-shell-server.git
cd mcp-shell-server
- Instale dependências incluindo requisitos de teste
pip install -e ".[test]"
Executando Testes
pytest
Referência da API
Argumentos da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| command | string[] | Sim | Comando e seus argumentos como elementos de array |
| stdin | string | Não | Entrada a ser passada para o comando |
| directory | string | Não | Diretório de trabalho para execução do comando |
| timeout | integer | Não | Tempo máximo de execução em segundos |
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| stdout | string | Saída padrão do comando |
| stderr | string | Saída de erro do comando |
| status | integer | Código de status de saída |
| execution_time | float | Tempo gasto para executar (em segundos) |
| error | string | Mensagem de erro (presente apenas se falhou) |
Requisitos
- Python 3.11 ou superior
- mcp>=1.1.0
Licença
Licença MIT - Veja o arquivo LICENSE para detalhes
Installing Secure Shell Executor
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/diegofornalha/mcp-shell-serverFAQ
Is Secure Shell Executor MCP free?
Yes, Secure Shell Executor MCP is free — one-click install via Unyly at no cost.
Does Secure Shell Executor need an API key?
No, Secure Shell Executor runs without API keys or environment variables.
Is Secure Shell Executor hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Secure Shell Executor in Claude Desktop, Claude Code or Cursor?
Open Secure Shell Executor on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Secure Shell Executor with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
