ZIP MCP Server

Comprime y descomprime archivos ZIP, con soporte para empaquetado de múltiples archivos, protección por contraseña y cifrado.

Documentación

ZIP MCP Server

中文 | Español

Introducción al Proyecto

ZIP MCP Server es un servidor de compresión basado en fastMCP y zip.js, que implementa el Protocolo de Contexto de Modelo (MCP). Este proyecto proporciona funciones de compresión, descompresión y consulta de información de paquetes comprimidos ZIP totalmente controladas por parámetros.

Características

  • Soporta compresión y descompresión de archivos y datos
  • Soporta empaquetado y compresión de múltiples archivos
  • Proporciona control del nivel de compresión (0-9)
  • Soporta protección con contraseña y configuración de fuerza de cifrado
  • Proporciona función de consulta de metadatos de paquetes comprimidos
  • Valida las rutas de entrada ZIP al descomprimir para prevenir escrituras de traversal de rutas

Seguridad

Las versiones 1.0.6 y posteriores corrigen un problema de escritura arbitraria de archivos en la herramienta decompress: nombres de entrada ZIP maliciosos (por ejemplo ../outside.txt) podían unirse previamente con el directorio de salida y escribirse fuera de la raíz de extracción prevista. La extracción ahora resuelve la raíz de salida una vez, valida cada ruta de entrada y rechaza rutas absolutas, rutas con letra de unidad, segmentos .. y cualquier ruta que escape del directorio de salida.

Gracias a Ryan (vonbrubeck@gmail.com) por reportar este problema de manera responsable.

Estructura del Proyecto

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

Instalación

Puedes instalar ZIP MCP Server globalmente usando npm:

npm install -g zip-mcp

Configuración de MCP

Después de la instalación, puedes configurar ZIP MCP en tu configuración JSON de MCP:

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

Configurar el JSON de MCP en el cliente de IA

Descripción de las herramientas MCP

ZIP MCP Server proporciona las siguientes herramientas, que se pueden llamar a través del protocolo MCP:

Herramienta de compresión (compress)

Comprime archivos o directorios locales en un archivo ZIP.

Parámetros:

  • input: Ruta del archivo o directorio a comprimir (cadena o matriz de cadenas)
  • output: Ruta del archivo ZIP de salida
  • options: Opciones de compresión (opcional)
    • level: Nivel de compresión (0-9, por defecto es 5)
    • password: Protección con contraseña
    • encryptionStrength: Fuerza de cifrado (1-3)
    • overwrite: Si sobrescribir archivos existentes (booleano)

Devuelve:

  • Éxito: Contenido de texto con información de éxito
  • Fallo: Contenido de texto con información de error

Herramienta de descompresión (decompress)

Descomprime archivos ZIP locales al directorio especificado. Las rutas de entrada se validan antes de escribir, por lo que los archivos no pueden extraerse fuera de output mediante .. o rutas absolutas.

Parámetros:

  • input: Ruta del archivo ZIP
  • output: Ruta del directorio de salida
  • options: Opciones de descompresión (opcional)
    • password: Contraseña de descompresión
    • overwrite: Si sobrescribir archivos existentes (booleano)
    • createDirectories: Si crear directorios no existentes (booleano)

Devuelve:

  • Éxito: Contenido de texto con información del resultado de la descompresión
  • Fallo: Contenido de texto con información de error

Herramienta de información ZIP (getZipInfo)

Obtiene información de metadatos de archivos ZIP locales.

Parámetros:

  • input: Ruta del archivo ZIP
  • options: Opciones (opcional)
    • password: Contraseña de descompresión

Devuelve:

  • Éxito: Contenido de texto con información detallada del archivo ZIP, incluyendo:
    • Número total de archivos
    • Tamaño total
    • Tamaño comprimido
    • Relación de compresión
    • Información detallada de cada archivo
  • Fallo: Contenido de texto con información de error

Herramienta de prueba (echo)

Devuelve el mensaje de entrada para probar si el servicio funciona correctamente.

Parámetros:

  • message: Mensaje a devolver

Devuelve:

  • Contenido de texto que contiene el mensaje de entrada y la marca de tiempo actual

Ejemplos

Ejemplos de llamada a herramientas usando el 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!",
});

Contacto