ZIP MCP Server

Comprimir e descomprimir arquivos ZIP, com suporte para empacotamento de múltiplos arquivos, proteção por senha e criptografia.

Documentação

ZIP MCP Server

中文 | Inglês

Introdução ao Projeto

O ZIP MCP Server é um servidor de compressão baseado em fastMCP e zip.js, implementando o Model Context Protocol (MCP). Este projeto fornece funções de compressão, descompressão e consulta de informações de pacotes de compressão totalmente controladas por parâmetros.

Recursos

  • Suporta compressão e descompressão de arquivos e dados
  • Suporta compressão de empacotamento de múltiplos arquivos
  • Fornece controle de nível de compressão (0-9)
  • Suporta proteção por senha e configurações de força de criptografia
  • Fornece função de consulta para metadados de pacotes comprimidos
  • Valida caminhos de entrada ZIP na descompressão para prevenir escritas de travessia de caminho

Segurança

As versões 1.0.6 e posteriores corrigem um problema de escrita arbitrária de arquivos na ferramenta decompress: nomes de entrada ZIP maliciosos (por exemplo, ../outside.txt) podiam anteriormente ser unidos ao diretório de saída e gravados fora da raiz de extração pretendida. A extração agora resolve a raiz de saída uma vez, valida cada caminho de entrada e rejeita caminhos absolutos, caminhos com letra de unidade, segmentos .. e qualquer caminho que escape do diretório de saída.

Agradecimentos a Ryan (vonbrubeck@gmail.com) por relatar este problema de forma responsável.

Estrutura do Projeto

zip-mcp
├── src
│   ├── index.ts               # Application entry point
│   ├── utils
│   │   ├── compression.ts     # Compression and decompression implementation
│   │   └── safePath.ts        # Safe ZIP entry path validation
├── tsconfig.json              # TypeScript configuration file
├── package.json               # npm configuration file
└── README.md                  # Project documentation

Instalação

Você pode instalar o ZIP MCP Server globalmente usando npm:

npm install -g zip-mcp

Configuração MCP

Após a instalação, você pode configurar o ZIP MCP na sua configuração JSON MCP:

{
  "mcpServers": {
    "zip-mcp": {
      "command": "zip-mcp",
      "args": []
    }
  }
}

Configure o JSON MCP no Cliente de IA

Descrição das Ferramentas MCP

O ZIP MCP Server fornece as seguintes ferramentas, que podem ser chamadas através do protocolo MCP:

Ferramenta de Compressão (compress)

Comprima arquivos ou diretórios locais em um arquivo ZIP.

Parâmetros:

  • input: Caminho do arquivo ou diretório a ser comprimido (string ou array de strings)
  • output: Caminho do arquivo ZIP de saída
  • options: Opções de compressão (opcional)
    • level: Nível de compressão (0-9, padrão é 5)
    • password: Proteção por senha
    • encryptionStrength: Força de criptografia (1-3)
    • overwrite: Se deve sobrescrever arquivos existentes (booleano)

Retornos:

  • Sucesso: Conteúdo de texto contendo informações de sucesso
  • Falha: Conteúdo de texto contendo informações de erro

Ferramenta de Descompressão (decompress)

Descomprima arquivos ZIP locais para o diretório especificado. Os caminhos de entrada são validados antes da gravação para que os arquivos não possam ser extraídos fora de output via .. ou caminhos absolutos.

Parâmetros:

  • input: Caminho do arquivo ZIP
  • output: Caminho do diretório de saída
  • options: Opções de descompressão (opcional)
    • password: Senha de descompressão
    • overwrite: Se deve sobrescrever arquivos existentes (booleano)
    • createDirectories: Se deve criar diretórios inexistentes (booleano)

Retornos:

  • Sucesso: Conteúdo de texto contendo informações do resultado da descompressão
  • Falha: Conteúdo de texto contendo informações de erro

Ferramenta de Informações ZIP (getZipInfo)

Obtenha informações de metadados de arquivos ZIP locais.

Parâmetros:

  • input: Caminho do arquivo ZIP
  • options: Opções (opcional)
    • password: Senha de descompressão

Retornos:

  • Sucesso: Conteúdo de texto contendo informações detalhadas do arquivo ZIP, incluindo:
    • Número total de arquivos
    • Tamanho total
    • Tamanho comprimido
    • Taxa de compressão
    • Informações detalhadas de cada arquivo
  • Falha: Conteúdo de texto contendo informações de erro

Ferramenta de Teste (echo)

Retorna a mensagem de entrada para testar se o serviço está funcionando normalmente.

Parâmetros:

  • message: Mensagem a ser retornada

Retornos:

  • Conteúdo de texto contendo a mensagem de entrada e o timestamp atual

Exemplos

Exemplos de chamada de ferramentas usando o cliente MCP:

// Compress files
await client.executeTool("compress", {
  input: "/path/to/files/or/directory",
  output: "/path/to/output.zip",
  options: {
    level: 9,
    comment: "Test compression",
    password: "secret",
    overwrite: true,
  },
});

// Decompress files
await client.executeTool("decompress", {
  input: "/path/to/archive.zip",
  output: "/path/to/extract/directory",
  options: {
    password: "secret",
    overwrite: true,
    createDirectories: true,
  },
});

// Get ZIP info
await client.executeTool("getZipInfo", {
  input: "/path/to/archive.zip",
  options: {
    password: "secret",
  },
});

// Test service
await client.executeTool("echo", {
  message: "Hello, ZIP MCP Server!",
});

Contato