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
- Claude Client: https://modelcontextprotocol.io/quickstart/user
- Raycast: requiere instalar el plugin de MCP
- Cursor: https://docs.cursor.com/context/model-context-protocol#configuring-mcp-servers
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 salidaoptions: Opciones de compresión (opcional)level: Nivel de compresión (0-9, por defecto es 5)password: Protección con contraseñaencryptionStrength: 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 ZIPoutput: Ruta del directorio de salidaoptions: Opciones de descompresión (opcional)password: Contraseña de descompresiónoverwrite: 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 ZIPoptions: 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
- Correo electrónico: gz7gugu@qq.com
- Blog: https://7gugu.com