Ziplark について
Ziplarkは、デスクトップアプリ、コマンドラインツール、MCPサーバーとして利用できるアーカイブツールです。一般的な形式の読み取りとZIP、7z、tarの作成に対応し、RARの分割ボリューム処理やアーカイブ検査、大規模な一覧のページ分割と絞り込みも備えます。
主な機能
- 01ZIP、RAR、7z、tar、ISOの読み取り
- 02ZIP、7z、tarアーカイブの作成
- 03暗号化ZIPと7zへの対応
- 04整合性検査と安全な展開
- 05大規模な一覧のページ分割と絞り込み
活用シーン
- 01受け取ったアーカイブの閲覧と展開
- 02パスワード付きZIPバックアップの作成
- 03エージェントによるアーカイブの確認や操作
MCP 対応
MCPサーバーはstdio経由で、アーカイブ情報、一覧、整合性検査のツールを提供します。展開と作成のツールには--allow-writeが必要です。一覧は大規模アーカイブ向けにページ分割と絞り込みに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
無料、高速、クロスプラットフォーム対応のアーカイバーです。 ZIP、RAR(RAR5を含む)、7z、 tar、ISO、および一般的な圧縮 tar 形式を展開でき、ZIP(AES-256対応)、7z、 tar アーカイブを作成できます。ひとつの小さな Rust エンジンを、デスクトップアプリ、 CLI、MCP サーバーの3つの方法で操作できます。
インストール
# 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、および CLI アーカイブ)。
| 読み込み/展開 | 作成 | 暗号化 | |
|---|---|---|---|
| ZIP | ✅ | ✅ | AES-256(ZipCrypto の読み込みに対応) |
| 7z | ✅ | ✅ | AES-256 |
| RAR / RAR5(マルチボリューム、SFXを含む) | ✅ | — | 暗号化されたアーカイブを読み込み可能。暗号化ヘッダーも含む |
| tar | ✅ | ✅ | — |
| tar.gz / .bz2 / .xz / .zst / .lz4 | ✅ | ✅ | — |
| gz / bz2 / xz / zst / lz4(単一ストリーム) | ✅ | ✅ | — |
| ISO 9660 / Joliet(ディスクイメージ) | ✅ | — | — |
RAR と ISO は展開のみ対応です。RAR の圧縮形式はプロプライエタリであり、ISO はディスクイメージのコンテナです(依存関係のない独自パーサーで ISO 9660 + Joliet を読み込みます)。それ以外の形式は、読み込みだけでなく作成にも対応しています。
RARを適切に扱う
RAR形式は、分割されたボリュームでダウンロードされ、ソリッド圧縮され、ときにはボリュームが1つ欠けた状態で届くことがよくあります。そのため、単なるチェック項目ではなく、第一級のサポート対象として扱います。
- ボリュームセットを1つのアーカイブとして扱います。
movie.part03.rarや、旧形式のmovie.r01を開くと、セット全体が対象になります。セット内のどのファイルを指定しても最初のボリュームが特定され、各パートが一覧表示され、複数のボリュームにまたがるエントリも完全な形で取り出せます。最初のボリュームがmovie.r01ではなくmovie.rarになる旧形式を含め、どちらの命名方式にも対応しています。 - 不足しているボリュームを明示します。 Ziplarkは一般的なエラーを返すのではなく、次に必要なファイル名を伝え、途中で処理を止めるのではなく、書き込みを開始しません。
- 破損していても取り出せます。
--keep-broken(アプリでは「読み取り可能なものを抽出」)を使うと、破損または不完全なアーカイブから、破損していないファイルをすべて取り出し、失敗したエントリと不完全な状態で書き出されたエントリを正確に報告します。検証では破損したエントリをすべて報告するため、どのファイルを再ダウンロードすればよいかが分かります。 - 検証では何も書き込みません。 各エントリを解凍してバイト列を破棄することで整合性を確認します。多くのツールが行うように、アーカイブ全体を一時ディレクトリに展開することはありません。
- メタデータが保持されます。 アクセス権(実行可能ファイルは実行可能なままです)、100ナノ秒単位のRAR5タイムスタンプ、シンボリックリンク、エントリごとの圧縮サイズ、ソリッド圧縮・リカバリレコード・ロックの各フラグ、アーカイブコメントが保持されます。
- 暗号化されたヘッダーに対応します。 ファイル名が暗号化されたアーカイブ(
rar -hp)も、ほかのアーカイブと同様に、パスワードを使って一覧表示や展開ができます。 - 自己解凍アーカイブを開けます。 スタブの後ろにRARデータを含む
.exeも、RARアーカイブとして読み取ります。 - 必要なファイルだけを取り出せます。
--exact(またはアプリで行を選択)を使うと、パスに指定した文字列が含まれるすべてのエントリではなく、指定したエントリだけを正確に抽出します。
ZiplarkはlibunrarのC APIを直接使用します。ラッパークレートでは不十分だった理由については、formats/rar/raw.rsを参照してください(ラッパークレートではマルチボリュームの読み取りで範囲外アクセスが発生し、エントリの読み取り失敗でアーカイブハンドルが破棄され、構造体のレイアウトがライブラリのパック済みヘッダーと一致しないため、file_attr以降のすべてのフィールドが気付かないうちに誤読されます)。
Ziplarkを選ぶ理由
- 小さい。 サイズ最適化されたリリースプロファイル(
opt-level=z、LTO、シンボル削除、panic=abort)を使用しています。デスクトップアプリはOSのWebViewを使用し、Chromiumを同梱しません。 - 忠実。 アクセス権、更新日時、シンボリックリンクが展開後も保持されるため、展開したバイナリは引き続き実行でき、展開したディレクトリツリーもアーカイブ時の状態を保ちます。
- 安全。 展開パスはすべて単一のガードを通過します。エントリ名(
../や絶対パス)と実際のディスク上の状態の両方を検査するため、同じアーカイブ内の先行エントリによって作成されたシンボリックリンクや、すでに展開先に存在するシンボリックリンクを使って書き込み先をリダイレクトすることはできません。展開先ディレクトリの外に出るエントリはありません。 - エンジンは1つです。 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は作成時に適用されます。
右クリック(ファイルマネージャー)との連携
OS のファイルマネージャーのコンテキストメニューに、Ziplark でここに展開とZiplark で ZIP に圧縮を追加します。
ziplark shell-integration install # enable
ziplark shell-integration status # show what's installed
ziplark shell-integration uninstall # remove
プラットフォームごとの動作:macOS では Automator のクイックアクションを 2 つインストールします(Finder → 右クリック →
クイックアクション)。Windows では、アーカイブファイルの種類とファイル/フォルダーに対して、ユーザー単位(HKCU、管理者権限不要)のシェル動詞を追加します。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
stdio 経由の JSON-RPC を使用する Model Context Protocol サーバーです。読み取りツール
(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 向けのサーバーを 1 つのファイルにまとめています。Ziplark は公式 MCP レジストリに io.github.zhitongblog/ziplark として登録されているため、レジストリを読み取るクライアントは自動的に見つけられます。
MCP クライアントに登録します:
{
"mcpServers": {
"ziplark": {
"command": "/path/to/target/release/ziplark-mcp",
"args": ["--allow-write"]
}
}
}
大容量アーカイブでもコンテキストを圧迫しません
ziplark_list はページ分割に対応しています。offset から最大 limit 件(デフォルトは 200 件)を返し、アーカイブの実際の total_entries も常に併せて返します。そのため、20 万件のエントリを含むディスクイメージを一覧表示する場合も、小さな 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 にはパスパターンを指定します。* または ? を含む場合はグロブとして、それ以外は部分文字列として照合され、ページ分割の前に適用されます。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
