AgentParcel MCP Server
AgentParcel MCP Server lets you split, inspect, verify, repair, and rebuild large files or part sets for AI-agent handoff.
Inspect zips, parts, folders, and files to preview sizes, entry counts, estimated part counts, and part-set completeness.
Split
.zipfiles into standalone zip parts under size caps or platform presets.Byte-split any file into numbered raw parts, with optional zlib compression and AES-256-GCM password encryption.
Zip files or folders and split them into parts in one step.
Verify part sets and identify missing or corrupt parts.
Regenerate only missing or corrupt parts from the original file.
Rebuild originals from parts with SHA-256 verification, and optionally extract rebuilt zips.
Create
AgentParcel-apps.zipso a recipient can rebuild without already having AgentParcel.Use absolute paths, avoid overwrites, and optionally restrict access with configured sandbox roots.
Provides a Discord size preset that splits files into parts under Discord's free 25 MB (24,000,000 byte) upload cap, so a large file can be handed off to other agents through Discord.
Provides a github-release preset that caps parts under GitHub's 2 GB per-file release-asset limit, enabling large files to be split into uploadable parts for a GitHub release, in addition to hosting the project's downloads.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentParcel MCP Server split report.zip using the chatgpt-dot preset and verify the parts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Windows users on 3.4.0 or 3.5.0 should update to 3.5.1, which fixes the "Argument types do not match" split error and the false "corrupt part" rebuild results, confirmed working on Windows.
AgentParcel lets AI agents hand off large files to other agents and cloud agents that enforce strict per-file upload limits. It splits a zip or a folder into size-capped zip parts, or byte-splits any single file (PDF, video, dataset, CAD, and so on) into numbered raw parts, stores a SHA-256, and rebuilds the original on the other side. Parts made on Windows, macOS, and Linux rebuild on any of the three.
It ships three ways:
Apps for Windows, macOS, and Linux: a window, plus a command line.
A stdio MCP server (Python standard library only, plus optional
cryptographywhen parts are encrypted) with toolsinspect,split_zip,split_any_file,split_files,verify,regenerate_parts,rebuild, andmake_apps_bundle.A rebuild kit. With "Include AgentParcel apps" left on, the split folder also gets
AgentParcel-apps.zip: the Windows, Mac, and Linux programs, a short "how to rebuild" note, and the license. Send it with the parts so the receiving machine has the program.
The default cap is 19.5 MiB per part (19.5 × 1024 × 1024 = 20,447,232 bytes). When an upload limit is quoted in decimal megabytes — a "20 MB" cap that means 20,000,000 bytes — use 19 MB, or pass an exact max_bytes. Zip parts are ordinary zips and open on their own. A byte-split part is a raw slice of the original file. Rebuild checks SHA-256, and it names any missing or corrupt part before it writes anything.
3.5.1 fixes Windows zip splitting ("Argument types do not match") and byte-part rebuilds that reported every part corrupt. 3.5.0 adds presets, re-send of missing parts, optional zlib and AES-256-GCM, and a pip-installable package. 3.3.x and 3.4.0 part sets still verify and rebuild. With compression and encryption left off, a byte split is the same raw parts as 3.4.0.
Size presets pick the part cap:
chatgpt-dot(19,000,000 bytes, under a 20,000,000 byte ChatGPT Dot cap),chat-512(500,000,000 under 512,000,000; products differ),discord(24,000,000 under the free 25 MB cap; Nitro is higher and is not this preset),email(24,000,000 under a common 25 MB mailbox cap),github-release(1,900,000,000 under GitHub's 2 GB per-file release limit), andcustom(default 19.5 MiB). Each cap sits under the advertised limit. Those limits can change; confirm the current one before a large send.Re-send missing parts. Verify names what is missing or corrupt. Resend in the window, or the MCP tool
regenerate_parts, rewrites only those parts from the original file. Parts that already match are left untouched. Rebuild says which parts are still needed.Optional compression and encryption, both off by default. Zlib (one part at a time) is undone by
rebuild.pywith the Python standard library. Password encryption is AES-256-GCM with scrypt, from thecryptographypackage (pip install agentparcel[crypto]). The manifest records the algorithm, salt, and per-part nonce. It never records the password.rebuild.pycannot decrypt an encrypted set and does not write a file; use AgentParcel and give the same password.Install with pip (not uploaded in this release):
pip install agentparcelprovidesagentparcelandagentparcel-mcp.
3.4.0, still in this release: split any file, verify, HOW-TO-REBUILD.txt plus rebuild.py, and Stop (Cancelled, and the partial output from that run is removed).
Why it exists
I made AgentParcel with Grok Bot because ChatGPT Dot has a 20 MB file limit, other chats have a 512 MB limit, and so on. This is how I hand a large file to another agent, or to a cloud agent, when the chat will not take the whole thing.
— Chris Kalkowski
During development the working name was ZipSplitter. AgentParcel is an independent project. It is not affiliated with, endorsed by, or derived from any other project named ZipSplitter, and it does not use any of that project's code. See About the name.
Related MCP server: pulr
Downloads
Get the tested packages from the Releases page. Current release: AgentParcel 3.5.1.
Package | Platform |
Windows 10/11. The app is PowerShell 5.1, which Windows already includes. Python is only for the MCP server. | |
Linux with Python 3.9+ (3.15 recommended). The window needs Tk; without it the app runs in text mode. | |
macOS 11+ with Python 3.9+. Community-tested/beta. Mac users: if you hit an issue or can help test, reach out via chriskalkowski.com. | |
Checksums for the three zips. |
137545fb572d11adeb901b788d762f1a91b8786ba8d3342d85e7bd9013d9d89c AgentParcel-3.5.1-windows.zip
5d49b8f797f23dabee07c7a0f9d35e58bdff95501e9bec0022cd4aca23fb3b31 AgentParcel-3.5.1-linux.zip
b218ec11acb493887a07acced172cb693bd418ba75fcc94e0c93515cfd6377bc AgentParcel-3.5.1-macos.zipCheck a download with sha256sum -c SHA256SUMS.txt (Linux), shasum -a 256 -c SHA256SUMS.txt (macOS), or Get-FileHash .\AgentParcel-3.5.1-windows.zip (Windows PowerShell).
Quick start
Extract the zip first. Do not run the app from inside the archive.
Windows
Double-click
AgentParcel.bat.Split: choose a
.zip, set the size limit, and click Split. Parts go to<name>_split\. Leave "Include AgentParcel apps" ticked when the receiver needs the program. For any other file, or with "Byte-split this file", the parts are raw slices of that file (<filename>_split\).Verify, then Rebuild. Verify names missing and corrupt parts and writes nothing. Rebuild puts the original back.
Stop cancels the job and reports Cancelled.
If Windows shows "Windows protected your PC", click More info, then Run anyway. These are plain text scripts.
powershell -ExecutionPolicy Bypass -File AgentParcel.ps1 -NoGui -LimitMB 19.5 "C:\path\big.zip"
powershell -ExecutionPolicy Bypass -File AgentParcel.ps1 -NoGui -SplitBytes "C:\path\movie.mp4"
powershell -ExecutionPolicy Bypass -File AgentParcel.ps1 -Verify "C:\path\big_split"
powershell -ExecutionPolicy Bypass -File AgentParcel.ps1 -Join "C:\path\big_split" -OutputDir "C:\out"You can also drag a zip or a part onto AgentParcel.bat. For the MCP server, double-click Install-Python-for-AgentParcel.bat. It installs Python 3.15 for your user (no admin), smoke-tests the server, and writes MCP-config-snippets.txt with your real paths. It does not edit agent configs.
Linux
unzip AgentParcel-3.5.1-linux.zip && cd AgentParcel-3.5.1-linux
./install-deps.sh # python3 and Tk, via apt/dnf/yum/pacman/zypper; it asks before sudo
./agentparcel.sh # opens the windowIf a script is not executable (it was copied through Windows, for example): chmod +x *.sh *.py mcp/*.py.
python3 agentparcel.py --no-gui --limit-mb 19.5 /path/big.zip
python3 agentparcel.py --join /path/big_split --output-dir /tmp/outagentparcel.desktop is an optional menu entry. Edit its Exec= path, then copy it to ~/.local/share/applications/.
macOS
Community-tested/beta. It is the same Python program as the Linux release. Finder, Gatekeeper, the Tk window, and install-python-macos.sh still need a pass on Mac hardware. Mac users: if you hit an issue or can help test, reach out via chriskalkowski.com. TESTING-CHECKLIST.md inside the zip is the list to work through.
Double-click the zip in Finder and move the folder somewhere such as Documents.
In Terminal:
cd ~/Documents/AgentParcel-3.5.1-macos
xattr -dr com.apple.quarantine . # optional: skips the "unidentified developer" prompts
./install-python-macos.sh --check # or without --check, to install Python 3.15Double-click
AgentParcel.command. The first time, macOS may block it: right-click, Open, then Open. If it says permission denied:chmod +x AgentParcel.command agentparcel.py mcp/*.py.
Use Python from python.org (/usr/local/bin/python3) or Homebrew (/opt/homebrew/bin/python3 on Apple silicon). Apple's /usr/bin/python3 stub is the wrong one, and its Tk can look broken.
python3 agentparcel.py --no-gui --limit-mb 19.5 ~/Downloads/big.zip
python3 agentparcel.py --join ~/Downloads/big_split --output-dir ~/DesktopMCP server
mcp/agentparcel_mcp.py speaks Model Context Protocol over stdio. It needs Python 3.9 or newer (3.15 recommended; 3.11 or newer for archives over 4 GB) and the agentparcel.py engine in the same folder. No extra packages.
Tool | What it does |
| Read-only. Sizes, entry count, estimated parts. For a part: set id, part n of N, and which parts are missing. |
| Split a |
| Byte-split any one file. Optional |
| Zip files and folders, then split them, in one step. |
| Read-only. Names missing and corrupt parts. |
| Rewrite only the missing or corrupt parts from the original file. |
| Rebuild the original from a folder, one part, or a list of parts. SHA-256 checked. Says which parts are still needed. |
| Write |
Paths must be absolute. The server never overwrites or deletes a file; a name that is taken gets (2). An agent receives the apps bundle only when it passes include_apps=true.
Optional sandbox: set AGENTPARCEL_MCP_ROOTS to the folders the server may read and write (; on Windows, : on Mac and Linux). ZIPSPLITTER_MCP_ROOTS is still accepted when AGENTPARCEL_MCP_ROOTS is unset. That fallback comes from our own development builds, not from any other project named ZipSplitter. See About the name. Remove env from a snippet to allow every path.
Big splits can take minutes. Codex CLI's tool_timeout_sec defaults to 60; the snippet below sets 1800. For Claude Code, set MCP_TOOL_TIMEOUT=1800000 (milliseconds) before starting it.
Each release zip has mcp/README-mcp.txt with snippets filled in for that platform. Replace YOU with your home folder, and on Windows prefer the full path of a real python.exe (not the Microsoft Store shortcut). Install-Python-for-AgentParcel.bat writes those paths for you.
Cursor — ~/.cursor/mcp.json, or <project>/.cursor/mcp.json. On Windows the file is %USERPROFILE%\.cursor\mcp.json.
{
"mcpServers": {
"agentparcel": {
"command": "/usr/bin/python3",
"args": ["/home/YOU/AgentParcel-3.5.1-linux/mcp/agentparcel_mcp.py"],
"env": { "AGENTPARCEL_MCP_ROOTS": "/home/YOU" }
}
}
}Once the package is on PyPI, an MCP client can start it without a checkout. uvx runs the script named agentparcel-mcp from the agentparcel package. Encryption needs the crypto extra.
{
"mcpServers": {
"agentparcel": {
"command": "uvx",
"args": ["--from", "agentparcel", "agentparcel-mcp"]
}
}
}pipx run agentparcel-mcp is the same idea after pipx install agentparcel. pip install agentparcel puts agentparcel and agentparcel-mcp on PATH. pip install "agentparcel[crypto]" adds AES-256-GCM. This release is packaged and tested locally. It has not been uploaded. To publish, build the sdist and wheel (python -m build) and upload them with twine and a PyPI API token (python -m twine upload dist/agentparcel-*.tar.gz dist/agentparcel-*.whl). Do not commit the token.
macOS uses /usr/local/bin/python3 (python.org) or /opt/homebrew/bin/python3 (Homebrew), and a path under /Users/YOU/AgentParcel-3.5.1-macos/mcp/. Windows uses the Python 3.15 python.exe and a path such as C:\\Users\\YOU\\AgentParcel-3.5.1-windows\\mcp\\agentparcel_mcp.py.
Claude Desktop — merge the same mcpServers object into the config, then restart the app.
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux: there is no official Claude Desktop build. Use Claude Code, Cursor, or Codex CLI.
Claude Code (once, for every project):
claude mcp add agentparcel --scope user --env AGENTPARCEL_MCP_ROOTS="$HOME" -- \
/usr/bin/python3 "$HOME/AgentParcel-3.5.1-linux/mcp/agentparcel_mcp.py"Codex CLI — ~/.codex/config.toml (on Windows, %USERPROFILE%\.codex\config.toml):
[mcp_servers.agentparcel]
command = "/usr/bin/python3"
args = ["/home/YOU/AgentParcel-3.5.1-linux/mcp/agentparcel_mcp.py"]
env = { AGENTPARCEL_MCP_ROOTS = "/home/YOU" }
startup_timeout_sec = 20
tool_timeout_sec = 1800Try the server by hand:
python3 mcp/agentparcel_mcp.py --version
python3 mcp/agentparcel_mcp.py --list-toolsAbout the name
ZipSplitter was our internal working name during development. Before release we researched it, found another existing project already using that name, and switched to AgentParcel for the public release.
AgentParcel is an independent project. It is not affiliated with, endorsed by, or derived from any other project named ZipSplitter, and it does not use any of that project's code. ZipSplitter was only our internal working name; all AgentParcel code was written from scratch for this project.
Leftover _zipsplitter_* marker files and ZIPSPLITTER_* environment-variable fallbacks come from our own development builds, not from that other project. They remain only for backward compatibility. The markers (_zipsplitter_part.json, _zipsplitter_manifest.json, _zipsplitter_apps.json) stay in each part set, and ZIPSPLITTER_MCP_ROOTS / ZIPSPLITTER_PY still apply when the matching AGENTPARCEL_* variable is unset. Parts from those builds still rebuild, and those builds still rebuild AgentParcel parts. A development apps bundle is named ZipSplitter-apps.zip; AgentParcel ignores it, and those older builds ignore AgentParcel-apps.zip.
Point an agent config at agentparcel_mcp.py. The server name in the snippets is agentparcel.
From this repository
Path | What it is |
| The programs: |
| Neon icon (PNG, |
| Per-platform READMEs, install helpers, license, changelog, and release notes. |
| Builds the three platform packages into |
| Regenerates |
| Screenshot of the window. |
| AgentParcel License 1.0. |
| History. Entries before 3.3.1 use the internal working name. |
python3 build.pydist/ is a local build. The zips attached to the GitHub Release are the tested packages; a fresh run of build.py is not byte-for-byte identical, because the packager stamps the current time. History is in CHANGELOG.md.
License
AgentParcel License 1.0 (LICENSE.txt). Copyright (c) 2026 Chris Kalkowski.
This is source-available. It is not OSI-approved open source, because of the Equal Tier Availability rule.
In plain English:
You may use, copy, modify, share, and sell it, including commercially. Keep the license and the copyright notice with it.
You may market it as an included feature. Charging for your own product is fine.
If a product with several plans or tiers includes AgentParcel, every tier that can use that kind of tool must get it on equal terms, free tier included. For the MCP server that means every tier with MCP or tool access. For the apps, every tier that can run local apps or scripts. It cannot be reserved for a higher or paid tier. Usage limits on it cannot be stricter than the limits on comparable tools in that same tier.
A tier with no such access at all does not have to get it, as long as that gap is general and is not a way to single out AgentParcel.
There is no warranty.
Licensing questions and other permissions: chriskalkowski.com.
Contact
Project site: https://agentparcel.net
Chris Kalkowski: https://chriskalkowski.com
Available Tools
8 toolsinspectInspect a zip, part, file or folderARead-only
Read-only. Look at a path before splitting or rebuilding. For a .zip: entry count, sizes, entries bigger than one part, estimated number of parts at max_mb. For a AgentParcel part: set id, part n of N, which parts are present/missing in its folder, whether it is ready to rebuild. For a folder: the part sets in it (with missing parts), or for a normal folder file count/bytes and a worst-case part estimate. For any other file: size and worst-case part estimate. Paths must be absolute.
Inputs: path (required), max_mb, preset, max_bytes.
make_apps_bundleWrite AgentParcel-apps.zipA
Write AgentParcel-apps.zip (AgentParcel for Windows, Mac and Linux plus this MCP server and 'HOW TO REBUILD.txt') into output_dir, so a human who receives parts can rebuild them. Never overwrites (adds ' (2)'). Optional max_mb/max_bytes: fail if the bundle would be bigger.
Inputs: output_dir (required), max_mb, preset, max_bytes, +1 more.
rebuildRebuild the original from partsA
Rebuild the original from AgentParcel parts (made by this server or by any AgentParcel app). Zip part sets become the original zip (every file verified, size + SHA-256). A byte-split set (folder with _agentparcel_bytes.json, or any file in that folder) becomes the original file, byte for byte. Give the folder, any single part (the others are found next to it), or an explicit list. If parts are missing or corrupt it fails and names exactly which (missing_parts / missing_names / corrupt_parts). AgentParcel-apps.zip is ignored. Output never overwrites. extract=true unpacks a rebuilt zip into a new folder; it does not apply to a byte-split file.
Inputs: parts (required), extract, password, output_dir, +1 more. Returns: ok, bytes, verified, output_path
regenerate_partsRe-send only the missing or corrupt partsAIdempotent
Given the original file and an existing part set, rewrite only the parts that verify reports as missing or corrupt (or the part_numbers you list). Parts that already match are left untouched, so you can upload just the replacements. Works for a byte-split folder and, when a fresh split lands on the same layout, for a zip part set. If the zip layout does not match, nothing is replaced and the error tells you to split the whole zip again. An encrypted byte set needs password. The password is not stored. still_needed names any parts that are still missing or corrupt.
Inputs: parts (required), original (required), password, part_numbers.
split_any_fileSplit any file into exact byte partsA
Byte-level split of ANY file (PDF, video, dataset, CAD, a zip you must not repack, and so on) into numbered raw parts, each <= max_mb / max_bytes. Parts are not zips. Rebuilding concatenates them and checks the original SHA-256. The output folder also contains _agentparcel_bytes.json, HOW-TO-REBUILD.txt, and a dependency-free rebuild.py (Python 3 standard library only) so a receiver can rebuild without AgentParcel. Use split_zip or split_files when you want standalone zip parts.
Inputs: path (required), max_mb, preset, compress, +5 more. Returns: ok, parts, set_id, max_bytes, +3 more
split_filesZip files/folders and split into partsA
Use when files or folders that are not a .zip are too big to upload (a big log, video, dataset, project folder, several files). Packs the inputs into <archive_name>.zip (folders keep their structure) and splits it into standalone zip parts <= max_mb, in one step, without writing the full zip anywhere permanent. A single file bigger than a part is cut into .001/.002 pieces inside consecutive parts. Returns every part's absolute path and size. Rebuild with the rebuild tool (extract=true gives the files back as a folder).
Inputs: paths (required), max_mb, preset, max_bytes, +5 more. Returns: ok, parts, set_id, max_bytes, +3 more
split_zipSplit a .zip into smaller standalone zipsA
Use when a .zip is too big to upload/attach. Splits it into parts named _part01.zip, _part02.zip ... each <= max_mb, and each a complete, valid zip that opens on its own (files are never cut unless a single file is bigger than a part; such files become .001/.002 pieces). Returns absolute paths and byte sizes of every part: upload all of them. Never overwrites anything. The original can be rebuilt exactly (SHA-256 verified) with the rebuild tool or the AgentParcel apps. For anything that is not a .zip (folders, logs, videos...) use split_files.
Inputs: path (required), max_mb, preset, max_bytes, +4 more. Returns: ok, parts, set_id, max_bytes, +3 more
verifyCheck parts before rebuildingARead-only
Read-only check before rebuild. Confirms every part is present and each part's checksum matches the manifest. Works for zip part sets (_zipsplitter_manifest.json, and _agentparcel_zipset.json when that sidecar is present) and for byte-split sets (_agentparcel_bytes.json). Does not write a rebuilt file. ok is false when something is wrong; missing_parts, missing_names, and corrupt_parts name exactly which parts. A part that fails its SHA-256 is corrupt, not missing.
Inputs: parts (required). Returns: ok, corrupt_parts, missing_names, missing_parts, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
The three split tools overlap superficially but have clearly different inputs/outputs: split_zip makes standalone zip parts from .zip, split_files packs non-zip files/folders into zip parts, and split_any_file makes raw byte-split parts. Descriptions make the boundaries workable, though an agent must read carefully to choose among them.
All names use snake_case and the split_* family is predictable. The set mixes verb-only names (verify, inspect, rebuild) with verb_noun names (split_zip, regenerate_parts, make_apps_bundle), which is a minor but noticeable inconsistency.
Eight tools is well-scoped for a file-splitting/rebuilding workflow. Each tool covers a distinct stage: split, verify, repair, inspect, rebuild, and provide a desktop helper bundle.
The surface covers the full lifecycle: inspect inputs, split zips/files/folders, verify part sets, regenerate missing or corrupt parts, rebuild originals, and create a human-friendly apps bundle. No obvious operational gaps for the stated purpose.
Maintenance
Related MCP Connectors
File uploads for AI agents. Upload, list, and manage files. No signup required.
Agent file transfer. No API key to start; price downloads in USDC on Base.
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Send encrypted files and secrets, collect files and get documents signed, from your AI.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI agents to securely transfer files between machines via encrypted, expiring share links, with tools for upload, download, status checks, and link management.MIT- AlicenseNot gradedqualityCmaintenanceSecure file exchange MCP server enabling AI agents to upload, share, fetch, and revoke files with SHA-256 verification, malware scanning, expiry, access restrictions, and human approval workflows.66 npmMIT
- AlicenseBqualityDmaintenanceProvides an FTP-like shared virtual filesystem for AI agents with SHA-256 integrity verification, metadata extraction, and access-hash based channels.31MIT
- AlicenseAqualityBmaintenanceEnables agents to price, send, and track encrypted file transfers, with files chunked, encrypted, and hashed locally before any network relay, and to retrieve signed collection receipts. It supports prepaid credit pools and gives agents a privacy-first transfer capability within their own trust domain.1Apache 2.0