MCP Server for creating Windows-compatible ZIP files from macOS
Project description
mac2win-zip MCP Server
Create Windows-compatible ZIP files from macOS via MCP
An MCP (Model Context Protocol) server for creating Windows-compatible ZIP files.
This MCP server wraps the functionality of mac2win-zip to create ZIP files that work perfectly on Windows from macOS.
Why mac2win-zip MCP Server?
The Problem
macOS uses NFD (Normalization Form Decomposed) for Unicode filenames, while Windows uses NFC (Normalization Form Composed). When you create a ZIP file on macOS containing files with Unicode characters (like Korean, Japanese, or special characters), Windows users often see garbled filenames.
| macOS (ZIP created) | Windows (ZIP opened) |
|---|---|
| 📄 Hello?.pdf | ❌ (removed) |
| 📄 안녕하세요 세상.pdf | ❌ (removed) |
The Solution
This MCP server automatically:
- Normalizes all filenames from NFD to NFC
- Removes or replaces Windows-forbidden characters
- Excludes macOS-specific files (
.DS_Store, etc.) - Preserves the folder structure
Result: ZIP files that work perfectly on both macOS and Windows!
| macOS (ZIP created) | Windows (ZIP opened) |
|---|---|
| 📄 Hello.pdf | ✅ Hello.pdf |
| 📄 안녕하세요 세상.pdf | ✅ 안녕하세요 세상.pdf |
Installation
Quick Install (Recommended)
# Install with uv (creates a global command)
uvx --from git+https://github.com/Wordbe/mac2win-zip-mcp mac2win-zip-mcp
# Or install with pipx
pipx install git+https://github.com/Wordbe/mac2win-zip-mcp
Development Install
# Clone the repository
git clone https://github.com/Wordbe/mac2win-zip-mcp.git
cd mac2win-zip-mcp
# Install in development mode
uv pip install -e ".[dev]"
Usage
MCP Configuration for Claude Desktop
Add this to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mac2win-zip": {
"command": "mac2win-zip-mcp"
}
}
}
That's it! No path configuration needed. The command is globally available after installation.
MCP Tools
This server provides the following tools:
create_windows_compatible_zip
Create a Windows-compatible ZIP file from files and/or folders.
Parameters:
paths(array, required): List of file or folder paths to zipoutput(string, optional): Output ZIP filename (default: "archive.zip")working_dir(string, optional): Base directory for relative paths
Example usage:
Create a Windows-compatible ZIP of the current directory
Paths: ["."]
Output: "backup.zip"
validate_zip_for_windows
Validate if a ZIP file is Windows-compatible.
Parameters:
zip_path(string, required): Path to the ZIP file to validateworking_dir(string, optional): Base directory for relative path
Example usage:
Check if a ZIP file is Windows-compatible
ZIP Path: "archive.zip"
Example Usage with AI Assistants
Create a ZIP of a folder
Create a Windows-compatible ZIP of my Documents folder containing all PDF files.
The AI assistant will:
- Call
create_windows_compatible_zipwith the Documents folder path - Return the created ZIP file path and file count
Validate a ZIP file
Check if my-backup.zip is Windows-compatible.
The AI assistant will:
- Call
validate_zip_for_windowswith the ZIP file path - Return validation results and any issues found
Features
- Unicode Normalization: Converts macOS NFD filenames to Windows-compatible NFC
- Character Sanitization: Removes Windows-forbidden characters (
<>:"|?*\) - Auto Recursive: Automatically includes all subdirectories when zipping folders
- Smart Naming: Creates
folder-name.zipby default (no -o needed for single folder) - Structure Preservation: Maintains original folder hierarchy in ZIP
- Smart Filtering: Excludes hidden files (
.DS_Store, etc.) - Korean Support: Perfect handling of Korean and other Unicode filenames
- MCP Protocol: Works with any MCP-compliant AI assistant (Claude, etc.)
Requirements
- Python 3.10 or higher
- uv (recommended) or pip
- MCP-compatible AI assistant (e.g., Claude Desktop)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Architecture
This MCP server is a thin wrapper around the mac2win-zip library, exposing its functionality via the Model Context Protocol. This means:
- Single source of truth: Core ZIP creation logic lives in
mac2win-zip - Always in sync: Updates to
mac2win-zipautomatically benefit this MCP server - Separation of concerns: CLI tool and MCP server share the same battle-tested code
Related Projects
- mac2win-zip - CLI tool for creating Windows-compatible ZIP files (core library)
- Model Context Protocol - The protocol powering this server
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Bug Reports
If you discover any bugs, please create an issue on GitHub with:
- Your operating system and version
- Python version
- MCP client information
- Steps to reproduce the bug
- Expected vs actual behavior
Show Your Support
If this project helped you, please give it a star!
Made with ❤️ by Wordbe for seamless macOS-Windows file sharing
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mac2win_zip_mcp-1.0.0.tar.gz.
File metadata
- Download URL: mac2win_zip_mcp-1.0.0.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7904aff59488c2db1651d14b6da3a168e8fff4d44f0c2fdb6bc0a80f30a295f1
|
|
| MD5 |
3fa4d7114d040c69081550738510379e
|
|
| BLAKE2b-256 |
88cd047435fc65a01178876af62c7f9cafca90222062fc19e2eef9ad0a6bf133
|
File details
Details for the file mac2win_zip_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mac2win_zip_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baaa1eba4a56a5f011d0b8e80d0adbc8c5872011235c0f382ccd30f9ca5c779f
|
|
| MD5 |
e6e2940b4627eb4bd9bc77137dfebf67
|
|
| BLAKE2b-256 |
5aa148976ffe48c9b8afaed241fa67ce42d586c9b93cde1772c9af3e25b72090
|