Ziplark

io.github.zhitongblog由 GitHub 帳號 zhitongblog 發布v0.3.0更新於 Oct 24, 2026

Archive server: extract & create ZIP, 7z, tar, gz/xz/zst; read RAR/RAR5 & ISO. AES-256, safe.

已驗證STDIO僅桌面檔案與儲存開發者工具

概覽

AI 產生的概覽

Ziplark 的本機 MCP 伺服器,讓助理檢視、列出、驗證並解壓縮壓縮檔(ZIP、RAR、7z、tar、ISO),以及建立 ZIP、7z 與 tar 壓縮檔。

可以做什麼
  • 檢視、列出與驗證壓縮檔:讀取中繼資料、分頁瀏覽項目並可依路徑篩選、檢查完整性且不寫入任何檔案。
  • 解壓縮壓縮檔:將 ZIP、RAR/RAR5、7z、tar、壓縮 tar 變體與 ISO 映像解壓縮到指定目錄。
  • 建立壓縮檔:從檔案與資料夾產生 ZIP(支援 AES-256)、7z 與 tar,可設定壓縮等級與選用密碼。
  • 處理大型或損壞的壓縮檔:分頁清單附目錄統計,並能從損壞或不完整的分割檔中取出可讀檔案。
適用情境
適合助理需要在使用者電腦上檢視或解開壓縮檔,或把檔案打包成壓縮檔的情境,使用者不必另開壓縮軟體。對 RAR 與 ISO 內容特別有用,也適合項目極多、完整清單會佔滿上下文的大型壓縮檔。
執行需求
以 stdio 方式在本機執行,可透過 MCP Bundle 安裝或從原始碼建置;桌面應用程式與命令列工具需另外安裝。除非啟動時開啟寫入旗標,解壓縮與建立等寫入工具無法使用。未宣告需要帳號、API 金鑰或環境變數。
安裝前請注意
解壓縮與建立會寫入磁碟檔案,可能覆寫或新增目標目錄中的資料,僅在需要時開啟寫入工具。壓縮檔可能設有密碼,加密壓縮檔的密碼由該伺服器處理。解壓縮路徑有防穿越保護,但仍應謹慎選擇目標目錄。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ziplark,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Ziplark — every archive, one small app]

[CI] [Release] [Downloads] [Stars] [License] [Website]

Free, fast, cross-platform archiver. Extracts ZIP, RAR (incl. RAR5), 7z, tar, ISO and the common compressed-tar variants; creates ZIP (with AES-256), 7z and tar archives. One small Rust engine, three ways to drive it: a desktop app, a CLI, and an MCP server.

Download · Website · Report a bug

Install

bash
# macOS — Homebrewbrew install --cask zhitongblog/tap/ziplark   # desktop appbrew install zhitongblog/tap/ziplark          # CLI + MCP (ziplark, ziplark-mcp)
powershell
# Windows — Scoop (CLI + MCP)scoop bucket add ziplark https://github.com/zhitongblog/scoop-bucketscoop install ziplark

Or grab a build for any platform from the releases page (macOS .dmg, Windows .msi/.exe, Linux .deb/.AppImage, and CLI archives).

Read / Extract / PreviewCreate / AppendEncryption
ZIP (incl. .zip.001, .z01+.zip, .jar, .apk, .ipa, .whl, .nupkg, .crx, .epub, .docx, .cbz)✅✅AES-256 (read ZipCrypto)
7z (incl. .7z.001 multi-volume, .cb7)✅✅AES-256
RAR / RAR5 (incl. multi-volume, SFX, .cbr)✅—reads encrypted, incl. encrypted headers
tar (.tar, .cbt)✅✅—
tar.gz / .bz2 / .xz / .zst / .lz4✅✅—
gz / bz2 / xz / zst / lz4 (single stream)✅✅ (create)—
ISO 9660 / Joliet (.iso)✅——
Debian & Unix ar (.deb, .udeb, .ipk, .ar, .a)✅——
RPM & CPIO (.rpm, .cpio, .cpio.gz/.xz/.zst/.bz2/.lz4)✅——
Microsoft Cabinet (.cab, Store + MSZIP)✅——

RAR, ISO, DEB/AR, RPM/CPIO and CAB are read/extract/preview formats — all parsed in memory-safe Rust (except RAR, which uses the official UnRAR C++ library). ZIP, 7z and tar variants support full creation and in-place append (ziplark add).

RAR, properly

RAR is the format people arrive with — a download split into volumes, packed solid, sometimes one volume short — so it gets first-class treatment rather than a checkbox:

  • A volume set is one archive. movie.part03.rar, or the older movie.r01, opens the whole set: any file of the set resolves to the first volume, the parts are listed, and an entry that spans volumes comes out whole. Both naming schemes are handled, including the legacy one whose first volume is movie.rar rather than movie.r01.
  • A missing volume is named. Ziplark says which file it needs next instead of failing with a generic error, and refuses to start writing rather than stopping half-way.
  • Damage is survivable. --keep-broken (in the app: "Extract what's readable") gets every intact file out of a damaged or incomplete archive and reports exactly which entries failed and which were written incomplete. Verifying reports every bad entry, so you know which file to re-download.
  • Verifying writes nothing. Integrity is checked by decompressing each entry and discarding the bytes — not, as a surprising number of tools do, by extracting the whole archive to a temporary directory.
  • Metadata survives. Permissions (an executable stays executable), 100-nanosecond RAR5 timestamps, symlinks as symlinks, per-entry compressed sizes, solid/recovery-record/lock flags, and the archive comment.
  • Encrypted headers work. An archive whose file names are encrypted (rar -hp) lists and extracts with a password like any other.
  • Self-extracting archives open. A .exe with a RAR payload behind the stub is read as the archive it is.
  • Pick single files out of it. --exact (and ticking rows in the app) extracts exactly the entries you name, rather than everything whose path happens to contain the text.

Ziplark drives libunrar's C API directly — see formats/rar/raw.rs for why the wrapper crates were not enough (multi-volume reads out of bounds there, a failed entry throws away the archive handle, and the struct layouts do not match the library's packed headers, which silently mis-reads every field past file_attr).

Why Ziplark

  • Small. Size-optimized release profile (opt-level=z, LTO, stripped, panic=abort). The desktop app uses the OS webview (no bundled Chromium).
  • Faithful. Permissions, modification times and symlinks survive the round trip, so an extracted binary still runs and an extracted tree still looks like the one you archived.
  • Safe. Every extraction path is funneled through a single guard, and it checks both ways out: the entry name (../, absolute paths) and what is actually on disk, so a symlink — planted by an earlier entry of the same archive or sitting in the destination already — can't be used to redirect a write. No entry can escape the destination directory.
  • One engine. The GUI, CLI and MCP server are thin shells over ziplark-core; whatever the CLI does, the app does identically.

Repository layout

crates/ziplark-core   the archive engine (all formats, the security guard)crates/ziplark-cli    the `ziplark` command-line toolcrates/ziplark-mcp    the MCP server (drive Ziplark from any LLM)src-tauri           the Tauri 2 desktop app (Rust commands)ui                  the desktop frontend (vanilla HTML/CSS/JS)

1. Desktop app

bash
# dev run (opens the window)cargo tauri dev            # or: cargo run -p ziplark-gui
# build a release .app + .dmg (macOS), .exe/.msi (Windows), AppImage/deb (Linux)cargo tauri build

Drag an archive onto the window to inspect & extract it, or switch to Create to drag in files/folders, pick a format + compression level (and optional password), and save.

2. CLI — ziplark

bash
cargo build --release -p ziplark-cli      # binary at target/release/ziplark
ziplark list    movie.rarziplark cat     repo.tar.gz src/main.rsziplark extract photos.zip -o ./out --smartziplark create  backup.tar.zst ./src ./README.md --level bestziplark add     backup.tar.zst ./CHANGELOG.mdziplark create  secret.zip ./private --password hunter2ziplark test    download.7zziplark info    mystery.bin

Every command takes --json for scripting. --include <PAT> filters entries on extract; --smart avoids tarbombs and double-nesting; --level store|fast|default|best and --password apply to create/add.

Right-click (file-manager) integration

Add Extract here with Ziplark and Compress to ZIP with Ziplark to your OS file manager's context menu:

bash
ziplark shell-integration install      # enableziplark shell-integration status       # show what's installedziplark shell-integration uninstall    # remove

Per platform: macOS installs two Automator Quick Actions (Finder → right-click → Quick Actions); Windows adds per-user (HKCU, no admin) shell verbs on archive file types and on files/folders; Linux installs KDE service menus and Nautilus scripts. Every entry just calls the ziplark CLI (extract-here / compress-zip), so it follows wherever the binary lives. Both helper commands are also usable directly:

bash
ziplark extract-here movie.zip         # → ./movie/ next to the archiveziplark compress-zip ./photos ./a.txt  # → ./Archive.zip next to them

3. MCP server — ziplark-mcp

A Model Context Protocol server (JSON-RPC over stdio). Read tools (ziplark_info, ziplark_list, ziplark_read, ziplark_test) are always available; the write tools (ziplark_extract, ziplark_create, ziplark_add) require --allow-write.

bash
cargo build --release -p ziplark-mcp

Or install the MCP Bundle — ziplark-mcp-<version>.mcpb on the releases page, one file carrying the server for macOS, Windows and Linux. Ziplark is listed in the official MCP registry as io.github.zhitongblog/ziplark, so clients that read the registry can find it on their own.

Register it with an MCP client:

json
{  "mcpServers": {    "ziplark": {      "command": "/path/to/target/release/ziplark-mcp",      "args": ["--allow-write"]    }  }}

Big archives don't flood the context

ziplark_list is paged. It returns at most limit entries (default 200) starting at offset, always alongside the archive's true total_entries, so listing a 200 000-entry disc image costs the same as listing a small ZIP:

jsonc
{ "name": "ziplark_list", "arguments": { "path": "disc.iso", "limit": 200 } }// -> { "total_entries": 203411, "returned": 200, "next_offset": 200,//      "truncated": true, "top_level": [ { "prefix": "usr/share", "entries": 88120 }, … ] }

When the result is truncated it also carries top_level — entry counts grouped by directory, descending past a single root — so a client can see the shape of a huge archive without paging through it. To go straight to what you want, filter instead of paging: include takes path patterns, matched as globs when they contain * or ? and as substrings otherwise, and applies before paging. dirs selects only files or only directories.

jsonc
{ "name": "ziplark_list",  "arguments": { "path": "disc.iso", "include": ["*/etc/*.conf"], "dirs": false } }

Building & testing

bash
cargo test                 # engine round-trip + security testscargo build --release      # all crates, size-optimized

License

MIT © 2026 doaipm — a doaipm project. See LICENSE.

Ziplark bundles third-party open-source components under their own licenses, acknowledged in THIRD_PARTY_LICENSES.md. Note in particular that RAR extraction uses the UnRAR library, which is under the UnRAR license (not MIT) and may not be used to re-create the RAR compression algorithm.

來源:README.md,提交 8618a04

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 18, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分