关于 Ziplark
Ziplark 是提供桌面应用、命令行工具和 MCP 服务的归档工具,可读取多种常见压缩包并创建 ZIP、7z 和 tar。它支持 RAR 分卷处理、归档安全检查,并可通过分页和筛选控制大型目录列表。
主要功能
- 01读取 ZIP、RAR、7z、tar 和 ISO
- 02创建 ZIP、7z 与 tar 归档
- 03支持加密 ZIP 和 7z
- 04检查归档完整性并安全解压
- 05分页、筛选大型归档目录
适用场景
- 01浏览并解压收到的压缩包
- 02创建带密码的 ZIP 备份
- 03让 Agent 检查或操作归档文件
MCP 相关
MCP 服务通过 stdio 提供归档信息、列表和完整性检查工具;解压与创建工具需启用 --allow-write。列表支持分页和筛选,以处理大型归档。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
免费、快速、跨平台的归档工具。 可解压 ZIP、RAR(包括 RAR5)、7z、 tar、ISO 和常见的压缩 tar 格式;可创建 ZIP(支持 AES-256)、7z 和 tar 归档。一个小巧的 Rust 引擎,三种使用方式:桌面应用、 命令行工具和 MCP 服务。
安装
# macOS — Homebrew
brew install --cask zhitongblog/tap/ziplark # desktop app
brew install zhitongblog/tap/ziplark # CLI + MCP (ziplark, ziplark-mcp)
# Windows — Scoop (CLI + MCP)
scoop bucket add ziplark https://github.com/zhitongblog/scoop-bucket
scoop install ziplark
也可以从发布页面获取适用于任何平台的构建版本
(macOS .dmg、Windows .msi/.exe、Linux .deb/.AppImage,以及命令行工具压缩包)。
| 读取 / 解压 | 创建 | 加密 | |
|---|---|---|---|
| ZIP | ✅ | ✅ | AES-256(读取 ZipCrypto) |
| 7z | ✅ | ✅ | AES-256 |
| RAR / RAR5(包括分卷、自解压文件) | ✅ | — | 可读取加密内容,包括加密文件头 |
| tar | ✅ | ✅ | — |
| tar.gz / .bz2 / .xz / .zst / .lz4 | ✅ | ✅ | — |
| gz / bz2 / xz / zst / lz4(单流) | ✅ | ✅ | — |
| ISO 9660 / Joliet(光盘映像) | ✅ | — | — |
RAR 和 ISO 仅支持解压:RAR 的压缩格式为专有格式;ISO 是光盘映像容器(我们使用自有的无依赖解析器读取 ISO 9660 + Joliet)。 其他格式既可创建,也可读取。
正确处理 RAR
人们带来的文件常常是 RAR 格式——分卷下载、固实压缩,有时还缺少一个分卷——因此它得到了一等支持,而不只是一个勾选项:
- 一组分卷就是一个归档。
movie.part03.rar,或较旧的movie.r01,都能打开整组分卷:无论指定该组中的哪个文件,都会定位到第一个分卷;分卷会列出,跨分卷的条目也会完整提取。 两种命名方案都能处理,包括第一卷名为movie.rar而非movie.r01的旧式方案。 - 会指出缺失的分卷。 Ziplark 会说明接下来需要哪个文件,而不是只报一个通用错误;并且会在开始写入前拒绝操作,而不是写到一半才停止。
- 损坏后仍可恢复。
--keep-broken(在应用中为“提取可读取的内容”)会从损坏或不完整的归档中提取所有完好的文件,并准确报告哪些条目提取失败、哪些条目写入不完整。 验证时会报告每一个损坏的条目,让你知道需要重新下载哪个文件。 - 验证不会写入文件。 完整性检查通过解压每个条目并丢弃字节来完成——而不是像不少工具那样,将整个归档解压到临时目录。
- 元数据得以保留。 权限(可执行文件仍可执行)、100 纳秒精度的 RAR5 时间戳、符号链接(仍为符号链接)、每个条目的压缩大小、固实压缩/恢复记录/锁定标志,以及归档注释。
- 支持加密文件头。 文件名经过加密的归档(
rar -hp)也能像其他归档一样列出和提取,只需提供密码。 - 可打开自解压归档。 带有 RAR 数据载荷的
.exe会直接作为归档读取。 - 从中提取单个文件。
--exact(以及在应用中勾选相应行)只会提取你指定的条目,而不是所有路径中恰好包含指定文本的条目。
Ziplark 直接调用 libunrar 的 C API——有关包装 crate 为何不够用,请参阅
formats/rar/raw.rs(多卷读取会越界、条目读取失败会丢弃归档句柄,而且结构体布局与库的紧凑头部不匹配,导致 file_attr 之后的所有字段都会被静默误读)。
为什么选择 Ziplark
- 精简。 采用优化体积的发布配置(
opt-level=z、LTO、剥离符号、panic=abort)。桌面应用使用操作系统的 WebView(不捆绑 Chromium)。 - 忠实还原。 权限、修改时间和符号链接在整个往返过程中都会保留,因此提取出的二进制文件仍可运行,提取出的目录树也与归档时一致。
- 安全。 所有提取路径都经过同一个防护机制,并从两个方面进行检查:条目名称(
../、绝对路径)以及磁盘上的实际情况。因此,符号链接——无论是由同一归档中较早的条目创建,还是已存在于目标位置——都无法用于重定向写入。没有任何条目能逃出目标目录。 - 统一引擎。 GUI、CLI 和 MCP 服务都是基于
ziplark-core的轻量封装;CLI 能做什么,应用就能以相同方式做到。
仓库结构
crates/ziplark-core the archive engine (all formats, the security guard)
crates/ziplark-cli the `ziplark` command-line tool
crates/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. 桌面应用
# 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
将归档拖到窗口中即可查看并提取;也可以切换到创建,拖入文件/文件夹,选择格式和压缩级别(以及可选密码),然后保存。
2. CLI — ziplark
cargo build --release -p ziplark-cli # binary at target/release/ziplark
ziplark list movie.rar
ziplark extract photos.zip -o ./out
ziplark create backup.tar.zst ./src ./README.md --level best
ziplark create secret.zip ./private --password hunter2
ziplark test download.7z
ziplark info mystery.bin
每条命令都支持用于脚本处理的 --json。提取时,--include <PAT> 可筛选条目;创建时,--level store|fast|default|best 和 --password 可设置相应选项。
右键(文件管理器)集成
将 使用 Ziplark 解压到此处 和 使用 Ziplark 压缩为 ZIP 添加到操作系统文件管理器的上下文菜单中:
ziplark shell-integration install # enable
ziplark shell-integration status # show what's installed
ziplark shell-integration uninstall # remove
各平台的集成方式:macOS 会安装两个 Automator 快速操作(Finder → 右键 → 快速操作);Windows 会在归档文件类型以及文件/文件夹上添加当前用户(HKCU,无需管理员权限)的 Shell 动作;Linux 会安装 KDE 服务菜单和 Nautilus 脚本。每个条目都会调用 ziplark CLI(extract-here / compress-zip),因此无论二进制文件位于何处都能正常工作。这两个辅助命令也可以直接使用:
ziplark extract-here movie.zip # → ./movie/ next to the archive
ziplark compress-zip ./photos ./a.txt # → ./Archive.zip next to them
3. MCP 服务 — ziplark-mcp
一个基于标准输入/输出的模型上下文协议服务(JSON-RPC)。读取工具(ziplark_info、ziplark_list、ziplark_test)始终可用;写入工具(ziplark_extract、ziplark_create)需要 --allow-write。
cargo build --release -p ziplark-mcp
或者安装 MCP Bundle — 从发布页面获取 ziplark-mcp-<version>.mcpb,这是一个包含 macOS、Windows 和 Linux 版服务的文件。Ziplark 已列入官方 MCP 注册表,名称为 io.github.zhitongblog/ziplark,因此读取该注册表的客户端可以自行找到它。
在 MCP 客户端中注册:
{
"mcpServers": {
"ziplark": {
"command": "/path/to/target/release/ziplark-mcp",
"args": ["--allow-write"]
}
}
}
大型归档不会塞满上下文
ziplark_list 支持分页。每次最多返回 limit 个条目(默认值为 200),从 offset 开始,同时始终附带归档中实际的 total_entries。因此,列出含有 200 000 个条目的光盘映像,所需开销与列出一个小型 ZIP 相同:
{ "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 }, … ] }
结果被截断时,还会附带 top_level — 按目录分组的条目计数,向下展开至单个根目录 — 让客户端无需分页浏览整个大型归档,就能了解其结构。要直接找到所需内容,可以使用筛选,而不是分页:include 接受路径模式;模式包含 * 或 ? 时按 glob 匹配,否则按子字符串匹配,并且会在分页前应用。dirs 用于仅选择文件或仅选择目录。
{ "name": "ziplark_list",
"arguments": { "path": "disc.iso", "include": ["*/etc/*.conf"], "dirs": false } }
构建与测试
cargo test # engine round-trip + security tests
cargo build --release # all crates, size-optimized
许可证
MIT © 2026 doaipm — doaipm 项目。请参阅 LICENSE。
Ziplark 捆绑了采用各自许可证的第三方开源组件,详情见 THIRD_PARTY_LICENSES.md。特别请注意,RAR 解压使用 UnRAR 库,该库采用 UnRAR 许可证(而非 MIT),且不得用于重新创建 RAR 压缩算法。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
