{"_id":"@anthonybir/devops-mcp","_rev":"9-7b5e7874ca4b92057f9ce546e518f18a","name":"@anthonybir/devops-mcp","dist-tags":{"latest":"0.3.7"},"versions":{"0.1.0":{"name":"@anthonybir/devops-mcp","version":"0.1.0","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.1.0","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js"},"dist":{"shasum":"0aa9e9ef4b1e5e144e9c5f9674e22cc019e1cec2","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-mwXGMmNIKcl0D4EHf+msaAOuONYForbp/ix2LZO1augajovX/O9GHToi6v3dBhTTvahkXvYU2zf9jDLGfxivRg==","signatures":[{"sig":"MEUCIQCcyDiNJ46x91tKCbbxTc3XQ2S+dTOS6FVa7PAZ3ByHmgIgDw18Cwmqkv6H1DtdBGZZUJPywVnn0gWBHYFXV+TnKTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35961},"main":"dist/index.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"f43606e4fe6935d581b1beda6e35f30ffe6a9fd4","scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup src/index.ts --format esm --clean --minify","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.9.3","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.1.0_1761390391940_0.7380641187976671","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anthonybir/devops-mcp","version":"0.3.0","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.0","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"38850b9de13e15377615da5176de8650328db7a3","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.0.tgz","fileCount":8,"integrity":"sha512-+qz9hhrHRIh6kWvmDDuIb4565qPA0LqT6CLvT8QdkQ8mKnhNUs+1sLFFaLOmWzFuV2Oy0Pmfci6AyIO43G4uMw==","signatures":[{"sig":"MEYCIQCPJ/5EXCVChb8S/7OHidl5wVusqrP1jPq0nqGwf5SAQAIhAKjapBtc6kLErTaKfh+vMfsn/OcfL1Dzfzk/BPcXEiey","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70501},"main":"dist/index.js","type":"module","_from":"file:anthonybir-devops-mcp-0.3.0.tgz","engines":{"node":">=22.0.0"},"scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"_resolved":"/private/var/folders/v8/7266d29j0552d9dkmxj3458h0000gn/T/2080496407deae86c03021f4cb6e3224/anthonybir-devops-mcp-0.3.0.tgz","_integrity":"sha512-+qz9hhrHRIh6kWvmDDuIb4565qPA0LqT6CLvT8QdkQ8mKnhNUs+1sLFFaLOmWzFuV2Oy0Pmfci6AyIO43G4uMw==","repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.9.3","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.0_1761417533883_0.74785452027549","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anthonybir/devops-mcp","version":"0.3.1","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.1","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"6026d230a6516b53fc6226adc54f476c036904d6","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.1.tgz","fileCount":8,"integrity":"sha512-rHOU+YX+nOTOaw8/eLAd7IP4yG8XrZ/laTeblNXHlMGCTtm0IGopB+y0wxRogv1BxxWKYHEPyq5NpHZyHl520A==","signatures":[{"sig":"MEUCIQCP8CjzwsNSf806U7NVnmgKqB4lfYWXSFDafOkjdDMk1wIge+gf0vMbKOgM2T5gbqWVOPAh+uH6axfNUwh4mjiSULM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71713},"main":"dist/index.js","type":"module","_from":"file:anthonybir-devops-mcp-0.3.1.tgz","engines":{"node":">=22.0.0"},"scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"_resolved":"/private/var/folders/v8/7266d29j0552d9dkmxj3458h0000gn/T/aefb865df86ae98f6ba010f29bbf4ffb/anthonybir-devops-mcp-0.3.1.tgz","_integrity":"sha512-rHOU+YX+nOTOaw8/eLAd7IP4yG8XrZ/laTeblNXHlMGCTtm0IGopB+y0wxRogv1BxxWKYHEPyq5NpHZyHl520A==","repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.9.3","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.1_1761418353214_0.9444203015973187","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anthonybir/devops-mcp","version":"0.3.2","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.2","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"2d3a89f040c3eceae76e00c38e2eeb7cdafc615d","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.2.tgz","fileCount":8,"integrity":"sha512-CJb0WTRjVHurRETKLo38waFF4ab4B0w6G2rIEfhB4ICEBNducghIWSm3T+A45nV1er/mplXVXhp+G4L2wy2aug==","signatures":[{"sig":"MEQCIBkt/MxwmMMKbZHvL19UKjSLl4Y8xhnfgsbA+37HsIDqAiBC+CKyNB8DEdQL6v/lcT5M7j9wBDly+LfQlwb9ImmtPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75567},"main":"dist/index.js","type":"module","_from":"file:anthonybir-devops-mcp-0.3.2.tgz","engines":{"node":">=22.0.0"},"scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"_resolved":"/private/var/folders/v8/7266d29j0552d9dkmxj3458h0000gn/T/0fc1d3086a1ae6457ae967dbbe3975eb/anthonybir-devops-mcp-0.3.2.tgz","_integrity":"sha512-CJb0WTRjVHurRETKLo38waFF4ab4B0w6G2rIEfhB4ICEBNducghIWSm3T+A45nV1er/mplXVXhp+G4L2wy2aug==","repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.9.3","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.2_1761423940949_0.4458967379578358","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@anthonybir/devops-mcp","version":"0.3.3","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.3","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"94e7f8e78a11cf08380c337ddac35126f19ba3f6","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.3.tgz","fileCount":8,"integrity":"sha512-P4RGcDX6D26SuZCko94+wP+okj2eA5PlXe/Jkm9fytOS//CPPijNOguqQA/qmpySkb01YXPw/TTuPZCYrHsUxQ==","signatures":[{"sig":"MEUCIQDl+VlyF7pTzTXRh+lOCdtggO16Mm+zagwXuWu8B/HWCAIgVPMrzCasiv/g0OI+Me5G8itxM69ArutMtGX6Sdi4/BQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75824},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"151cbd194918922cdc22a5bb55d63a8bc0d36249","scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"20.19.3","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.3_1761439880094_0.7587537299190763","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@anthonybir/devops-mcp","version":"0.3.4","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.4","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"ea2ec3623d00c315ab978d3a4d667dc0be98ac07","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.4.tgz","fileCount":8,"integrity":"sha512-JM5awT7817HGSXJgKMvqBZfIONdQkyNzsSBPr2U2ZlWM/mlF4K6ZFEtvMukDWrMaiPDY9Qy4q2v8vnU1h4U2og==","signatures":[{"sig":"MEYCIQCm4ImNj7KvulUF7moogfRfFY/p+SlxD9fwDG7coic+NgIhAM/dqGgf3he0vUTtSh1kWJZ7FAeU/7XNMjhuI+WVAp/W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77365},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"71b3b7f29790fe3a561b6ece42038d6f716729ab","scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"20.19.3","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.4_1761443860669_0.17969501865761206","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@anthonybir/devops-mcp","version":"0.3.5","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.5","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"98f7bc89fca4e17a6e500b754eeef0834687662d","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.5.tgz","fileCount":8,"integrity":"sha512-4ZoUikmuz6yjJEoCauPUnmAPc3HePHRQRKo839itlU4+nI0HlqtzaR6Yg8O6pPWLYO6n3ssfn1ljUSD1gh8nog==","signatures":[{"sig":"MEQCIG+4Nne3Nlvn9OgpS4x5zQVTO4vuDH/GNj0SOLry8m3tAiAYO+QMqPTL1Yaoi2kdSuBrLu8qo0/Vi37XgRWqZbCUZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77336},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"7bdcc57f4f79c1d903b1cd56ebd52888a62719b2","scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"20.19.3","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.5_1761445746337_0.024477332942227648","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@anthonybir/devops-mcp","version":"0.3.6","keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","_id":"@anthonybir/devops-mcp@0.3.6","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"dist":{"shasum":"bcd90380e116402c2926b67d5291ce0933436b4f","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.6.tgz","fileCount":8,"integrity":"sha512-mYZCn1l59E5dUcQPNzOb/YvQiMcFUQH9yMnRSBiozxM4e+HtZDUV2ko+3iYFwHjfBuFqF7O9HOagTCu0jTbfyA==","signatures":[{"sig":"MEYCIQD6pKm/1SEWnGDN7yk1McuoqVAHjdxfI722wnDFioIMLwIhAJdv9ELBoVnRKSSLVMWDa62y83Me0d+r+5smci0Fg4o0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77678},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"2a06098052b575c7d9ae8bb34f7e8d28274551a6","scripts":{"dev":"tsx watch src/index.ts","test":"vitest","build":"tsup","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"repository":{"url":"git+https://github.com/anthonybir/ABSD_MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","directories":{},"_nodeVersion":"20.19.3","dependencies":{"zod":"^4.1.12","pino":"^10.1.0","node-pty":"^1.0.0","strip-ansi":"^7.1.2","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","nock":"^14.0.10","tsup":"^8.5.0","vitest":"^4.0.3","typescript":"^5.9.3","@types/node":"^24.9.1","pino-pretty":"^13.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devops-mcp_0.3.6_1761449348897_0.4587133574077451","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@anthonybir/devops-mcp","version":"0.3.7","description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","type":"module","main":"dist/index.js","bin":{"absd-mcp":"dist/index.js","absd-mcp-setup":"dist/scripts/register-claude-config.js","absd-mcp-unregister":"dist/scripts/unregister-claude-config.js"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsup","test":"vitest","test:security":"vitest tests/security","prepublishOnly":"pnpm test && pnpm build","setup":"node dist/scripts/register-claude-config.js","unregister":"node dist/scripts/unregister-claude-config.js"},"keywords":["mcp","devops","filesystem","terminal","absd"],"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/anthonybir/ABSD_MCP.git"},"homepage":"https://github.com/anthonybir/ABSD_MCP#readme","bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"engines":{"node":">=20.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.20.2","node-pty":"^1.0.0","pino":"^10.1.0","strip-ansi":"^7.1.2","zod":"^4.1.12"},"devDependencies":{"@types/node":"^24.9.1","nock":"^14.0.10","pino-pretty":"^13.1.2","tsup":"^8.5.0","tsx":"^4.20.6","typescript":"^5.9.3","vitest":"^4.0.3"},"_id":"@anthonybir/devops-mcp@0.3.7","gitHead":"2a06098052b575c7d9ae8bb34f7e8d28274551a6","_nodeVersion":"20.19.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-sSJa8tW+W+HO4uCcGGwQXaezMx1hlGdxD8lwSCN4V9Pom3rF6uJ+BkS0NaPMnvCKbyXz6JMaY4FGPgzBGzO51w==","shasum":"d945abdd9e32e0cadd83026e79b9ce1352b9d09d","tarball":"https://registry.npmjs.org/@anthonybir/devops-mcp/-/devops-mcp-0.3.7.tgz","fileCount":8,"unpackedSize":77735,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDTvELBRkCtwSqenmQSgYfEp1QkaG7k7eZYGxhD4NyIRAIgMTAc0DSNtFLhSunuKuBQuXBLBwyYaPR6sTpqB38BQSM="}]},"_npmUser":{"name":"anthonybir","email":"anthony@bir.com.py"},"directories":{},"maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/devops-mcp_0.3.7_1761452003044_0.8189022272049657"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-25T11:06:31.803Z","modified":"2025-10-26T04:13:23.420Z","0.1.0":"2025-10-25T11:06:32.126Z","0.3.0":"2025-10-25T18:38:54.140Z","0.3.1":"2025-10-25T18:52:33.413Z","0.3.2":"2025-10-25T20:25:41.155Z","0.3.3":"2025-10-26T00:51:20.287Z","0.3.4":"2025-10-26T01:57:40.882Z","0.3.5":"2025-10-26T02:29:06.558Z","0.3.6":"2025-10-26T03:29:09.141Z","0.3.7":"2025-10-26T04:13:23.239Z"},"bugs":{"url":"https://github.com/anthonybir/ABSD_MCP/issues"},"author":{"name":"Anthony Bir","email":"anthonybir@aena.edu.py"},"license":"MIT","homepage":"https://github.com/anthonybir/ABSD_MCP#readme","keywords":["mcp","devops","filesystem","terminal","absd"],"repository":{"type":"git","url":"git+https://github.com/anthonybir/ABSD_MCP.git"},"description":"ABSD DevOps MCP Server - Local filesystem & terminal operations","maintainers":[{"name":"anthonybir","email":"anthony@bir.com.py"}],"readme":"# ABSD DevOps MCP Server\n\nLocal-first Model Context Protocol (MCP) server providing secure filesystem and terminal operations for AI assistants.\n\n## Features\n\n- **22 Powerful Tools**: 9 filesystem + 4 streaming search + 7 terminal + 2 meta operations\n- **Filesystem Operations**: Read (files/URLs/images), write, list, create, move/rename, search (ripgrep), edit (surgical), multi-read\n- **Streaming Search**: Background ripgrep with pagination, session management, and early termination\n- **Terminal Sessions**: Interactive REPLs (Python, Node.js) with ANSI-aware prompt detection\n- **Process Management**: List system processes, kill with confirmation tokens\n- **Image Support**: MCP native ImageContent for PNG, JPEG, GIF, WebP, BMP (SVG as text for security)\n- **URL Fetching**: HTTP/HTTPS with configurable timeout and denylist protection\n- **MCP Primitives**: Resources (server state) + Prompts (workflow templates)\n- **Security-First**: Path traversal protection, command filtering, input sanitization, unrestricted mode with warnings\n- **Type-Safe**: Built with TypeScript strict mode and Zod schema validation\n- **Local-Only**: Runs entirely on your machine via stdio transport\n\n⚠️ **v0.3.3 Compatibility Update:** Node.js requirement lowered to **>= 20.0.0** and native modules are now built against Node 20 so Claude Desktop can load the server without module-version errors. If you installed before v0.3.3, reinstall globally and restart Claude Desktop.\n\n⚠️ **v0.3.2 Security Update:** Default blocked commands expanded from 6 to 31 (destructive disk operations, system/network modifications, package manager removals, data destruction). **Existing installations:** Review your `~/ABSD_MCP/config.json` and merge new blocked commands from [config.example.json](config.example.json) to benefit from enhanced security.\n\n## Installation\n\n### Quick Start (Recommended)\n\n```bash\n# 1. Install globally\nnpm install -g @anthonybir/devops-mcp\n\n# 2. Run setup (interactive)\nabsd-mcp-setup\n```\n\nThe setup command will:\n- ✅ Add MCP server to Claude Desktop config\n- ✅ Create default config at `~/ABSD_MCP/config.json`\n- ✅ Backup your existing Claude config with timestamp\n\n**⚠️ Security Warning:** Default config allows access to your entire home directory.\nReview and restrict `allowedDirectories` immediately after setup.\n\n**Next steps:**\n1. Review config: `~/ABSD_MCP/config.json` (macOS) or `%USERPROFILE%\\ABSD_MCP\\config.json` (Windows)\n2. Restrict `allowedDirectories` to only needed paths\n3. Restart Claude Desktop\n\n### Uninstall\n\n```bash\n# Remove from Claude Desktop config\nabsd-mcp-unregister\n\n# Uninstall package\nnpm uninstall -g @anthonybir/devops-mcp\n```\n\n### Manual Setup\n\nIf you prefer manual configuration, see [Claude Desktop Setup](#claude-desktop-setup) below.\n\n### Using npx (No Installation)\n\n```bash\nnpx @anthonybir/devops-mcp@latest\n```\n\nRequires manual Claude Desktop configuration (see below).\n\n### Codex CLI Setup (TOML)\n\nIf you run the [Codex CLI](https://github.com/openai/codex), install the package globally first and then add an MCP entry to your `codex.toml`:\n\n```toml\n[[mcp]]\nname = \"absd-devops\"\ncommand = \"absd-mcp\"\nargs = []\nworking_directory = \"/Users/yourusername\"\nenv = { ABSD_MCP_CONFIG = \"/Users/yourusername/ABSD_MCP/config.json\" }\n```\n\nAfter saving the file run `codex mcp reload` (or restart Codex) so the new server is picked up. Update the paths to match your environment.\n\n### From Source\n\n```bash\ngit clone https://github.com/anthonybir/ABSD_MCP.git\ncd ABSD_MCP\npnpm install\npnpm build\n```\n\n## Configuration\n\nCreate a `config.json` file (or copy from `config.example.json`):\n\n```json\n{\n  \"allowedDirectories\": [\n    \"/Users/yourusername/Projects\",\n    \"/Users/yourusername/Documents\"\n  ],\n  \"blockedCommands\": [\n    \"rm -rf /\",\n    \"dd if=/dev/zero\",\n    \"mkfs\",\n    \"shutdown\",\n    \"reboot\"\n    // ... see config.example.json for full list of 31 default blocked commands\n  ],\n  \"fileReadLineLimit\": 2000,\n  \"fileWriteLineLimit\": 75,\n  \"sessionTimeout\": 1800000,\n  \"logLevel\": \"info\",\n  \"urlDenylist\": [\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"::1\"],\n  \"urlTimeout\": 10000\n}\n```\n\n### Configuration Options\n\n- **allowedDirectories**: Array of absolute paths where file operations are permitted (empty array = unrestricted access)\n- **blockedCommands**: Array of dangerous commands to reject (default: [])\n- **fileReadLineLimit**: Maximum lines to read per file operation (default: 1000)\n- **fileWriteLineLimit**: Maximum lines to write per operation (default: 50)\n- **sessionTimeout**: Process session timeout in milliseconds (default: 1800000 = 30 minutes)\n- **logLevel**: Logging level (`debug` | `info` | `warn` | `error`) (default: `info`)\n- **urlDenylist**: Array of hostnames to block for URL fetching (default: `[\"localhost\", \"127.0.0.1\", \"0.0.0.0\", \"::1\"]`)\n- **urlTimeout**: URL fetch timeout in milliseconds (default: 10000 = 10 seconds)\n\n#### Enable Full Filesystem Access (Advanced)\n\nSet `allowedDirectories` to an empty array (`[]`) if you want ABSD to access every path on your machine. **You must keep `blockedCommands` populated**—the server will refuse to start if both lists are empty.\n\n```json\n{\n  \"allowedDirectories\": [],\n  \"blockedCommands\": [\n    \"rm -rf /\",\n    \"dd if=/dev/zero\",\n    \"mkfs\",\n    \"shutdown\",\n    \"reboot\",\n    \"init 0\"\n    // ...and the rest from config.example.json\n  ]\n}\n```\n\nOnly use unrestricted mode on trusted local machines and keep the expanded blocked-commands list (31 entries) to avoid accidental destructive commands.\n\n### Path Formatting\n\n**Windows users:** Use forward slashes in JSON to avoid escaping issues:\n- ✅ `\"C:/Users/yourusername/Projects\"`\n- ✅ `\"C:\\\\\\\\Users\\\\\\\\yourusername\\\\\\\\Projects\"` (double-escaped backslashes)\n- ❌ `\"C:\\Users\\yourusername\\Projects\"` (breaks JSON)\n\n**macOS/Linux users:** Standard absolute paths:\n- ✅ `\"/Users/yourusername/Projects\"`\n- ✅ `\"/home/username/projects\"`\n\n## Claude Desktop Setup\n\n**Config File Locations:**\n- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n### Option 1: Using Installed Package (Offline-Compatible)\n\nIf you installed globally, reference the bin entry:\n\n```json\n{\n  \"mcpServers\": {\n    \"absd-devops\": {\n      \"command\": \"absd-mcp\",\n      \"args\": [],\n      \"env\": {\n        \"ABSD_MCP_CONFIG\": \"/path/to/your/config.json\"\n      }\n    }\n  }\n}\n```\n\n### Option 2: Using npx (Online-Only)\n\nIf using npx or want latest version:\n\n```json\n{\n  \"mcpServers\": {\n    \"absd-devops\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anthonybir/devops-mcp@latest\"],\n      \"env\": {\n        \"ABSD_MCP_CONFIG\": \"/path/to/your/config.json\"\n      }\n    }\n  }\n}\n```\n\n**ABSD_MCP_CONFIG paths:**\n- **macOS:** Use full path like `/Users/yourusername/ABSD_MCP/config.json`\n- **Windows:** Use forward slashes like `C:/Users/yourusername/ABSD_MCP/config.json`\n\nRestart Claude Desktop to activate the server.\n\n## Available Tools\n\n### Filesystem Tools (9)\n\n- **read_file**: Read files or URLs with image support (PNG, JPEG, GIF, WebP, BMP), optional chunking, and offset support (SVG treated as text for security)\n- **read_multiple_files**: Read multiple files simultaneously with size caps (1MB/file, 5MB total)\n- **write_file**: Create or overwrite files with append mode option\n- **list_directory**: List directory contents recursively with depth control\n- **create_directory**: Create directories with recursive parent creation\n- **move_file**: Move or rename files and directories (both paths validated for security)\n- **get_file_info**: Get detailed metadata (size, permissions, timestamps, line count)\n- **search_files**: Search for patterns using ripgrep (regex, literal, file filtering)\n- **edit_block**: Surgical text replacement with uniqueness validation\n\n### Streaming Search Tools (4)\n\n- **start_search**: Initiate background ripgrep search with files or content mode\n  - `contextLines`: Lines of context around matches (default: 3)\n  - **Tip:** Set `contextLines: 0` for terse output with no surrounding context\n- **get_more_search_results**: Retrieve paginated results with offset-based navigation\n- **stop_search**: Terminate running search sessions early\n- **list_searches**: View all active search sessions with status and result counts\n\n### Terminal Tools (7)\n\n- **start_process**: Launch interactive terminal sessions (Python, Node.js, bash)\n- **interact_with_process**: Send commands with ANSI-aware REPL prompt detection (strip-ansi)\n- **read_process_output**: Retrieve buffered output from background processes\n- **list_sessions**: View all active MCP terminal sessions with status\n- **terminate_process**: Stop MCP sessions by PID\n- **list_processes**: List all system processes (cross-platform: Windows/macOS/Linux)\n- **kill_process**: Kill system processes with confirmation token validation\n\n### Meta Tools (2)\n\n- **get_config**: Get current server configuration (read-only) with security status and metadata\n- **get_usage_stats**: Get server usage statistics including uptime, tool call counts (successful calls only), and active sessions/searches. Stats reset when server restarts.\n\n## MCP Primitives\n\n### Resources\n\nExpose server state and configuration:\n- **config://absd-mcp/server**: Current server configuration (allowed directories, limits)\n- **state://absd-mcp/sessions**: Active terminal sessions with status\n\n### Prompts\n\nPre-configured templates for common workflows:\n- **analyze_codebase**: Analyze project structure and tech stack\n- **setup_python_env**: Interactive Python development environment\n- **search_and_replace**: Pattern search with guided replacement\n\n## Security\n\nThis MCP server implements multiple security layers:\n\n1. **Path Validation**: All file operations validate against allowed directories\n2. **Symlink Resolution**: Prevents symlink-based path traversal attacks\n3. **Command Filtering**: Blocks dangerous terminal commands\n4. **Input Sanitization**: Removes null bytes and control characters\n5. **Zod Validation**: All tool inputs validated against strict schemas\n\n## Development\n\n### Running Tests\n\n```bash\npnpm test                 # Run all tests\npnpm test:security       # Run security tests only\n```\n\n### Building\n\n```bash\npnpm build               # Build for production\npnpm dev                 # Development mode with watch\n```\n\n### Testing with MCP Inspector\n\n```bash\nnpx @modelcontextprotocol/inspector pnpm dev\n```\n\n## Troubleshooting\n\n### Server Not Appearing in Claude\n\n1. Check that config.json path is correct in claude_desktop_config.json\n2. Restart Claude Desktop completely\n3. Check Claude's MCP logs for errors\n\n### Permission Errors\n\nEnsure all paths in `allowedDirectories` exist and are accessible by your user account.\n\n### Command Blocked\n\nIf a legitimate command is being blocked, review the `blockedCommands` array in your config.\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new functionality\n4. Ensure all tests pass (`pnpm test`)\n5. Submit a pull request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Author\n\nAnthony Bir <anthonybir@aena.edu.py>\n\n## Links\n\n- [MCP Specification](https://modelcontextprotocol.io)\n- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)\n- [Issue Tracker](https://github.com/anthonybir/ABSD_MCP/issues)\n","readmeFilename":"README.md"}