Skip to main content

mac2win-zip MCP Server

Python Version License Platform Package Manager MCP Version

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:

  1. Normalizes all filenames from NFD to NFC
  2. Removes or replaces Windows-forbidden characters
  3. Excludes macOS-specific files (.DS_Store, etc.)
  4. 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

# 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 zip
  • output (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 validate
  • working_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:

  1. Call create_windows_compatible_zip with the Documents folder path
  2. 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:

  1. Call validate_zip_for_windows with the ZIP file path
  2. 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.zip by 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-zip automatically benefit this MCP server
  • Separation of concerns: CLI tool and MCP server share the same battle-tested code

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

Metadata

Release files for mac2win-zip-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mac2win-zip-mcp 1.0.0
File Size Uploaded Provenance
mac2win_zip_mcp-1.0.0.tar.gz 6.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mac2win-zip-mcp 1.0.0
File Interpreter ABI Platform
mac2win_zip_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / mac2win_zip_mcp-1.0.0.tar.gz

Download URL mac2win_zip_mcp-1.0.0.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7904aff59488c2db1651d14b6da3a168e8fff4d44f0c2fdb6bc0a80f30a295f1
BLAKE2b-256 checksum
How to use checksums
88cd047435fc65a01178876af62c7f9cafca90222062fc19e2eef9ad0a6bf133
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.3

Release files / mac2win_zip_mcp-1.0.0-py3-none-any.whl

Download URL mac2win_zip_mcp-1.0.0-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
baaa1eba4a56a5f011d0b8e80d0adbc8c5872011235c0f382ccd30f9ca5c779f
BLAKE2b-256 checksum
How to use checksums
5aa148976ffe48c9b8afaed241fa67ce42d586c9b93cde1772c9af3e25b72090
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.3

Security for mac2win-zip-mcp 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page