ZIP-MCP
The ZIP MCP Server provides tools for managing ZIP archives:
Compress files or directories: Create ZIP archives with customizable compression levels (0-9), password protection, encryption strength (1-3), and overwrite controls
Decompress ZIP files: Extract archives with options for password handling, overwrite control, and automatic directory creation
Query ZIP metadata: Retrieve detailed information about archives including file count, sizes, compression ratio, and individual file details
Test server functionality: Verify connectivity by echoing input messages
Provides ZIP compression and decompression functionality within Raycast through the MCP plugin, supporting file compression with customizable settings, extraction of archives, and inspection of ZIP file contents.
Click on "Install 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., "@ZIP-MCPcompress my project folder into archive.zip with level 9 compression"
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.
ZIP MCP Server
中文 | English
Project Introduction
ZIP MCP Server is a compression server based on fastMCP and zip.js, implementing the Model Context Protocol (MCP). This project provides fully parameter-controlled ZIP compression, decompression, and query compression package information functions.
Related MCP server: ZIP MCP
Features
Supports compression and decompression of files and data
Supports multi-file packaging compression
Provides compression level control (0-9)
Supports password protection and encryption strength settings
Provides query function for compressed package metadata
Validates ZIP entry paths on decompression to prevent path traversal writes
Security
Versions 1.0.6 and later fix an arbitrary file write issue in the decompress tool: malicious ZIP entry names (for example ../outside.txt) could previously be joined with the output directory and written outside the intended extraction root. Extraction now resolves the output root once, validates each entry path, and rejects absolute paths, drive-letter paths, .. segments, and any path that would escape the output directory.
Thanks to Ryan (vonbrubeck@gmail.com) for responsibly reporting this issue.
Project Structure
zip-mcp
├── src
│ ├── index.ts # Application entry point
│ ├── utils
│ │ ├── compression.ts # Compression and decompression implementation
│ │ └── safePath.ts # Safe ZIP entry path validation
├── tsconfig.json # TypeScript configuration file
├── package.json # npm configuration file
└── README.md # Project documentationInstallation
You can install ZIP MCP Server globally using npm:
npm install -g zip-mcpMCP Configuration
After installation, you can configure ZIP MCP in your MCP JSON configuration:
{
"mcpServers": {
"zip-mcp": {
"command": "zip-mcp",
"args": []
}
}
}Configure the MCP JSON in the AI Client
Claude Client: https://modelcontextprotocol.io/quickstart/user
Raycast: requires installing the MCP plugin
Cursor: https://docs.cursor.com/context/model-context-protocol#configuring-mcp-servers
MCP Tool Description
ZIP MCP Server provides the following tools, which can be called through the MCP protocol:
Compression Tool (compress)
Compress local files or directories into a ZIP file.
Parameters:
input: Path of the file or directory to be compressed (string or string array)output: Path of the output ZIP fileoptions: Compression options (optional)level: Compression level (0-9, default is 5)password: Password protectionencryptionStrength: Encryption strength (1-3)overwrite: Whether to overwrite existing files (boolean)
Returns:
Success: Text content containing success information
Failure: Text content containing error information
Decompression Tool (decompress)
Decompress local ZIP files to the specified directory. Entry paths are validated before writing so files cannot be extracted outside output via .. or absolute paths.
Parameters:
input: Path of the ZIP fileoutput: Path of the output directoryoptions: Decompression options (optional)password: Decompression passwordoverwrite: Whether to overwrite existing files (boolean)createDirectories: Whether to create non-existent directories (boolean)
Returns:
Success: Text content containing decompression result information
Failure: Text content containing error information
ZIP Info Tool (getZipInfo)
Get metadata information of local ZIP files.
Parameters:
input: Path of the ZIP fileoptions: Options (optional)password: Decompression password
Returns:
Success: Text content containing detailed information of the ZIP file, including:
Total number of files
Total size
Compressed size
Compression ratio
Detailed information of each file
Failure: Text content containing error information
Test Tool (echo)
Returns the input message to test if the service is running normally.
Parameters:
message: Message to be returned
Returns:
Text content containing the input message and current timestamp
Examples
Examples of calling tools using the MCP client:
// Compress files
await client.executeTool("compress", {
input: "/path/to/files/or/directory",
output: "/path/to/output.zip",
options: {
level: 9,
comment: "Test compression",
password: "secret",
overwrite: true,
},
});
// Decompress files
await client.executeTool("decompress", {
input: "/path/to/archive.zip",
output: "/path/to/extract/directory",
options: {
password: "secret",
overwrite: true,
createDirectories: true,
},
});
// Get ZIP info
await client.executeTool("getZipInfo", {
input: "/path/to/archive.zip",
options: {
password: "secret",
},
});
// Test service
await client.executeTool("echo", {
message: "Hello, ZIP MCP Server!",
});Contact
Email: gz7gugu@qq.com
Blog: https://7gugu.com
Available Tools
4 toolscompressC
Compress local files or directories into a ZIP file
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| options | No | ||
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('compress into a ZIP file') but lacks critical details: whether it overwrites existing files by default, requires specific permissions, handles errors, or has performance/rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and specifies key details (local scope, ZIP format). Every word contributes to understanding the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters with nested objects, no annotations, no output schema), the description is inadequate. It covers the basic purpose but misses behavioral traits, parameter details, error handling, and output format. For a file mutation tool, this leaves the agent under-informed about critical usage aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies 'input' parameters (files/directories) and 'output' (ZIP file path), adding basic meaning. However, it doesn't explain the 'options' object or its sub-parameters (like 'level', 'password', 'overwrite'), leaving 3 parameters partially undocumented. The description adds some value but doesn't fully address the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('compress') and resource ('local files or directories'), and specifies the output format ('ZIP file'). It distinguishes from sibling 'decompress' by indicating the opposite operation, though it doesn't explicitly differentiate from 'getZipInfo' which inspects rather than creates ZIPs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'decompress' or 'getZipInfo'. It mentions the basic function but offers no context about appropriate scenarios, prerequisites, or exclusions. The agent must infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decompressC
Decompress local ZIP file to specified directory
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| options | No | ||
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether the operation is destructive (overwrites files), requires specific permissions, handles errors, or has performance considerations like large file support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose with zero wasted words. It's appropriately sized for a straightforward tool, though its brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters including a nested object, no annotations, no output schema), the description is incomplete. It lacks details on parameter usage, behavioral expectations, error handling, and output format, making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds no parameter information. It mentions 'ZIP file' and 'specified directory' which loosely map to 'input' and 'output' parameters, but doesn't explain the 'options' object (createDirectories, overwrite, password) or their effects, leaving key functionality undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('decompress') and the resource ('local ZIP file to specified directory'), making the purpose immediately understandable. It distinguishes from sibling 'compress' by specifying the opposite operation, though it doesn't explicitly differentiate from 'getZipInfo' which inspects rather than extracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'getZipInfo' (for inspection) or 'compress' (for the reverse operation). The description implies usage for extracting ZIP files but offers no context about prerequisites, error conditions, or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
echoB
Return the input message (for testing)
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool returns the input message, which implies a read-only, non-destructive behavior, but doesn't disclose any other traits like error handling, performance characteristics, or side effects. The description is minimal and lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that front-loads the core functionality ('Return the input message') and adds context ('for testing'). There is zero waste, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and testing context but lacks details on behavior, error cases, or integration with siblings. For a simple tool, it's complete enough but has clear gaps in guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by explaining that the 'message' parameter is returned as output. However, it doesn't elaborate on parameter constraints, format, or examples. With 1 parameter and no schema descriptions, the description provides basic semantics but could compensate more for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with 'Return the input message' and specifies it's 'for testing', which distinguishes it from sibling tools like compress/decompress. However, it doesn't explicitly contrast with siblings beyond the testing context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context with 'for testing', suggesting this is a diagnostic tool rather than for production workflows. It doesn't provide explicit guidance on when to use versus alternatives like compress or decompress, nor does it specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getZipInfoC
Get metadata information of a local ZIP file
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a read operation ('Get metadata'), implying non-destructive behavior, but lacks details on permissions, error handling, or output format. This is a significant gap for a tool with 2 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose, making it easy to parse quickly, which is ideal for conciseness in tool definitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters, nested objects, no output schema) and lack of annotations, the description is incomplete. It doesn't cover parameter details, behavioral traits like error cases, or return values, leaving the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'local ZIP file' and 'metadata', hinting at the 'input' parameter, but doesn't explain the 'options' parameter or its 'password' field. This leaves half the parameters unclear, failing to add sufficient meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('metadata information of a local ZIP file'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'compress' or 'decompress', which operate on ZIP files differently, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like needing metadata without extraction or compare to siblings like 'decompress' for content access, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Three tools (compress, decompress, getZipInfo) are clearly distinct and cover core ZIP operations, but the 'echo' tool is unrelated to the ZIP domain and could cause confusion as it serves a generic testing purpose rather than a ZIP-specific function.
The naming is mixed: 'compress' and 'decompress' use consistent verb-based names, but 'getZipInfo' uses a verb_noun pattern with camelCase, and 'echo' is a standalone verb. This creates a readable but inconsistent convention across the tool set.
With 4 tools, the count is reasonable for a ZIP utility server, though slightly thin for comprehensive coverage. The inclusion of 'echo' reduces the effective domain-specific tools to 3, which is borderline but still functional for basic operations.
The tool set covers basic ZIP operations (compress, decompress, get metadata), but lacks advanced features like listing contents without extraction, adding/removing files from archives, or handling password-protected ZIPs. The 'echo' tool does not contribute to ZIP functionality, creating a minor gap in domain coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Shared long-term memory vault for AI agents with 20 MCP tools.
Browse and manage files in your Moxt AI workspace from any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA comprehensive Model Context Protocol server that provides over 50 file and system management tools for AI models, including navigation, file operations, search, compression, and system information capabilities.
- AlicenseNot gradedqualityDmaintenanceA powerful ZIP file processing tool that enables creating, extracting, listing, adding, deleting, viewing, and verifying ZIP files through MCP protocol integration with AI development environments.50MIT
- AlicenseBqualityFmaintenanceProvides tools for AI assistants to compress, decompress, and manage ZIP archives including metadata retrieval. It supports directory compression, password protection, and configurable extraction options.421ISC
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to perform 13 PDF operations (merge, split, compress, watermark, encrypt, and more) on local files via MCP.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/7gugu/zip-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server