ZIP MCP Server

项目简介

ZIP MCP Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,专注于提供 ZIP 压缩和解压缩功能。它利用 fastMCP 框架简化 MCP 服务器的开发,并集成了 zip.js 库来实现高效的 ZIP 文件处理能力。此服务器旨在作为 LLM 应用的上下文服务,通过标准化的 MCP 协议,为 LLM 提供文件压缩、解压缩以及查询 ZIP 文件元数据的能力。

主要功能点

  • 文件压缩与解压缩: 支持对本地文件和目录进行 ZIP 格式的压缩和解压缩操作。
  • 多文件压缩: 允许将多个文件或目录打包压缩成一个 ZIP 文件。
  • 可控的压缩参数: 提供压缩级别、密码保护和加密强度等参数设置,以满足不同的压缩需求。
  • ZIP 信息查询: 能够获取 ZIP 文件的元数据信息,例如文件列表、大小、压缩比率等。
  • 易于集成: 遵循 MCP 协议,可以方便地与支持 MCP 协议的 LLM 客户端集成,例如 Claude Client 和 Raycast 等。

安装步骤

  1. 克隆仓库

    git clone https://github.com/7gugu/zip-mcp.git
    cd zip-mcp
  2. 安装依赖

    确保已安装 Node.js 和 npm,然后运行:

    npm install
  3. 生成 MCP 配置文件

    运行以下命令生成 MCP 客户端所需的 JSON 配置文件:

    npm run json

    此命令会在控制台输出 MCP 配置文件内容。

服务器配置

要将 ZIP MCP Server 集成到 MCP 客户端,您需要配置 MCP 服务器的启动信息。通常,您需要将以下 JSON 配置添加到 MCP 客户端的配置文件中。

配置信息 (JSON 格式):

{
  "mcpServers": {
    "zip-mcp": {
      "command": "npx",
      "args": [
        "tsx",
        "<ZIP MCP Server 仓库的绝对路径>/src/index.ts"
      ]
    }
  }
}

参数说明:

  • '"zip-mcp"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
  • '"command": "npx"': 启动服务器的命令,这里使用 'npx' 来执行本地安装的 'tsx' (TypeScript 执行器)。
  • '"args"': 启动命令的参数列表。
    • '"tsx"': 使用 'tsx' 执行 TypeScript 代码。
    • '"<ZIP MCP Server 仓库的绝对路径>/src/index.ts"': 请将 '<ZIP MCP Server 仓库的绝对路径>' 替换为您实际克隆的 'zip-mcp' 仓库在您电脑上的绝对路径。 这是服务器入口文件 'index.ts' 的路径,确保 MCP 客户端能够找到并执行服务器代码。

例如,如果您的 'zip-mcp' 仓库克隆在 '/Users/yourname/Documents/zip-mcp' 目录下,则配置应为:

{
  "mcpServers": {
    "zip-mcp": {
      "command": "npx",
      "args": [
        "tsx",
        "/Users/yourname/Documents/zip-mcp/src/index.ts"
      ]
    }
  }
}

配置到 MCP 客户端:

根据您使用的 MCP 客户端类型,将上述 JSON 配置添加到客户端的 MCP 服务器配置文件中。例如:

基本使用方法

配置完成后,您可以使用支持 MCP 协议的 LLM 客户端来调用 ZIP MCP Server 提供的工具。以下是一些基本的使用示例 (假设您已在客户端中配置并连接了名为 "zip-mcp" 的服务器):

  1. 压缩文件或目录:

    客户端调用 'compress' 工具,并提供输入路径 (文件或目录) 和输出 ZIP 文件路径,以及可选的压缩参数。

    例如,使用 JavaScript 代码调用:

    await client.executeTool("zip-mcp.compress", { // 注意工具名称需要带服务器名称前缀 "zip-mcp."
      input: "/path/to/your/files_or_directory",
      output: "/path/to/output.zip",
      options: {
        level: 9, // 设置最高压缩级别
        password: "your_password" // 设置压缩密码
      }
    });
  2. 解压缩 ZIP 文件:

    客户端调用 'decompress' 工具,并提供 ZIP 文件路径和解压目标目录路径,以及可选的解压参数。

    await client.executeTool("zip-mcp.decompress", {  // 注意工具名称需要带服务器名称前缀 "zip-mcp."
      input: "/path/to/archive.zip",
      output: "/path/to/extract/directory",
      options: {
        password: "your_password", // 提供解压密码 (如果 ZIP 文件有密码)
        overwrite: true // 允许覆盖已存在的文件
      }
    });
  3. 获取 ZIP 文件信息:

    客户端调用 'getZipInfo' 工具,并提供 ZIP 文件路径,以及可选的密码参数。

    await client.executeTool("zip-mcp.getZipInfo", {  // 注意工具名称需要带服务器名称前缀 "zip-mcp."
      input: "/path/to/archive.zip",
      options: {
        password: "your_password" // 提供解压密码 (如果 ZIP 文件有密码)
      }
    });
  4. 测试服务是否运行正常:

    客户端调用 'echo' 工具,发送测试消息,服务器会返回该消息和当前时间戳。

    await client.executeTool("zip-mcp.echo", {  // 注意工具名称需要带服务器名称前缀 "zip-mcp."
      message: "Hello, ZIP MCP Server!"
    });

请参考仓库的 'README.md' 文件和 'src/index.ts' 代码,了解更多工具的参数和使用细节。

服务器信息