CLI MCP Server

Um servidor MCP seguro para executar operações controladas de linha de comando com recursos abrangentes de segurança.

Documentação

CLI MCP Server


Uma implementação segura de servidor Model Context Protocol (MCP) para executar operações controladas de linha de comando com recursos abrangentes de segurança.

License Python Version MCP Protocol smithery badge Python Tests


Sumário

  1. Visão Geral
  2. Recursos
  3. Configuração
  4. Ferramentas Disponíveis
  5. Uso com o Claude Desktop
  6. Recursos de Segurança
  7. Tratamento de Erros
  8. Desenvolvimento
  9. Licença

Visão Geral

Este servidor MCP permite execução segura de linha de comando com medidas robustas de segurança, incluindo lista de permissões de comandos, validação de caminhos e controles de execução. Perfeito para fornecer acesso CLI controlado a aplicações LLM mantendo a segurança.

Recursos

  • 🔒 Execução segura de comandos com validação rigorosa
  • ⚙️ Lista configurável de comandos e flags permitidos com opção 'all'
  • 🛡️ Prevenção e validação contra traversal de caminhos
  • 🚫 Proteção contra injeção de operadores de shell
  • ⏱️ Timeouts de execução e limites de tamanho
  • 📝 Relatórios de erro detalhados
  • 🔄 Suporte a operações assíncronas
  • 🎯 Restrição e validação do diretório de trabalho

Configuração

Configure o servidor usando variáveis de ambiente:

VariávelDescriçãoPadrão
ALLOWED_DIRDiretório base para execução de comandos (Obrigatório)Nenhum (Obrigatório)
ALLOWED_COMMANDSLista separada por vírgulas de comandos permitidos ou 'all'ls,cat,pwd
ALLOWED_FLAGSLista separada por vírgulas de flags permitidos ou 'all'-l,-a,--help
MAX_COMMAND_LENGTHTamanho máximo da string de comando1024
COMMAND_TIMEOUTTimeout de execução de comandos (segundos)30
ALLOW_SHELL_OPERATORSPermitir operadores de shell (&&, ||, |, >, etc.)false

Observação: Definir ALLOWED_COMMANDS ou ALLOWED_FLAGS como 'all' permitirá qualquer comando ou flag, respectivamente.

Instalação

Para instalar o CLI MCP Server para o Claude Desktop automaticamente via Smithery:

npx @smithery/cli install cli-mcp-server --client claude

Ferramentas Disponíveis

run_command

Executa comandos CLI permitidos dentro de diretórios autorizados.

Esquema de Entrada:

{
  "command": {
    "type": "string",
    "description": "Single command to execute (e.g., 'ls -l' or 'cat file.txt')"
  }
}

Observações de Segurança:

  • Operadores de shell (&&, |, >, >>) não são suportados por padrão, mas podem ser habilitados com ALLOW_SHELL_OPERATORS=true
  • Os comandos devem estar na lista de permissões, a menos que ALLOWED_COMMANDS='all'
  • As flags devem estar na lista de permissões, a menos que ALLOWED_FLAGS='all'
  • Todos os caminhos são validados para estar dentro de ALLOWED_DIR

show_security_rules

Exibe a configuração de segurança atual e as restrições, incluindo:

  • Diretório de trabalho
  • Comandos permitidos
  • Flags permitidos
  • Limites de segurança (tamanho máximo de comando e timeout)

Uso com o Claude Desktop

Adicione ao seu ~/Library/Application\ Support/Claude/claude_desktop_config.json:

Configuração de Servidores em Desenvolvimento/Não Publicados

{
  "mcpServers": {
    "cli-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "<path/to/the/repo>/cli-mcp-server",
        "run",
        "cli-mcp-server"
      ],
      "env": {
        "ALLOWED_DIR": "</your/desired/dir>",
        "ALLOWED_COMMANDS": "ls,cat,pwd,echo",
        "ALLOWED_FLAGS": "-l,-a,--help,--version",
        "MAX_COMMAND_LENGTH": "1024",
        "COMMAND_TIMEOUT": "30",
        "ALLOW_SHELL_OPERATORS": "false"
      }
    }
  }
}

Configuração de Servidores Publicados

{
  "mcpServers": {
    "cli-mcp-server": {
      "command": "uvx",
      "args": [
        "cli-mcp-server"
      ],
      "env": {
        "ALLOWED_DIR": "</your/desired/dir>",
        "ALLOWED_COMMANDS": "ls,cat,pwd,echo",
        "ALLOWED_FLAGS": "-l,-a,--help,--version",
        "MAX_COMMAND_LENGTH": "1024",
        "COMMAND_TIMEOUT": "30",
        "ALLOW_SHELL_OPERATORS": "false"
      }
    }
  }
}

Caso não esteja funcionando ou não apareça na interface, limpe seu cache via uv clean.

Recursos de Segurança

  • ✅ Aplicação da lista de permissões de comandos com opção 'all'
  • ✅ Validação de flags com opção 'all'
  • ✅ Prevenção e normalização contra traversal de caminhos
  • ✅ Bloqueio de operadores de shell (com suporte opcional via ALLOW_SHELL_OPERATORS=true)
  • ✅ Limites de tamanho de comando
  • ✅ Timeouts de execução
  • ✅ Restrições de diretório de trabalho
  • ✅ Resolução e validação de symlinks

Tratamento de Erros

O servidor fornece mensagens de erro detalhadas para:

  • Violações de segurança (CommandSecurityError)
  • Timeouts de comando (CommandTimeoutError)
  • Formatos de comando inválidos
  • Violações de segurança de caminho
  • Falhas de execução (CommandExecutionError)
  • Erros gerais de comando (CommandError)

Desenvolvimento

Pré-requisitos

  • Python 3.10+
  • Biblioteca de protocolo MCP

Compilação e Publicação

Para preparar o pacote para distribuição:

  1. Sincronize as dependências e atualize o lockfile:

    uv sync
    
  2. Compile as distribuições do pacote:

    uv build
    

    Isso criará distribuições de origem e wheel no diretório dist/.

  3. Publique no PyPI:

    uv publish --token {{YOUR_PYPI_API_TOKEN}}
    

Depuração

Como os servidores MCP são executados via stdio, a depuração pode ser desafiadora. Para a melhor experiência de depuração, recomendamos fortemente usar o MCP Inspector.

Você pode iniciar o MCP Inspector via npm com este comando:

npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server

Ao iniciar, o Inspector exibirá uma URL que você pode acessar no seu navegador para começar a depurar.

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.


Para mais informações ou suporte, abra uma issue no repositório do projeto.