
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.
概覽
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 中
- 開啟 儀表板中的 Ziplark,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
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.
Install
Or grab a build for any platform from the releases page
(macOS .dmg, Windows .msi/.exe, Linux .deb/.AppImage, and CLI archives).
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 oldermovie.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 ismovie.rarrather thanmovie.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
.exewith 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
1. Desktop app
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
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:
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:
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.
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:
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:
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.
Building & testing
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版本歷史
1- v0.3.0最新Sep 18, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分