Skip to main content
Glama
Zip Archive, Media Packer & Unpacker

Zip Archive, Media Packer & Unpacker

by snorbik-ai
README.md
# MCP #14 — Zip Archive, Media Packer & Unpacker

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Model Context Protocol](https://img.shields.io/badge/MCP-2024--11--05-emerald.svg)](https://modelcontextprotocol.io/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests Passing](https://img.shields.io/badge/tests-6%2F6%20passed-brightgreen.svg)](#tests)

Serveur MCP officiel et SDK universel pour décompresser, compresser et inspecter les archives ZIP en toute sécurité.
Conçu pour les agents autonomes, **Cursor IDE**, **Anthropic Claude**, et les pipelines de traitement multimédia.

## Points Forts & Garanties

- 🛡️ **Sécurité Anti Zip-Slip Étanche :** Empêche strictement toute tentative d'évasion de répertoire (`Path.relative_to`).
- 📁 **Support Natif des Chemins Longs Windows :** Contourne la limitation historique des 260 caractères (`\\?\`).
- 🖼️ **Inspection Binaire Multi-Formats (Zéro Dépendance) :** Extrait automatiquement les dimensions (largeur/hauteur) des images PNG, GIF, JPEG et WEBP sans librairie externe.
- 📦 **Packing Sans Pollution :** Compresse les dossiers vers un fichier `.zip` en excluant automatiquement `node_modules`, `.git`, `.venv`, `.pytest_cache`.
- ⚡ **Architecture Hybride Tri-Canal Snorbik :**
  1. **Porte 1 (MCP stdio) :** Serveur JSON-RPC 2.0 pour IDE et agents IA.
  2. **Porte 2 (CLI) :** Commandes terminal pour scripts bash et PowerShell.
  3. **Porte 3 (SDK In-Process) :** Façade Python in-memory pour FastAPI ou PySide6.

## Outils Exposés via le Protocole MCP

| Nom de l'outil | Description | Paramètres |
| :--- | :--- | :--- |
| `zip_smart_auto_extract` | Décompresse dans un sous-dossier dédié propre et produit le manifeste. | `zip_path`, `base_destination` |
| `zip_packer_create` | Compresse un dossier vers un `.zip` en excluant les dossiers lourds. | `source_path`, `output_zip_path` |
| `zip_unpacker_extract` | Décompression ciblée avec écrasement configurable et filtrage d'extensions. | `zip_path`, `destination_dir`, `overwrite` |
| `zip_unpacker_inspect` | Liste les fichiers, tailles et extensions sans décompresser sur le disque. | `zip_path` |
| `zip_unpacker_ping` | Sonde de santé et de réactivité. | `{}` |

## Installation & Démarrage Rapide

### 1. Configuration dans Cursor ou Claude Desktop
Ajoutez le serveur dans votre fichier `mcp.json` :

```json
{
  "mcpServers": {
    "zip-archive-media-unpacker": {
      "command": "python",
      "args": ["path/to/mcp-14-zip-archive-media-unpacker/canal_mcp/mcp_server.py"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}
```

### 2. Utilisation en Ligne de Commande (CLI)
```bash
# Dézipper automatiquement
python canal_sdk_cli/cli.py auto-extract --zip mon_archive.zip --dest ./output

# Inspecter le contenu
python canal_sdk_cli/cli.py inspect --zip mon_archive.zip

# Zipper un dossier
python canal_sdk_cli/cli.py pack --src ./mon_projet --zip ./livrable.zip
```

### 3. Utilisation en Python (SDK)
```python
from canal_sdk_cli.sdk import ZipArchiveMediaUnpackerSDK

sdk = ZipArchiveMediaUnpackerSDK()
result = sdk.auto_extract("archive.zip", "./dossier_cible")
print(f"Fichiers extraits : {result.total_extracted}")
```

## Licence
Distribué sous licence **MIT**. Développé avec rigueur par **SNORBIK AI**.