Skip to main content

MCP Shell Server - Execute shell commands via MCP protocol

Project description

MCP Shell Server

codecov smithery badge

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:

  1. Lista Branca de Comandos: Apenas comandos explicitamente permitidos podem ser executados
  2. Validação de Operadores Shell: Comandos após operadores shell (;, &&, ||, |) também são validados contra a lista branca
  3. Sem Injeção de Shell: Comandos são executados diretamente sem interpretação do shell

Desenvolvimento

Configurando o Ambiente de Desenvolvimento

  1. Clone o repositório
git clone https://github.com/yourusername/mcp-shell-server.git
cd mcp-shell-server
  1. 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_mcp_shell_server-0.0.0.dev0.tar.gz (64.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_mcp_shell_server-0.0.0.dev0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_mcp_shell_server-0.0.0.dev0.tar.gz.

File metadata

File hashes

Hashes for iflow_mcp_mcp_shell_server-0.0.0.dev0.tar.gz
Algorithm Hash digest
SHA256 ebb7d7e04acadd712928512208c093014712561b9f04b4b464a35210e26a40bc
MD5 14e5d766389a88c990181cf6c8682611
BLAKE2b-256 fec819a52442cd81a8a7c3c4e7c1bd5399ef2911b6747214fa2c6e7747c741b3

See more details on using hashes here.

File details

Details for the file iflow_mcp_mcp_shell_server-0.0.0.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for iflow_mcp_mcp_shell_server-0.0.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 170eaf72b96f9b10f3e6b759f8a1d8cb48c600883b7cf6a66f935cfc9217625f
MD5 4d4182080c585cd0b6bad269e5150cc2
BLAKE2b-256 84c788af534ea24e29bfa0ba897fb8f446684fecb3ca0c2038b811bc1816e368

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page