{ "name": "zipnative-mcp", "version": "1.0.0", "description": "Model Context Protocol (MCP) server for ZIP archives: create deterministic, reproducible archives (store/deflate, worker-parallel), list and inspect without extracting, read single entries by random access, extract with secure-by-default guards (zip-slip, zip-bomb, symlink, duplicate-path and device-name refusals), verify integrity in one call, scan unseekable streams, modify archives without recompression, compute CRC-32 and inflate raw DEFLATE. 13 tools on the zipnative engine, ISO/IEC 21320-1 conformance validated in CI, no network ever, for Claude, Cursor, ChatGPT and any MCP client.", "mcpName": "io.github.Nizoka/zipnative-mcp", "keywords": [ "mcp", "mcp-server", "model-context-protocol", "modelcontextprotocol", "mcp-registry", "zip", "unzip", "zip64", "archive", "compression", "decompression", "deflate", "inflate", "zipnative", "zero-dependency", "typescript", "streaming", "random-access", "incremental", "deterministic", "reproducible-builds", "zip-slip", "zip-bomb", "secure-by-default", "iso-21320", "conformance", "verazip", "crc32", "verify-zip", "extract-zip", "create-zip", "inspect-zip", "ooxml", "epub", "jar", "vsix", "ai-governance", "human-in-the-loop", "claude", "claude-desktop", "cursor", "chatgpt", "llm", "agent-tools" ], "homepage": "https://github.com/Nizoka/zipnative-mcp#readme", "bugs": { "url": "https://github.com/Nizoka/zipnative-mcp/issues" }, "repository": { "type": "git", "url": "git+https://github.com/Nizoka/zipnative-mcp.git" }, "license": "MIT", "author": "Nizoka", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" } }, "bin": { "zipnative-mcp": "./dist/cli.js" }, "files": [ "dist/", "LICENSE", "README.md", "CHANGELOG.md", "server.json", "llms.txt" ], "engines": { "node": ">=22" }, "sideEffects": false, "scripts": { "build": "tsc -p tsconfig.build.json", "dev": "tsc -p tsconfig.build.json --watch", "clean": "node -e \"import('node:fs').then(m=>m.rmSync('dist',{recursive:true,force:true}))\"", "lint": "eslint src --max-warnings 0", "typecheck": "tsc --noEmit", "typecheck:all": "npm run typecheck", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", "examples:check": "vitest run tests/examples.test.ts", "verify:issue": "node scripts/verify-issue.mjs", "corpus:zip": "node scripts/generate-zip-corpus.mjs", "validate:zip": "npm run build && npm run corpus:zip && node scripts/validate-zip.mjs", "prepare": "npm run build", "prepublishOnly": "npm run clean && npm run lint && npm run typecheck && npm run build && npm run test" }, "dependencies": { "@modelcontextprotocol/server": "^2.0.0", "zipnative": "^1.0.0", "zod": "^4.2.0" }, "devDependencies": { "@cyclonedx/cyclonedx-npm": "6.0.1", "@eslint/js": "^9.18.0", "@types/node": "^22.10.5", "@vitest/coverage-v8": "^4.1.5", "eslint": "^9.18.0", "typescript": "^5.7.3", "typescript-eslint": "^8.20.0", "vitest": "^4.1.5" }, "publishConfig": { "access": "public", "provenance": true } }