Skip to main content
Glama
7gugu
by 7gugu

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 documentation

Installation

You can install ZIP MCP Server globally using npm:

npm install -g zip-mcp

MCP 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

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 file

  • options: Compression options (optional)

    • level: Compression level (0-9, default is 5)

    • password: Password protection

    • encryptionStrength: 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 file

  • output: Path of the output directory

  • options: Decompression options (optional)

    • password: Decompression password

    • overwrite: 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 file

  • options: 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

Available Tools

4 tools
compressC

Compress local files or directories into a ZIP file

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
optionsNo
outputYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
optionsNo
outputYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
optionsNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

B3/5.0
Disambiguation3/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    50
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform 13 PDF operations (merge, split, compress, watermark, encrypt, and more) on local files via MCP.
    2

Latest Blog Posts

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