{"_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","_rev":"50-8bc386be145f9c3e0215aeabe16f6cf1","name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","dist-tags":{"latest":"5.2.44"},"versions":{"0.1.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"0.1.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@0.1.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"16198c356de5e7ff9cfc48e452107d16ab72d3fe","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-0.1.0.tgz","fileCount":19,"integrity":"sha512-6m1iAyf0n/2yxUE3gS4g3hQyzZPo6W7t2+thypjcXP23MqwmL5veLuOmE72WtLTkV29xWUa/LEv6EJwTOSdxbQ==","signatures":[{"sig":"MEUCIQCEmTXJnTyOrGBL8/74Nrv00Ld1eyRd8WkbUgqNECaChwIgQYKdQ8GBzlLgaFFV9LYa7QC8W6E41gFYf9dicvMkkK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33219},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"c0d08848d57e80bf62bece8f045e5d508772f198","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint --ext .ts src tests","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.8.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"8.57.1","vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.3.5","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_0.1.0_1772896836529_0.3101741651565544","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"2.1.3","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@2.1.3","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"51f079ac98f991b9ca9f535ca3446b987ddde0ae","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-2.1.3.tgz","fileCount":79,"integrity":"sha512-4IUERx4wCdC55kamHzArLnJHUG7MhC9+Yqi9/0k8QMxIcyOFmLVjh8lSnfUyMKuqVwlwQJK+/au2jI87TuckQQ==","signatures":[{"sig":"MEYCIQDDIt/FSMi83ki6YMIkA1zpJJ55nzd4LRd9EmWdSLqQQgIhAPbksvaBhdUXcjOmaVRI5aKD1hO1/YO/LjAIIDb1AL42","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209269},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"97ff45f819b25e6c119998392349ca88d89e45d8","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"8.57.1","vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.3.5","@vitest/coverage-v8":"^4.0.18","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_2.1.3_1773144967631_0.9894047673971638","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"2.1.4","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@2.1.4","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"46c69b6df082da2971ad43d10281b69ecd8f2dba","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-2.1.4.tgz","fileCount":79,"integrity":"sha512-QzbZexDBv1fjeHeGb/8q2rvMQLx86sa2uXdz+0mlFS2s85AkjDMpa+lZE9icPewK4EZWyZ+lh0QaknP0mdPIew==","signatures":[{"sig":"MEYCIQCKU1hZRMgrxeRLErO6yJ5zGCU9ezymB8CNfexXA/OBHgIhALnqDR1VA2IL149DLyiT+8r57yLOiwgQrxoTbKHqSpaf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@2.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":209270},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"17e68308b067cf123b19380f2fe6048aec5acaef","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"8.57.1","vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.3.5","@vitest/coverage-v8":"^4.0.18","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_2.1.4_1773146993335_0.8153165621033898","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"3.0.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@3.0.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"7fc8c1c8e35b2bd9b79f8f8c394c9d318f4f93af","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-3.0.0.tgz","fileCount":79,"integrity":"sha512-i24VhZdhWPYvNR6wBb9T0ebkgP+2TirMGemE1S16FrlI/VsdhmNnjhxmpKF/hmnUUEXmWaqtlo/AXPkJGbwAVw==","signatures":[{"sig":"MEYCIQD/ohWgGFc74yvfRayBjFx1ON8meRo5DTUFyQbYDKzHTAIhAMKa+XrQM41/w2rRolkKZrSCnYoBueVUDoArTG83XzOa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204373},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"5e921222680d465e45324ccaeb6c7e585cfc46be","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"8.57.1","vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.3.5","@vitest/coverage-v8":"^4.0.18","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_3.0.0_1773147061173_0.11225537810400477","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"4.0.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@4.0.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"643d4287abd09da1d53217e10e16ab30d675c0db","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-4.0.0.tgz","fileCount":79,"integrity":"sha512-TaUIPhOz9dxw8vpidtrx3vLR7WVQDmysn2ATdb6q43g5eSamjcAFX4c+UYQ3PtDt+zJdYWwgoj5K908hkUyIPw==","signatures":[{"sig":"MEUCIQDxqeNX1sr9jcZKE5e75UdHLvHIGfRCH/76ckTziRjilAIgTCbS60NbBSrnhlNvvIZvSQaOrXrMKAXiVLMwteTToWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204373},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"c65c0004c9df6aafd936e8b331e46eaf95f0f9a6","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"8.57.1","vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.3.5","@vitest/coverage-v8":"^4.0.18","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_4.0.0_1773148623085_0.8177204026693639","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.0.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.0.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"a7ea3fddb99134e6cffd89f144a657f5653eee12","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.0.0.tgz","fileCount":79,"integrity":"sha512-ixJTLNg8AYeB2ITj58qDY5frHwHEZR1io9HlKoMhVBowRxrg8rkMzR6rm+SJMDCu/25O+GK7A81Z60oWx5AZFQ==","signatures":[{"sig":"MEUCIF4jvTwnSTVZgVlh6XZegeZWiImEuXUZe+dyzBzb1cTCAiEAqnCJoZLZ6Qb+MmflRY7IJcy2b61OBP6jQv5TtOwI3As=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204402},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"e9618c03d38f464f54aa8082124195b8d44cdc41","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.0.18","@eslint/js":"^9.38.0","typescript":"5.9.3","@types/node":"25.3.5","@vitest/coverage-v8":"^4.0.18","@typescript-eslint/parser":"8.56.1","@typescript-eslint/eslint-plugin":"8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.0.0_1773148691092_0.7033798657934329","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.0.1","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.0.1","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"e7580474d639273793db2608e35ff7701a75024d","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.0.1.tgz","fileCount":79,"integrity":"sha512-5Qa/d8z+i6n3Guy79Jly1QQ4ScItcovic7XwKaSbZzHFoGj9SNIt4zlHEbyHg5vJby53jsCe4t1CsnTAfQf6DA==","signatures":[{"sig":"MEYCIQDOiQdAmO2cbLWYIKA1l4TkLNwK5cHGZWMZMSSbuIGIwwIhAPCybuehGOL55XI9oYVJmLupTgPJUgIrLzxuCgtcX29y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"2f01ffb8fefc0b09be3b9d547fbaf3dbcbbc87be","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.0.1_1773477257636_0.092499496414292","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.1.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.1.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"8d1c5891ddabb99c5b8f0b897317ef9a6ecd8a17","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.1.0.tgz","fileCount":79,"integrity":"sha512-NPcC7mpFbUWLJjYcs+d9gTZfntS3zNqsXVRD4AeY2ftUxNFRyheMS1gZHp4LnGlvrQwT710sRshXIztt+ez2nw==","signatures":[{"sig":"MEUCIHJB7USIj1fz9LD6RRp+xKWQZuLiUhHUTbMw4HpRv0PhAiEA8NB6dPvxn+ZVLKVmr3YRxIdT0tIjlgxrKUUItr5tz9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"bfda79817d2c8386a622e82a185b8423f0cdf853","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.1.0_1773645372032_0.0724782736331917","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.0","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.0","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"d2f9bc895ac1d58b0205d346b10d9c97b945c059","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.0.tgz","fileCount":79,"integrity":"sha512-cG2mJeC1Z/egWt1Cz+yyScDlV0XxzuhBDuXT962zGvPcDUJZbFIkGY+Gwhqw3tcaB+g2eto7MiO8y/t4Nkor8A==","signatures":[{"sig":"MEUCIFJuDWZquPXrDZffEhlH0FHmVAHnjMENbcB0Bv/gX3IAAiEA13gOpemw4zml4uxHlJbN8BM7w5Cb/EiWWarFLEFkyFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"73071b8389032a8193c7a6119564eeea176a2482","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.0_1773645444148_0.4769992131905956","host":"s3://npm-registry-packages-npm-production"}},"5.2.1":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.1","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.1","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"7ed9e4973c8c11b825e89c491c449e6d6c275730","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.1.tgz","fileCount":79,"integrity":"sha512-ptptMawPw7NBIEHJCIInoV/AM2C2he5D4BMAdj4nI1+pA6w7Cd4vxz0quDLzgc3lIXLxylp1O5LGhO7T5B6nrA==","signatures":[{"sig":"MEUCID6UIweoSHZmVUtPflgP7Drym+YjhhG4zPa6C/I0evf2AiEA8s6k7Qv8096xncCCymsw8U7c5QEfApIY0MVT4S993Q0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"73708ad3f39b0ff17d41bdeb426024a313922560","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.1_1773949039366_0.3952352875821388","host":"s3://npm-registry-packages-npm-production"}},"5.2.3":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.3","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.3","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"99c6c380f95f0c55fa1a951ea4c945256427261c","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.3.tgz","fileCount":79,"integrity":"sha512-pfXuHWaqw2Cwx3ndxgFzFori37MTnjsC2uSMomIdaSK7rh0InyIMdZUYcFFPT6dq3DGRFRhQzDd5zft30zMzOQ==","signatures":[{"sig":"MEUCIQDj40kRYgqyhExu7oiTRYQ5gV1tPOIevm5qL+2udyQtmAIgFZ1wbrKio54OWNtbBKWggVoyrZFESuBO9zMKK/evTGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.0"},"gitHead":"b10775da4c651aa57b879a78ee5f65a77f045737","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.3_1775029694478_0.9632758666810197","host":"s3://npm-registry-packages-npm-production"}},"5.2.4":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.4","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.4","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"2414c175d80dcaf093b1fb103aa88926e5d3ba68","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.4.tgz","fileCount":79,"integrity":"sha512-mE4vsNd2/D72PjP2qvsAU4XHPtyRYKRnVeHr9+wQSWxVYNRz5OslL8b4+WBs5/mj5e3Tbzw0AsN4OpQ36pq9nQ==","signatures":[{"sig":"MEUCIQCAp7HIv7IukXsMvI4Bk0wPDW8GMpCNWI2bpbhqMX7LuQIgcy0BpHULKjtYw471pKN61TKeCcfYYIEWFCt3fbrTim4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.1"},"gitHead":"7cfc7c37bcb9b34f35df9ecffc1c9e5b2e927111","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.4_1775209476222_0.7911444656173405","host":"s3://npm-registry-packages-npm-production"}},"5.2.5":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.5","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.5","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"14a96218b8e8fccffde8662c6457ac644c80f520","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.5.tgz","fileCount":79,"integrity":"sha512-8QLqS9FZrcjAaBc2I3nF84JCId8aDRoYOjIhWNu9m1I6/MGpdIKQA2eajQHHH7kFcFBB4FGSMCQMh+Z1luefWA==","signatures":[{"sig":"MEYCIQCK7Le6gjqdSMehiTn6tkPakm9PHVmyrSDcjV1MhDB/ZQIhAKkS5NFLPmBQ4ph0PHbvkerfgBmC2OJQFCdz5AsjPymu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.1"},"gitHead":"be24ee027580cf6898fd09c338cc553474bfe3d0","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.5_1775209543530_0.652708491245569","host":"s3://npm-registry-packages-npm-production"}},"5.2.6":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.6","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.6","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"1c2968a52f3ca84a58124994b3d1a0f6521fb47b","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.6.tgz","fileCount":79,"integrity":"sha512-K29vs9MyYSDRJCbdVQzcFvA6EETCdffAjLucDrve1F3j9AXL+eXuj8FM//W1JwvMvi5m+zFWraGOD3nMGkgHvA==","signatures":[{"sig":"MEQCIAi2+vuY+QCoxOivIqGFnBOC39f1fDo/4/Zp9P1UT2c8AiA+tGJc6XWTUeslyiZRq3A5bZmR6Y11sZTgJZgdsIr7/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.1"},"gitHead":"1a3420ddeffef9371c15caa48e07c736a0a8781e","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.6_1775209647740_0.6685343535996326","host":"s3://npm-registry-packages-npm-production"}},"5.2.8":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.8","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.8","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"eed0ddd3b58293bde0dbdeffde3f8cb814a915a6","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.8.tgz","fileCount":79,"integrity":"sha512-GMg1qyzybhLJd2l0xHu7qyicwugmDbG3BsPt/F1fKFrxkmXzkECw5DAz0H0Z2p10NzWrvJLrWnsHgHs5uKBIUw==","signatures":[{"sig":"MEMCHxvYsxUZ+elkSfNVNpMrMegyM+AhAyqILCdZhuOgGxgCIHtbsGLQzJ2LUpeuo9ORrSy9om5g9P8m6Jx9HwfF2uTt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.1"},"gitHead":"c49c5ba0546926a6a2f8c3734535ac60cee8012b","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.8_1775223489278_0.6219947702192403","host":"s3://npm-registry-packages-npm-production"}},"5.2.9":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.9","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.9","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"7b396f9dfb1af8cf9d912ce270046bd979ea4768","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.9.tgz","fileCount":79,"integrity":"sha512-O1OkHkMUaQ9s7NHZWDU9oOI+klbiqfh4CFd9zA1ivxU4yoq/M1/AEFLAHXrNFLgZfPn3MGQ/wYmh7VwHNp08NA==","signatures":[{"sig":"MEYCIQCJkgjE33vhV7ENPiIZbdD5rce8AczGiu7VPs5q9faYewIhAOPsymeKnccuULz1XcXHu8V8BUtPOgan78/cuzKo0V8M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.14.1"},"gitHead":"f06fed69767331c5be7a3470d90d11d30fa92553","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.9_1776965647083_0.04700429174356735","host":"s3://npm-registry-packages-npm-production"}},"5.2.10":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.10","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.10","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"7feac9f13ff1608e368de951424e471e525bee72","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.10.tgz","fileCount":79,"integrity":"sha512-EVi4ET94b+h0js28oIJTFIOuJvyfJQWfcZRDzy76bWsDPpibhWQ0yPym/p2peXnJf3lH4QYhGfDVEsRgjTRteA==","signatures":[{"sig":"MEUCIQC/FlE6CMURglFiQ7fcndigwbqh0gbZEBctSeUQReZYNAIgBjtWRRZoTo6XVdU4E52ffzWksKs7GxEEigSTGxsTtgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204402},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"5c5923de986a79a9d4f63d58be0521f5669fff55","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.10_1777236378742_0.7477211437912235","host":"s3://npm-registry-packages-npm-production"}},"5.2.11":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.11","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.11","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"639b69cf06044f803070d95c5e77f00e2d62f867","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.11.tgz","fileCount":79,"integrity":"sha512-4p3h9MnKqQ9AXXLsIxVbn/9VrVgSKSsEBPnFVvKPR/g18nzeSmzLODqEzZ4EWKe+tC3X5WdVb1GCpGWqSaH4FA==","signatures":[{"sig":"MEUCIB7k/LVlXs0quL40ympCDReU1Fstm6MC2JcYM3v/Yu6CAiEA01qN1gxwhXX4W2gIxpQmEydSDdHzH0YFz6ALncpAEvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204402},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"1c28b790807ede41c4af82c7c2cd815e097471ef","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.11_1777341845763_0.9000941169766172","host":"s3://npm-registry-packages-npm-production"}},"5.2.12":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.12","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.12","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"499325c61cf982c6e0451026b0d52d4ed89ad37c","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.12.tgz","fileCount":79,"integrity":"sha512-R/VXYazWz39NsUWl/EZeoVspLVVtDpdwym0DVfWHA3+rtZHZwBZUFj80d4arhJdJHTAYvarHHijgLnYOOsk6lA==","signatures":[{"sig":"MEUCIQDmPb5W1StZ+1ca3B9y4NnIT6CxEirGkpwr9FjzstyCgAIgF1IzTBTskOEkvSQ/tXEclTAWQlfq1L92DLlEbk9+dxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204540},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"ca0e5d1975e5c3c84d1b25a7d8ddf7d8b82cce23","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.12_1777739930936_0.9113775525562495","host":"s3://npm-registry-packages-npm-production"}},"5.2.13":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.13","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.13","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"a53dc2e6df99261d9e259a286448b0f20801e97f","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.13.tgz","fileCount":79,"integrity":"sha512-/u9mWhwJc+/XsFdjXVniJXk5tyLE8orUNG/BMmyQtVAeXsHjo+ag6AStL5xZunfCCs3jx6bGqbYpNKeV/0p8ew==","signatures":[{"sig":"MEQCIDpEOx4Qlknv0HR8uH0ROHbSszmnfB8WougT7WsYpmS7AiAApQMZKZvqu6fYs/QK/UVE7ZYk0MIP73k/6NXdyLZhzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204473},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"a697cab16d91b8bf8c9a2380a6adb7578973446b","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.13_1777740129404_0.5003016570296515","host":"s3://npm-registry-packages-npm-production"}},"5.2.14":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.14","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.14","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"144cca904779ffec941abc15e1ca8e8d80ed00ac","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.14.tgz","fileCount":79,"integrity":"sha512-SQxE+6Xz7DvHk1rWVyK/LhQr8cuWBd/ksZgOa3TZdLZz3jHH9pifdeI0AQEkYBfQspjNFr8inofCwWt12rFiVw==","signatures":[{"sig":"MEUCIDZwJQyNPX4G3PI8xTzRXIga+GaTPNqolfT/g4twgylAAiEAstwC2wdrAvUiH4jip6rPxyLSh0jsFN3B3Tnu7QdIJas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204473},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"a628579e9a40382ed8831c716819e0703699557b","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.14_1777771693676_0.1281711112783297","host":"s3://npm-registry-packages-npm-production"}},"5.2.15":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.15","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.15","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"539c7350d15af7908dc19330d52d5e87de7f42e0","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.15.tgz","fileCount":79,"integrity":"sha512-XAWPcXJqFSaBa5NizKvr+AhV9LeBAWv+N6kiSyOgp19O1OM0fShVN5oc39/MCRSfMrTHmGQgCCAvy5vP4OWu5A==","signatures":[{"sig":"MEUCIGem9UVSPizC0HM5Ff5ogs3GQ5WSlAEp3nPnCOJC2q2GAiEAji+jhY/C9Ry26Uw1aR2RJwrHeM1ZZh2OjJ1nAjbzyrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204473},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"7200b764833538728610e19833540b4c1e6cc44d","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.15_1777772008904_0.06912085218803332","host":"s3://npm-registry-packages-npm-production"}},"5.2.16":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.16","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.16","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"6d294f543df62f36913fefb0081371d2a428032a","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.16.tgz","fileCount":79,"integrity":"sha512-xnSDF99+IgD/VIfQ3jlqpOjxktMSm+ji8V3vBo3G82Db+RnbzjGVxXMa1DVJsGu4q0SQEuzm4hchOiowjxU05g==","signatures":[{"sig":"MEUCIQDkSXRmmYETMi3cujicb5yWbnFRZ271GaP0/bFk3hSbiAIgL4dYbM45DJWjwGNyAXL26fcPFs301aAnnX5Kg6PzNbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204473},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"e9e15d9614e9e275f885e5fe2b440f89a3a67a8e","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"10.0.3","vitest":"4.1.0","@eslint/js":"^9.39.4","typescript":"5.9.3","@types/node":"25.5.0","@vitest/coverage-v8":"^4.1.0","@typescript-eslint/parser":"8.57.0","@typescript-eslint/eslint-plugin":"8.57.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.16_1777772083896_0.004703594505161668","host":"s3://npm-registry-packages-npm-production"}},"5.2.17":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.17","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.17","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"b1d1bfaeaa149378cf468ff66d75cefc3631a88b","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.17.tgz","fileCount":79,"integrity":"sha512-KwKGwUEEKnyGyrLkF868D2nMk4gLOZsCfLCipDvYARvRCKBNl2YINPYipahf7Bv1CdOARUx2iss4gt+mLq/Fhw==","signatures":[{"sig":"MEYCIQCpVVOsgHlnrHxGHn0OtbbM1rgpaU4AzBoD4Eo2gs2pCAIhAJ7XkWvwkVXCZbmnpTh9Q4pB8UwH4Z9/ogJPA/30AGz0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"9dd7953e18ca37b52f6c0c9069a94cfb9fe2b6b2","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.1","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.17_1778111089952_0.6308268450481178","host":"s3://npm-registry-packages-npm-production"}},"5.2.18":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.18","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.18","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"2398fc6c725a0958bfb8009ec10d7dd582b5844f","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.18.tgz","fileCount":79,"integrity":"sha512-iXdt7JrUMYMMHAXkoTYXlE7YMuXZ8/EHr2Ec/zUyg5BbdFybvYjdu2F2RgudYa887LltLh0dkWHQTeD3fTcdhA==","signatures":[{"sig":"MEUCIQDBvzmXPYSKjHMhgntPnOR3adHwfbfUDUIAxmdCfaqKjwIgIfjtNuVC6vM0c3yUosFAzQPhuz4u7fyjmGRknbWL19o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"6a14d4d1156bccdb624eca8578d89d8866cc447d","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.1","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.18_1778354857118_0.5303860641778286","host":"s3://npm-registry-packages-npm-production"}},"5.2.19":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.19","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.19","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"98df8254a7d1dc24b9b80d3e053a75581149361a","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.19.tgz","fileCount":79,"integrity":"sha512-0ixzMBhMyVwhHnljLVqJJr2cwuUwDNNzA4aahlW3dZx1wd9M3YL0jLkXgckWkYTusX7Ngdf+X/jvZgqslXIFCA==","signatures":[{"sig":"MEYCIQCibZL1OWMOweyzhDHwQuXPPl4FR1GYlq8Tztp+iuCRHwIhAIVT92xoA42dEgVP+EBOoDophyHDS9lwmd8ruUMGGU/U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"3a4194223122548469220823852b4a985b2dfc81","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.2","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.19_1778354952404_0.6053660156559291","host":"s3://npm-registry-packages-npm-production"}},"5.2.20":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.20","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.20","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"464c3ebabd2c6d3a95212b88c71333e21dd915a2","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.20.tgz","fileCount":79,"integrity":"sha512-jAPA8uoTg0TCRtpmyChIk0HwlyqplqSDpnOwIIhTWU2UjDEdyzcRW6x+awiWCR7ZPJnqpLi+vmjSV/I19xKYPA==","signatures":[{"sig":"MEUCIH6FrhL+N3N4CmZeZBAQ2hcB8uKQ3HPmCTuXEedIlQEuAiEAiIolxZX4XZlHGd1n1l3rj4Uk2hVnFq0czJ541FudBhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"7c432c3a1c816a39b333681419333ed75b826d5c","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.20_1778355031327_0.9781808850854092","host":"s3://npm-registry-packages-npm-production"}},"5.2.21":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.21","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.21","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"09a3b1f8245e8c930ef642e5892fe31b05e06cb7","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.21.tgz","fileCount":79,"integrity":"sha512-yXxlCKtOTY0T9bZ77D2Caf+CQVmIKfrA2h+ktpIRjCYKQBBQnWFwWk4fZ+EBfQZfUG1xdQ6Hq95GPjmvY2DENA==","signatures":[{"sig":"MEYCIQCwjqYRlH4LIvv/OZvOzxOKKk1aqk7LfwAPkajtbqg9PwIhAOdcGUnHtiFtwgv2+sZY/MIHFZ5gycq12LVfFstF4Ppa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.15.0"},"gitHead":"02ade577aa13699af82c340d366124eaabcbad2e","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.21_1781124368998_0.32741575311285964","host":"s3://npm-registry-packages-npm-production"}},"5.2.22":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.22","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.22","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"0777d37792233785bea93863f629e7e04c0f4e5b","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.22.tgz","fileCount":79,"integrity":"sha512-EooPhhP5ir0/NJCqy8pQD5T42pnoDFZ39BvpFzdZ7GeX8FzwWjoKAYthB4LXVRjELnKJuaX6SR6lYLFtIRxQIg==","signatures":[{"sig":"MEUCICDx7AH3/qyCwrFIcg9jS7sxWdyFjlO8hs//+lZ4vOS6AiEAu6jf92o8RzGQ6f2Fs9NOyeDSfSx7tu/9Mn6jVe1q9H4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"78c9dd322ad9333a912b3ba4edd0feaa4ec6e8ff","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.22_1782764230772_0.2502329792324687","host":"s3://npm-registry-packages-npm-production"}},"5.2.23":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.23","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.23","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"9890008ca53c83f48f671d60b9e3a9bf95a11230","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.23.tgz","fileCount":79,"integrity":"sha512-eXVmo+VlmzP8/LMwGxgU6v062UXS/ZYnvn2FYMhZCVxRCm3tL/GSsnCIAEM5NNrjWkJldYAidEXYVLynqMTIdg==","signatures":[{"sig":"MEYCIQC85dPPdtwTixI7myeLkNuK+axPJuS1HnKS/ThCV1SbXgIhAI3gER6yV4PIoonRkwIFJ7E7NWXXov7iwcqpiMbeWCWa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"e4790b94633559ff53fee752140d2d030ec00a75","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","eslint":"^10.3.0","vitest":"^4.1.5","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","@typescript-eslint/parser":"^8.59.2","@typescript-eslint/eslint-plugin":"^8.59.2"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.23_1782764304801_0.2626796940186744","host":"s3://npm-registry-packages-npm-production"}},"5.2.24":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.24","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.24","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"488c2f0ef5cd009957c53a0016ce9b4a2cd305d4","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.24.tgz","fileCount":79,"integrity":"sha512-9RSgctRE/etnK7fPEyp7l7uJ7hJhVBGl+0fef5MgG9SE7PDbPWAKEdUDPv/+4VeGKH75s+1hZn3+NwMvAscYKw==","signatures":[{"sig":"MEUCIQD7+d0DazhTXQgs2QILfGZXhqDXS0e5nF166oNBByO+9wIgaP/nGsMxKPFhuRM/UdUs3mZhUVoth9oI9kVC8xm6BBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"161650f0ee9485196206e1e92e51ce9cb90ee36c","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.6.0","vitest":"^4.1.9","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.4","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.24_1782764433922_0.4158036123345765","host":"s3://npm-registry-packages-npm-production"}},"5.2.25":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.25","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.25","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"6385c855d47151818e07893fbd9a5a2f3c881057","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.25.tgz","fileCount":79,"integrity":"sha512-dVftXfBYzxoTIJrnj5f2KP16OmipYLK0pis9uSZf/m+CqEX/90mYt4cvNGy6IxcpYprrORRfRfpzAZHCn+Wx3A==","signatures":[{"sig":"MEQCIDN/hELzDiQ4oFDs4QfK7cJUANyZWG42etB3aOhuxAtlAiAeaDOKFfdY+/4AD3G3gANnErKPcT/+c9I+kg/ePhZm0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"829face84b9c7d6361f8e216d1f303403f7d1f18","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","eslint":"^10.6.0","vitest":"^4.1.9","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.4","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.25_1785877153963_0.8834595309423112","host":"s3://npm-registry-packages-npm-production"}},"5.2.26":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.26","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.26","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"0b2f614795d1a502d75a649c629b8da7ce0287dc","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.26.tgz","fileCount":79,"integrity":"sha512-Ko8K2Z8KFjMorheo7s6CS5cIeZzjYn6IjRZMWn7uNrRlmSiE2ZZveL8YlAhlWcx74BurkQKc2Hu6ryp5P4daow==","signatures":[{"sig":"MEUCIFPVpiI0OnUtD4sLU3iI8oNKit/Y5y2fEqOJIbkh+gBcAiEAxa/yMD8l3Qu47ioqOY56Yv7/Ym0R73e9recnIRJGJAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"f147faf71af2ea1cc594a23ddb5e344a6eeb0533","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.5","eslint":"^10.8.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.66.0","@typescript-eslint/eslint-plugin":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.26_1785877232149_0.7786588300301873","host":"s3://npm-registry-packages-npm-production"}},"5.2.27":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.27","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.27","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"014402fd83a55184b0b2fc6db4cda87d42938c73","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.27.tgz","fileCount":79,"integrity":"sha512-v8h6ZKIOEIlIFLgZG0wOwW3fG+dUGKaUJp78FjgBkpffMvu/khfxsinmUOWFDmetd3ynB/GoheP0jPhdsZvNBg==","signatures":[{"sig":"MEUCIQDX7THN5MIaOxw0YfAfPQC9q8kLagOJCxImdQNvWvCBLQIgHJUJHY0cE3B0jLMk5iCA+MkK3vh8IHFmNs6iJRpNLLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.18.0"},"gitHead":"afc8e0afdf537023845035989d3320b126395ecf","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.5","eslint":"^10.8.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.66.0","@typescript-eslint/eslint-plugin":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.27_1785877310249_0.06507836232107955","host":"s3://npm-registry-packages-npm-production"}},"5.2.28":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.28","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.28","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"4435257d932925f3b255759d27b53290273d522e","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.28.tgz","fileCount":79,"integrity":"sha512-TwLclGNeMsefQNqrEKGTTSdaq1RpMH4YtUpYFZVUGf39kwFkHnZhVXCWlIb5GxthHID1DWC7JF+q5grY0q98zw==","signatures":[{"sig":"MEQCID3YoefMPCC5w0wuMkEGMWs+GAIkICRtaO8iGUYpLRb/AiA7w204S+4h8zFzjT5U2E4goWBARwx0FKVZ9YFx7P+nBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.19.0"},"gitHead":"3e0bcf060242aefcd426eb3834fd2a2db76d0a95","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.5","eslint":"^10.8.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.66.0","@typescript-eslint/eslint-plugin":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.28_1785877390705_0.11877057444873484","host":"s3://npm-registry-packages-npm-production"}},"5.2.29":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.29","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.29","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"d5a1d64631dcf703b137b7fcf7ec8f9d868f070d","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.29.tgz","fileCount":79,"integrity":"sha512-LElirpMNnFB6LtFecU54CMsZdC0glRDMrF77RupHgSl+lUy7urfZY+Pp57gFjSLP9wKPQpr3eOs1F22+3q6wog==","signatures":[{"sig":"MEYCIQDqfRJLHOFyDleLhHqY0zD1ugHzVKjdjJcPudiqiEmw8AIhAPKbRh6CBZ05ryit7XbtP50IBfq/FeyJOD2XSMr/yNRq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCWOBJAlkL6sjnjn4wxJNvJv/FhFCARncJNoV6KlkrWZwIgDPRxf20vReK3LGpjhiqmuw+mcez69U3DlYHJO7dYOCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204467},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.19.0"},"gitHead":"265fa9c0ed6cf196fd17e4a77f86df4c60aad89c","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"4.23.5","eslint":"^10.8.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.66.0","@typescript-eslint/eslint-plugin":"^8.66.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.29_1788167809548_0.7190970104250887","host":"s3://npm-registry-packages-npm-production"}},"5.2.31":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.31","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.31","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"37b748871ad5049590cd50c295f45390dbda7e5e","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.31.tgz","fileCount":79,"integrity":"sha512-gjfdXhCwZ9P7+5Yj8ilxiuTRmKJc9TMg+vHpVrmLiW1Wj5jf00KIhGqkR480eLs+y580Ct6yzVKO2dsYX+Y9mQ==","signatures":[{"sig":"MEQCIBeyDPuUwIyCgtZmvKplH8ERO0H7kBYNKZu/cyodTNhhAiB+VfhsZqW1PxYP1ILLE7cIBP7eB3TaLWTq+ZT1YCXKaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDfhrpJArR7Sra61DikFiGCb6izIHgUr5wmpzwk0wGBWAIgSk7LKdWdv2erRGYVatDjCt9BxOWP7rZmIsd0g7pXEpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.19.0"},"gitHead":"931c48764f930e9217c529f14895545f7d9b27e1","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.31_1788167944453_0.09244470048462494","host":"s3://npm-registry-packages-npm-production"}},"5.2.32":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.32","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.32","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"1ca6c49940d7997c0c42bee18111b323f5c896fe","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.32.tgz","fileCount":79,"integrity":"sha512-tAQtxbDdNGHZlREDdIM5LtwTokSZ89gtflgBC4ujfrkfpUCxlk4TDr4sHRYkdMKRYkdv53SgMl98iPv+/Oyp8Q==","signatures":[{"sig":"MEQCICyk/EB9phG8EPJmcZCsURcLOnsuy4uzp9unIjJ91HH3AiBxGB00hMJTXvk9w34KFxcE97ZFQXTpX9qw0pszU5n6Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDom7CRfxeBnjWn2UZM/B6DDzIov0I+zx7b2LwGz6BpSAIgTHCXNDKO6jttl/ZNcVsXZXrxOn9fs6lL82TouwKNkUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.32","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.19.0"},"gitHead":"60959c6bc439e8be1bb3b978aa3fbcf8d82520e0","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.32_1788984789388_0.160448164708912","host":"s3://npm-registry-packages-npm-production"}},"5.2.33":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.33","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.33","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"de0f39efd25563a5fa823073cf008775cfc40921","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.33.tgz","fileCount":79,"integrity":"sha512-Ag4kf/rt17f8kog1WthZibKjjbnC0hQ1l1CakiNRfOqJ5qbBeMRk39upSUu3wcGrUhNdZ3Dd7o7HnZNl6ysWEw==","signatures":[{"sig":"MEUCIHs4tU1LIocAhu+3ZrelLMk9WcFdAx6Eo644R/ai9fDPAiEAyFamiap3uLwICILhT/5BTqW6sr8TVNYZsC78oov2aNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD0MfSMEkuaKyCV5EUSFjc4xXkzyV0hA/IZnAkcy2oALAIgOML2fRU6aHMzMguDLj+foxWxICImwAOpmzGfC9vTAsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.33","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.19.0"},"gitHead":"67346f292459d90a72cbe56056785f888aaf0f54","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.33_1788985927463_0.021428929412608877","host":"s3://npm-registry-packages-npm-production"}},"5.2.34":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.34","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.34","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"3a03797318cbe466006d01376876b5811a990d86","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.34.tgz","fileCount":79,"integrity":"sha512-QWb0ae6uL4xgqLzx2dlWlkNzwTvH0q2DAaquSgdow6bs0i6sCQ9O9g8un14sQIema/m7JEJwXVdoPrla4/l1pA==","signatures":[{"sig":"MEYCIQCyGngICgqOyYWmoXnKu39PjAf5Zy00GbpyQF3lYj2odQIhAOMLyxQi1rbuyKxIx+RnGxzS03F9DderSKa2WoR7QPlX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFN8DbnSjr5XvFSRcuWJJc/psa7U8r8ZyRFKIebvHvsDAiEAthqi7DLsSgMcMeffSEv1lzPdtq0FJIs/ou2vqJGRvLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.34","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"0d68734100f546b12a2be1202b4f155b0233b170","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.34_1788986038505_0.4617294205975433","host":"s3://npm-registry-packages-npm-production"}},"5.2.35":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.35","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.35","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"212cfd4583947c644150446f2b79a58d0bab4de4","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.35.tgz","fileCount":79,"integrity":"sha512-mIRO/PGnQS8r95b7VhomkDieBsUoDJQJA/1so3GDV7TZ8NBsTENOsveKpNklO8NYVEL3baBEGpvopFTZ00BPcA==","signatures":[{"sig":"MEQCIFC1WScrL1DaI9BV6TKHaJMDQA41igbYWLf6bMPK5w07AiBFXaniV8WBE4hG0XGtvNMHFy0/xjB4TY60JF+gG4AoVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQbU4T4rDO8dSgZLxK9CwwIgqStyRqFbcSc99AmvF7uwIgDqY22z+4bxTC0ehN8ggdac2uLP5XuUv/r00fwS2Fphs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.35","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"abd8febbafcb025b9338c863d38303011ec92eab","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.35_1788986080244_0.05769607986196501","host":"s3://npm-registry-packages-npm-production"}},"5.2.36":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.36","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.36","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"b2f73a32205e3b76cadda097f48bae8b34ad8250","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.36.tgz","fileCount":79,"integrity":"sha512-lypBnN+T4750BQtAolYLX72x+cZtXHysJFA9RaOKtGbLydu3MWN0We6hd2xaAqCMgQsU8p4V8/ocKvM44DPikQ==","signatures":[{"sig":"MEYCIQDEXlpyoYhMn4i2MUi8bS9wqjP9ZRu0Em3KOZp74K/yKAIhAOnE1ve9LJ2PREy6zsOjpDPLGaRcgSdPsOqXIUETPjfK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqrB8UnGPXxTVxLeoI1Ge2zikNjqs5tQ10PUPqlAOenwIhAPbDx2UNMTUsi9OEwwefYeDT4OEVMhoIOxPBreMKyxIp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.36","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"2bb3ceee1dac62766e6350dfb1fdb43004496a83","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.36_1789317182740_0.6269114881183426","host":"s3://npm-registry-packages-npm-production"}},"5.2.37":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.37","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.37","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"895e22ed9627bc96b40aab1ce6db0d167698449f","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.37.tgz","fileCount":79,"integrity":"sha512-DxWvhlEIoxVzu90Qvip3SyBdLfA7UDFQSYp7P0OQhv0yQMeVpeCpRtTwZG8rC2I5Q26GZk6Zyb3kQGiNF/Iyzw==","signatures":[{"sig":"MEYCIQCCo9aYmSUewmifa0FbEhd4AGKJiXBOhw0WmidbjdUoFAIhAKcsyjPh4QhMpuqfckd2PHJHx6xmZLE5mEjjrl3KARNv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhEPGgY69Hr7K51hYPKCG+TDfaWvZZfl1oN3tjla7n6wIgQEx1LaJQ7QT3hhguh9VYw9KzlflibEgV6VsBU4L1Bc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.37","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"8d33142e8e6bf162e84100989e4ae4b71fdb385c","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.0","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.37_1789324787046_0.0025495022854882254","host":"s3://npm-registry-packages-npm-production"}},"5.2.38":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.38","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.38","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"ce1127437e9eb8f15a9a62d04e7403dae8c8c6ce","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.38.tgz","fileCount":79,"integrity":"sha512-YzcU0jKhTyMR6yG/kEV+zhDBdZtbH+oIYwtR+vQRlhqr+JYXgLQKkMUtocw57H931LQbNCbv13IVRj3PoCcpHg==","signatures":[{"sig":"MEUCIE1nwwvu4ukYq5IZ21Ie8qiqrVNMROXzTazeCXn4tvf0AiEAiyj4WU9f0HEKFfCdZsiaV9Uu1750N7UOpSipDzBosJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDt3qrPm4GlCuaLVKQFn+TzsZ32lS7P25+qbIBKLARJMgIhALychkBycFyOIQQLV2cSpavWZytnJFCmQ5Gt8/WrJ/rV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.38","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"1d01dcd0e34f7d5887efde11602b356ad5b9b2e1","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.2","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.38_1789325651053_0.5154868051090113","host":"s3://npm-registry-packages-npm-production"}},"5.2.39":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.39","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.39","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"0c6d626b47c27dc7fba34db49e5b63d40021eb1f","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.39.tgz","fileCount":79,"integrity":"sha512-lKWjEgAvXLBzNMSV3M2ACAo2DsPRCwQ5QJ/B8atR0a8Cszs7n/ZCuJTiX702Nj5op0IFPcuW379JzLWU8OI2qA==","signatures":[{"sig":"MEQCIDn1FnYWxz3hvwhLvB1ggpR7+gV8PmMunTl7iU/1VplFAiAvy5rOHtPlMn7xspwkZ/qe8mY+rjyaDp9oq1jL5fGbMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDjFexCWNC7i+tmly48CzogtSnTc/DUy48QSG0TmVbkQgIhAL4EtfoQA/aAdQoK2yahh28leHloC3+vLXA1aklnDd5k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.39","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"762824a21e60d5ea048255f68b31e47cbeabeedf","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.39_1789332832794_0.7740203150722247","host":"s3://npm-registry-packages-npm-production"}},"5.2.40":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.40","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.40","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"6c09c48bcc4bf38e588a6e861d43654535974c59","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.40.tgz","fileCount":79,"integrity":"sha512-IkQOMC+zCOhzSj0YPsTgQndUWafj66Z2F4Qppl+cwFWfUpR22dyiWoXaYof+Ov5vjTCsRx5v4n53gG5QCiyz7w==","signatures":[{"sig":"MEUCICC/j+PxlluVCXO4z/aVeVvzthAjMEkEEdJC7ogaDCFdAiEAzYKq4hCoI8WIVuqym+VKero7JXpjwiJDzAyB6D/DFYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGwfHx/1elrOIOGbZG2DXSUosI+dHAkMh4GZlpckNkEcAiARH42kdjH8sY0DQ96KZj2WQUYeI9qKXiY8sj4TpNunUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.40","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"0b7a920956c52466b771e1eede8b23a6f14d9bbc","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.40_1789434933023_0.3555624151623069","host":"s3://npm-registry-packages-npm-production"}},"5.2.41":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.41","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.41","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"f2f9961bfc13429e23f65ec1ea6586b25965ecce","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.41.tgz","fileCount":79,"integrity":"sha512-RlZC7zno7egAtYHWAkTfK+5CCpHDAHqHZRCq3yOQGOEd6zvowG/JANlpPtFu396ZAgZ7oe6IJWA1ktlALG/rSA==","signatures":[{"sig":"MEYCIQDjgo6Of9cgyIQzXFdkQ9AAMU9j0xmsDF0X87Sp5FNJugIhAMw4NUVSJd5xdjuc1YgT1hhnf2WnXa7vvsMR7B1wot/y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDprQP+4lQ6STAeBEZ8Ieb3pPnM37YWtiXM2Xx+/GAwyQIhAIV3oxevtpA0D0+wDPjD3Q5WPy+Cy/YZ1EDus7M+m9+7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.41","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"ff87e368983d581d362c0c6c5d607fcb2935d4d9","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.4","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.41_1789672701288_0.5589413054221548","host":"s3://npm-registry-packages-npm-production"}},"5.2.42":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.42","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.42","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"f9cb3a1b6c328dfb600118d320b6174e0a09c36c","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.42.tgz","fileCount":79,"integrity":"sha512-qNKsyS44rzmbjkgWPS48nrGMnBTs3pUwQXVwsGKTbSZesx/G9lc9GojcWPtVZnjMwhJ+2fO62/xDs9lm3z35tA==","signatures":[{"sig":"MEUCIHZchmuePH6a8/y0MM/r9A5iBd30Vk/DpJNhkB8X3Hs9AiEA++wlUmKKYpG0em02fDAQEQg+57Ef6QVKw0tAcx2YAYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDU2WdHiEpqOmVn4F1ALvuV7et1wi4HAC+S+y4YfkTXOgIgd8JReY8ak4DIYa6NHctv1sLiMvsiRyMSGvouq5WbafM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.42","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"b9c63b0363158a62568ee959bb884cb67552334b","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.5","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.42_1789672707582_0.68514691988197","host":"s3://npm-registry-packages-npm-production"}},"5.2.43":{"name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","version":"5.2.43","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"author":{"name":"Carl Dawson"},"license":"MIT","_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.43","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"dist":{"shasum":"7e7cc1499df53bfb362770ae5fb1c2ec9928a897","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.43.tgz","fileCount":79,"integrity":"sha512-yiAt64TPgCqo8DgvDuJv0cbRKlW7zh1wMKyUMxHTQNHdYp+54hYN5fR1rzpWdG2XTE/bEGi5NwqrqRRdigfR3A==","signatures":[{"sig":"MEUCIAK+I+vmLQ+84NtkfkquTA294ajyrgF7rotArFJBJbcSAiEAkUdWSY3iobZWcnsPnpuR6npq8IXERTWhVAQI6J5U/X8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH6NWwXaXQc5jsYKn7AO4T7w+tAMbnHwfVUuWZ0eQi/uAiAUakjBD0Df1cKJMFvxwnq1GOtI5lxLEuiTP6RluXczbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.43","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204633},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.21.0"},"gitHead":"24e2468543aca940be381594d853ef8bfb91df6e","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.5","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"tmp":"tmp/terraform-best-practices-mcp-server_5.2.43_1789897997634_0.4172393972265336","host":"s3://npm-registry-packages-npm-production"}},"5.2.44":{"_id":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server@5.2.44","bin":{"terraform-best-practices-mcp-server":"dist/index.js"},"mcp":{"name":"terraform-best-practices","description":"Terraform best-practice, security, lint, and cost analysis via MCP"},"bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"dist":{"shasum":"923d810019e3a2df5bec5f5b27156c2d2e4b3f76","tarball":"https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server/-/terraform-best-practices-mcp-server-5.2.44.tgz","fileCount":79,"integrity":"sha512-2SHUk51ZLGU/1LASfgmOQiAelvRn3B4ZucrBOHVS2pkEahk0CCvcvURYgH8AkKJHl8OKHDheE4dFTYTITy2uQg==","signatures":[{"sig":"MEQCIHfXdwlCmAH0OhqGA1GkqQ1CYlD8BwSTjMnvyZaoVmxPAiBtFDQc4hBBObkPN7f+xN+LfZsopITCGS8TsQW4OXNTOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBCQM6hYWKDUYlJVvqH3ajjE1wA5RTol4XyV1N93YdgjAiAJKk19377z0wt2eFRiNyZlxA0gCaHMG06CxZian1p34g=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@downatthebottomofthemolehole%2fterraform-best-practices-mcp-server@5.2.44","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204633},"main":"dist/index.js","name":"@downatthebottomofthemolehole/terraform-best-practices-mcp-server","type":"module","types":"dist/index.d.ts","author":{"name":"Carl Dawson"},"engines":{"node":">=24.21.0"},"gitHead":"e3421412c6fb4047ac86681f677fcd47ba22d6c7","license":"MIT","mcpName":"io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices","scripts":{"dev":"tsx src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","start":"node dist/index.js","docs:links":"npx --yes markdown-link-check -c .markdown-link-check.json README.md docs/*.md","test:watch":"vitest","test:coverage":"vitest run --coverage"},"version":"5.2.44","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e3d3644-718d-489c-8a1e-1364b73ef34f"}},"homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","directories":{},"maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.5","@modelcontextprotocol/sdk":"1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.13","eslint":"^10.9.1","vitest":"^4.1.11","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.5","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.68.0","@typescript-eslint/eslint-plugin":"^8.68.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/terraform-best-practices-mcp-server_5.2.44_1789898074068_0.0033888875871186386"}}},"time":{"created":"2026-03-07T15:20:36.424Z","modified":"2026-09-20T09:54:34.516Z","0.1.0":"2026-03-07T15:20:36.668Z","2.1.3":"2026-03-10T12:16:07.769Z","2.1.4":"2026-03-10T12:49:53.487Z","3.0.0":"2026-03-10T12:51:01.325Z","4.0.0":"2026-03-10T13:17:03.233Z","5.0.0":"2026-03-10T13:18:11.294Z","5.0.1":"2026-03-14T08:34:17.790Z","5.1.0":"2026-03-16T07:16:12.179Z","5.2.0":"2026-03-16T07:17:24.306Z","5.2.1":"2026-03-19T19:37:19.590Z","5.2.3":"2026-04-01T07:48:14.694Z","5.2.4":"2026-04-03T09:44:36.381Z","5.2.5":"2026-04-03T09:45:43.677Z","5.2.6":"2026-04-03T09:47:27.951Z","5.2.8":"2026-04-03T13:38:09.435Z","5.2.9":"2026-04-23T17:34:07.206Z","5.2.10":"2026-04-26T20:46:18.883Z","5.2.11":"2026-04-28T02:04:05.889Z","5.2.12":"2026-05-02T16:38:51.123Z","5.2.13":"2026-05-02T16:42:09.560Z","5.2.14":"2026-05-03T01:28:13.844Z","5.2.15":"2026-05-03T01:33:29.072Z","5.2.16":"2026-05-03T01:34:44.052Z","5.2.17":"2026-05-06T23:44:50.173Z","5.2.18":"2026-05-09T19:27:37.240Z","5.2.19":"2026-05-09T19:29:12.557Z","5.2.20":"2026-05-09T19:30:31.484Z","5.2.21":"2026-06-10T20:46:09.215Z","5.2.22":"2026-06-29T20:17:10.918Z","5.2.23":"2026-06-29T20:18:24.948Z","5.2.24":"2026-06-29T20:20:34.078Z","5.2.25":"2026-08-04T20:59:14.181Z","5.2.26":"2026-08-04T21:00:32.294Z","5.2.27":"2026-08-04T21:01:50.408Z","5.2.28":"2026-08-04T21:03:10.852Z","5.2.29":"2026-08-31T09:16:49.650Z","5.2.31":"2026-08-31T09:19:04.523Z","5.2.32":"2026-09-09T20:13:09.476Z","5.2.33":"2026-09-09T20:32:07.628Z","5.2.34":"2026-09-09T20:33:58.590Z","5.2.35":"2026-09-09T20:34:40.324Z","5.2.36":"2026-09-13T16:33:02.814Z","5.2.37":"2026-09-13T18:39:47.132Z","5.2.38":"2026-09-13T18:54:11.146Z","5.2.39":"2026-09-13T20:53:52.879Z","5.2.40":"2026-09-15T01:15:33.203Z","5.2.41":"2026-09-17T19:18:21.378Z","5.2.42":"2026-09-17T19:18:27.670Z","5.2.43":"2026-09-20T09:53:17.732Z","5.2.44":"2026-09-20T09:54:34.182Z"},"bugs":{"url":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/issues"},"author":{"name":"Carl Dawson"},"license":"MIT","homepage":"https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp","keywords":["mcp","terraform","best-practices","infracost","tflint","checkov","trivy","kics","azure","aws","gcp"],"repository":{"url":"git+https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp.git","type":"git"},"description":"MCP server for Terraform cost, lint, security, and cloud best-practice guidance.","maintainers":[{"name":"rolfmoleman","email":"carl.dawson3@btinternet.com"}],"readme":"# Terraform Best Practices MCP Server\n\n[![Down At The Bottom Of The Mole Hole banner](https://raw.githubusercontent.com/DownAtTheBottomOfTheMoleHole/.github/main/assets/banners/repositories/terraform-best-practices-mcp.png)](https://github.com/DownAtTheBottomOfTheMoleHole)\n\n<!-- mcp-name: io.github.DownAtTheBottomOfTheMoleHole/terraform-best-practices -->\n\n[![CI/Publish](https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/actions/workflows/publish-mcp.yml/badge.svg)](https://github.com/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/actions/workflows/publish-mcp.yml)\n[![Coverage](https://codecov.io/github/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp/graph/badge.svg?branch=main)](https://codecov.io/github/DownAtTheBottomOfTheMoleHole/terraform-best-practices-mcp)\n[![npm](https://img.shields.io/npm/v/@downatthebottomofthemolehole/terraform-best-practices-mcp-server.svg)](https://registry.npmjs.org/@downatthebottomofthemolehole/terraform-best-practices-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Node Version](https://img.shields.io/badge/node-%3E%3D24.14.0-brightgreen)](https://nodejs.org/)\n\n> **Note:** This is a community-maintained MCP server. It is not an official Model Context Protocol server from HashiCorp or any cloud provider.\n\nA Model Context Protocol (MCP) server for producing better Terraform through CLI analysis (`tflint`, `checkov`, `trivy`, `kics`, `infracost`), best-practice guidance from [terraform-best-practices.com](https://www.terraform-best-practices.com/), cloud provider recommendations (Azure, AWS, GCP), and Terraform Registry resource and module guidance.\n\n## Overview\n\nThis server provides eighteen MCP tools across CLI analysis, best-practice retrieval, and interactive reporting workflows:\n\n- `run_tflint` to lint Terraform code.\n- `run_checkov` to run security and compliance scanning.\n- `run_trivy` to scan Terraform configuration for vulnerabilities.\n- `run_kics` to run IaC security and compliance scanning.\n- `run_infracost` to estimate cloud costs.\n- `fetch_terraform_best_practices` to retrieve curated Terraform best practices.\n- `fetch_provider_best_practices` to retrieve cloud provider Terraform guidance.\n- `fetch_terraform_registry_guidance` to retrieve Terraform Registry resource and module guidance.\n- `analyze_terraform_code` to analyze code structure, modularity, and best practices.\n- `analyze_terraform_performance` to identify runtime and performance bottlenecks.\n- `analyze_state_management` to assess backend state strategy and collaboration safety.\n- `generate_cost_report` to generate cost analysis with optimization suggestions.\n- `generate_terraform_module_docs` to produce module documentation from Terraform code.\n- `recommend_terraform_modules` to recommend reusable modules from detected patterns.\n- `suggest_terraform_architecture` to suggest multi-environment and multi-region patterns.\n- `suggest_terraform_testing_strategy` to recommend CI-driven testing by risk profile.\n- `suggest_security_hardening` to provide security hardening recommendations.\n- `generate_compliance_summary` to create compliance reports from scan outputs.\n\n### Platform Compatibility\n\nThis MCP server is platform-agnostic and works in local and CI environments:\n\n- Local development\n- GitHub Actions\n- GitLab CI/CD\n- Azure DevOps\n- CircleCI, Jenkins, and Bitbucket Pipelines\n- AI Agents and Copilot workflows\n\nThe primary requirements are Node.js and optionally the CLI tools on `PATH`. If a CLI is missing, the server returns installation guidance instead of failing silently.\n\n### Tool Matrix\n\n| Tool | Category | Typical outcome |\n| --- | --- | --- |\n| `run_tflint` | CLI Analysis | Lint findings for Terraform code |\n| `run_checkov` | CLI Analysis | Security and compliance scan results |\n| `run_trivy` | CLI Analysis | Vulnerability scan results for IaC |\n| `run_kics` | CLI Analysis | IaC security findings |\n| `run_infracost` | CLI Analysis | Monthly cost baseline for current IaC |\n| `fetch_terraform_best_practices` | Guidance | Curated best-practice checklist from terraform-best-practices.com |\n| `fetch_provider_best_practices` | Guidance | Cloud provider (Azure/AWS/GCP) Terraform recommendations |\n| `fetch_terraform_registry_guidance` | Guidance | Registry guidance for providers, resources, and modules |\n| `analyze_terraform_code` | Analysis | Code structure and modularity assessment |\n| `analyze_terraform_performance` | Analysis | Performance bottleneck and optimization report |\n| `analyze_state_management` | Analysis | State backend strategy and collaboration safety review |\n| `generate_cost_report` | Reporting | Cost analysis with optimization suggestions |\n| `generate_terraform_module_docs` | Reporting | Generated module documentation markdown |\n| `recommend_terraform_modules` | Reporting | Reusable module recommendations from code patterns |\n| `suggest_terraform_architecture` | Architecture | Multi-environment and multi-region architecture patterns |\n| `suggest_terraform_testing_strategy` | Testing | CI-driven testing strategy by risk profile |\n| `suggest_security_hardening` | Security | Security hardening recommendations from scan output |\n| `generate_compliance_summary` | Compliance | Compliance report from scan outputs |\n\n## Tools\n\n### `run_tflint`\n\nRun tflint against a Terraform project directory.\n\nInputs:\n\n- `path` (string, optional): Terraform project path to scan. Default: `.`.\n- `extraArgs` (string[], optional): Extra CLI arguments.\n- `timeoutMs` (integer, optional): Command timeout in milliseconds.\n\n### `run_checkov`\n\nRun checkov over a Terraform directory.\n\nInputs:\n\n- `path` (string, optional): Terraform project path to scan. Default: `.`.\n- `extraArgs` (string[], optional): Extra CLI arguments.\n- `timeoutMs` (integer, optional): Command timeout in milliseconds.\n\n### `run_trivy`\n\nRun trivy config scanning against Terraform code.\n\nInputs:\n\n- `path` (string, optional): Terraform project path to scan. Default: `.`.\n- `extraArgs` (string[], optional): Extra CLI arguments.\n- `timeoutMs` (integer, optional): Command timeout in milliseconds.\n\n### `run_kics`\n\nRun kics IaC scanning against Terraform code.\n\nInputs:\n\n- `path` (string, optional): Terraform project path to scan. Default: `.`.\n- `extraArgs` (string[], optional): Extra CLI arguments.\n- `timeoutMs` (integer, optional): Command timeout in milliseconds.\n\n### `run_infracost`\n\nRun infracost breakdown for a Terraform directory.\n\nInputs:\n\n- `path` (string, optional): Terraform project path to scan. Default: `.`.\n- `extraArgs` (string[], optional): Extra CLI arguments.\n- `timeoutMs` (integer, optional): Command timeout in milliseconds.\n\n### `fetch_terraform_best_practices`\n\nFetch Terraform best-practice guidance from curated checks and optional live summaries from terraform-best-practices.com.\n\nInputs:\n\n- `topic` (string, optional): Topic filter such as state, modules, security, or naming.\n- `liveFetch` (boolean, optional): When true, fetches and summarises live content. Default: `true`.\n\n### `fetch_provider_best_practices`\n\nFetch Terraform best-practice guidance for Azure, AWS, or GCP from curated checks and optional live provider docs summaries.\n\nInputs:\n\n- `provider` (string, required): Cloud provider (`azure`, `aws`, or `gcp`).\n- `topic` (string, optional): Focus area such as state, IAM, modules, networking, or cost.\n- `liveFetch` (boolean, optional): When true, fetches and summarises the linked provider guidance page. Default: `true`.\n\n### `fetch_terraform_registry_guidance`\n\nFetch Terraform Registry guidance for providers, resources, and modules.\n\nInputs:\n\n- `provider` (string, optional): Provider name (e.g. `aws`, `azurerm`, `google`).\n- `resource` (string, optional): Resource type used with provider (e.g. `s3_bucket`, `resource_group`).\n- `module` (string, optional): Module path in the form `namespace/name/provider`.\n- `topic` (string, optional): Topic filter for the summary output.\n- `liveFetch` (boolean, optional): When true, fetches and summarises selected Registry pages. Default: `true`.\n\n### `analyze_terraform_code`\n\nAnalyze Terraform code structure, modularity, and best practices.\n\nInputs:\n\n- `code` (string, required): Terraform code snippet to analyze (max 50,000 chars).\n- `focusArea` (string, optional): Analysis focus area (`modularity`, `variables`, `outputs`, `locals`, `general`). Default: `general`.\n\n### `analyze_terraform_performance`\n\nAnalyze Terraform runtime and performance bottlenecks and optimization opportunities.\n\nInputs:\n\n- `terraformCode` (string, required): Terraform code for performance-focused heuristics.\n- `stateSizeMb` (number, optional): State size in MB for scale-aware recommendations.\n- `workspaceCount` (integer, optional): Number of workspaces sharing the same root stack.\n- `providerRateLimitSensitive` (boolean, optional): When true, emphasise provider API throttling protections. Default: `true`.\n\n### `analyze_state_management`\n\nAssess backend state strategy and collaboration safety.\n\nInputs:\n\n- `terraformCode` (string, required): Terraform code including backend and state-related configuration.\n- `teamSize` (integer, optional): Number of engineers applying Terraform changes. Default: `6`.\n- `environmentCount` (integer, optional): Number of environments managed by the estate. Default: `2`.\n- `currentBackend` (string, optional): State backend in use (`auto`, `s3`, `azurerm`, `gcs`, `remote`, `local`, `unknown`). Default: `auto`.\n- `useWorkspaces` (boolean, optional): Whether multiple environments are managed through workspaces. Default: `false`.\n\n### `generate_cost_report`\n\nGenerate cost analysis with optimization suggestions from Infracost output.\n\nInputs:\n\n- `infracostJson` (string, required): JSON output from infracost breakdown or diff command.\n- `includeOptimizations` (boolean, optional): When true, generates cost optimization suggestions. Default: `true`.\n\n### `generate_terraform_module_docs`\n\nGenerate module documentation markdown from Terraform code.\n\nInputs:\n\n- `terraformCode` (string, required): Terraform module code to document.\n- `moduleName` (string, optional): Friendly name used in generated markdown docs. Default: `terraform-module`.\n- `includeUsageExample` (boolean, optional): Include a usage example section. Default: `true`.\n- `includeInputsOutputsTables` (boolean, optional): Render inputs and outputs as markdown tables. Default: `true`.\n\n### `recommend_terraform_modules`\n\nRecommend reusable Terraform modules from detected code patterns.\n\nInputs:\n\n- `terraformCode` (string, required): Terraform code used to infer module recommendations.\n- `provider` (string, optional): Preferred cloud provider (`aws`, `azure`, `gcp`, `any`). Default: `any`.\n- `deploymentIntent` (string, optional): Primary deployment goal (`networking`, `kubernetes`, `serverless`, `storage`, `database`, `observability`, `security`, `general`). Default: `general`.\n- `maxRecommendations` (integer, optional): Maximum recommendations to return (1--10). Default: `5`.\n\n### `suggest_terraform_architecture`\n\nSuggest architecture patterns for multi-environment and multi-region estates.\n\nInputs:\n\n- `workloadType` (string, optional): Primary workload profile (`web-api`, `data-platform`, `event-driven`, `platform-foundation`, `general`). Default: `general`.\n- `environments` (string[], optional): Target environments (`dev`, `test`, `stage`, `prod`, `sandbox`, `dr`). Default: `[\"dev\", \"prod\"]`.\n- `multiRegion` (boolean, optional): Whether workloads run across multiple regions. Default: `false`.\n- `complianceProfile` (string, optional): Compliance profile (`none`, `cis`, `pci-dss`, `hipaa`, `sox`). Default: `none`.\n- `teamSize` (integer, optional): Number of engineers operating Terraform code. Default: `6`.\n- `currentPainPoints` (string, optional): Pain points or constraints in the current architecture.\n- `includeReferenceLayout` (boolean, optional): Include a suggested repository and folder layout. Default: `true`.\n\n### `suggest_terraform_testing_strategy`\n\nRecommend CI-driven Terraform testing strategy by risk profile.\n\nInputs:\n\n- `terraformCode` (string, optional): Terraform code for complexity-aware recommendations.\n- `deploymentCriticality` (string, optional): Business impact level (`low`, `medium`, `high`, `mission-critical`). Default: `medium`.\n- `changeFrequency` (string, optional): How often infrastructure changes are introduced (`low`, `medium`, `high`). Default: `medium`.\n- `ciSystem` (string, optional): Target CI system (`github-actions`, `azure-devops`, `gitlab`, `circleci`, `jenkins`, `other`). Default: `github-actions`.\n- `includeExamplePipeline` (boolean, optional): Include an example pipeline sequence. Default: `true`.\n\n### `suggest_security_hardening`\n\nProvide security hardening recommendations from scan output.\n\nInputs:\n\n- `scanOutput` (string, required): Output from a security scanning tool (checkov, trivy, or kics).\n- `scanTool` (string, optional): Name of the scanning tool (`checkov`, `trivy`, `kics`). Default: `checkov`.\n\n### `generate_compliance_summary`\n\nCreate compliance reports from scan outputs.\n\nInputs:\n\n- `checkovOutput` (string, optional): Output from checkov scan.\n- `trivyOutput` (string, optional): Output from trivy scan.\n- `kicsOutput` (string, optional): Output from kics scan.\n- `complianceFramework` (string, optional): Compliance framework to assess against (`cis`, `pci-dss`, `hipaa`, `sox`, `general`). Default: `general`.\n\n## Prompt Cookbook\n\nUse these minimal prompts in Copilot Chat with `@tf-best-practices`. CLI tools default to the current workspace root when no `path` is provided. Adding `#file` or `#folder` context can improve chat understanding, but tool execution path is controlled by explicit tool inputs (for example, `path`).\n\n### Quick Start (Zero-Argument Prompts)\n\n```text\n@tf-best-practices run run_tflint\n@tf-best-practices run run_checkov\n@tf-best-practices run run_trivy\n@tf-best-practices run run_kics\n@tf-best-practices run run_infracost\n@tf-best-practices run fetch_terraform_best_practices\n```\n\n### CLI Analysis\n\n```text\n@tf-best-practices run run_tflint with path ./modules/network\n@tf-best-practices run run_checkov with path ./environments/prod\n@tf-best-practices run run_trivy with path .\n@tf-best-practices run run_kics with path .\n@tf-best-practices run run_infracost with path .\n```\n\n### Best Practices and Guidance\n\n```text\n@tf-best-practices run fetch_terraform_best_practices with topic modules\n@tf-best-practices run fetch_provider_best_practices with provider azure\n@tf-best-practices run fetch_terraform_registry_guidance with provider azurerm and resource resource_group\n```\n\n### Code Analysis\n\n```text\n@tf-best-practices run analyze_terraform_code with code <paste code> and focusArea modularity\n@tf-best-practices run analyze_terraform_performance with terraformCode <paste code>\n@tf-best-practices run analyze_state_management with terraformCode <paste code>\n```\n\n### Reporting and Recommendations\n\n```text\n@tf-best-practices run generate_cost_report with infracostJson <paste json>\n@tf-best-practices run generate_terraform_module_docs with terraformCode <paste code>\n@tf-best-practices run recommend_terraform_modules with terraformCode <paste code> and provider azure\n@tf-best-practices run suggest_terraform_architecture with workloadType web-api and environments [\"dev\",\"stage\",\"prod\"]\n@tf-best-practices run suggest_terraform_testing_strategy with ciSystem github-actions\n@tf-best-practices run suggest_security_hardening with scanOutput <paste output> and scanTool checkov\n@tf-best-practices run generate_compliance_summary with complianceFramework cis\n```\n\n## Dependencies\n\n### System Dependencies\n\n- Node.js `>=24.14.0`\n- npm (bundled with Node.js)\n- Optional CLIs available on `PATH` for command tools:\n  - `tflint`\n  - `checkov`\n  - `trivy`\n  - `kics`\n  - `infracost`\n\nIf a CLI is missing, the server returns installation guidance instead of failing silently.\n\n### npm Dependencies\n\nRuntime:\n\n- `@modelcontextprotocol/sdk` (MCP server SDK)\n- `zod` (input schema validation)\n\nDevelopment:\n\n- `typescript` (build/compile)\n- `tsx` (development runner)\n- `vitest` (unit test runner)\n- `@types/node` (Node.js typings)\n\n### Environment Variables\n\n- `INFRACOST_API_KEY`: Infracost API key for cloud-backed cost estimates.\n\n## Installation\n\n```bash\nnpm install\nnpm run build\n```\n\n## Configuration\n\n### Usage with VS Code Copilot Chat\n\nThis workspace is preconfigured in `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"tf-best-practices\": {\n      \"type\": \"stdio\",\n      \"command\": \"npm\",\n      \"args\": [\"run\", \"dev\"]\n    }\n  }\n}\n```\n\nReload VS Code (`Cmd+Shift+P` -> `Developer: Reload Window`) after changing MCP configuration.\n\nThen query the server from Copilot Chat with `@tf-best-practices`, for example:\n\n```text\n@tf-best-practices run run_tflint\n@tf-best-practices run fetch_terraform_best_practices with topic modules\n```\n\n### Usage with Other MCP Clients\n\nUse stdio transport with the built entrypoint:\n\n```json\n{\n  \"name\": \"terraform-best-practices-mcp-server\",\n  \"type\": \"stdio\",\n  \"command\": \"node\",\n  \"args\": [\"/absolute/path/to/terraform-best-practices-mcp/dist/index.js\"]\n}\n```\n\nBuild first with `npm run build`, then start your MCP client.\n\n## Running\n\n```bash\nnpm start\n```\n\nDevelopment mode:\n\n```bash\nnpm run dev\n```\n\n## Debugging\n\nUse `.vscode/launch.json`:\n\n- `Debug MCP Server` (runs `npm run dev`)\n- `Debug MCP Server (Built)` (runs `dist/index.js` after build)\n\nSet breakpoints in `src/index.ts`, then press `F5`.\n\n## Testing\n\nSee [docs/TESTING.md](./docs/TESTING.md) for Copilot Chat scenarios, manual JSON-RPC checks, and troubleshooting guidance.\n\nQuick validation prompt in Copilot Chat:\n\n```text\n@tf-best-practices run run_tflint\n```\n\n## Interactive VS Code Workflows\n\n### 1. Security Triage\n\n1. Run a scan:\n\n```text\n@tf-best-practices run run_checkov\n```\n\n1. Request hardening suggestions:\n\n```text\n@tf-best-practices run suggest_security_hardening with scanOutput <paste checkov output> and scanTool checkov\n```\n\n1. Generate a compliance summary:\n\n```text\n@tf-best-practices run generate_compliance_summary with checkovOutput <paste output> and complianceFramework cis\n```\n\n### 2. Cost Impact Review\n\n1. Generate a cost baseline:\n\n```text\n@tf-best-practices run run_infracost\n```\n\n1. Produce a cost report:\n\n```text\n@tf-best-practices run generate_cost_report with infracostJson <paste json>\n```\n\n### 3. Architecture Review\n\n1. Analyse code quality:\n\n```text\n@tf-best-practices run analyze_terraform_code with code <paste code> and focusArea modularity\n```\n\n1. Review state management:\n\n```text\n@tf-best-practices run analyze_state_management with terraformCode <paste code>\n```\n\n1. Get architecture recommendations:\n\n```text\n@tf-best-practices run suggest_terraform_architecture with workloadType web-api and multiRegion true\n```\n\n### Best Practices\n\n- Start with CLI analysis tools to establish a baseline before using guidance tools.\n- Use `fetch_terraform_best_practices` to align with community conventions.\n- Use `fetch_provider_best_practices` for provider-specific patterns.\n- Keep `timeoutMs` high enough for large Terraform projects.\n- Run `suggest_terraform_testing_strategy` when onboarding new CI/CD pipelines.\n- Use `generate_compliance_summary` regularly for audit readiness.\n\n## Additional Use Cases\n\n- Pre-merge security and compliance gates in pull requests.\n- Automated cost impact reviews for infrastructure changes.\n- Architecture pattern recommendations for greenfield projects.\n- Module documentation generation for shared Terraform modules.\n- CI-driven testing strategy definition by deployment risk profile.\n- Compliance evidence generation for audit trails.\n\n## Related Projects\n\n### Terraform Resources\n\n- [terraform-best-practices.com](https://www.terraform-best-practices.com/)\n- [Terraform Registry](https://registry.terraform.io/)\n- [tflint](https://github.com/terraform-linters/tflint)\n- [checkov](https://www.checkov.io/)\n- [trivy](https://github.com/aquasecurity/trivy)\n- [kics](https://kics.io/)\n- [Infracost](https://www.infracost.io/)\n\n### Model Context Protocol\n\n- [MCP official documentation](https://modelcontextprotocol.io/)\n- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)\n- [MCP servers registry](https://github.com/mcp)\n\n## Community and Contributing\n\n- [Contributing Guide](./CONTRIBUTING.md)\n- [Code of Conduct](./CODE_OF_CONDUCT.md)\n- [Security Policy](./SECURITY.md)\n- [Testing Guide](./docs/TESTING.md)\n- [Maintainer Guide](./docs/MAINTAINERS.md)\n\n## Attribution and License\n\nMaintained by Carl Dawson under the [Down At The Bottom Of The Mole Hole](https://github.com/downatthebottomofthemolehole) organization.\n\n## Development\n\n```bash\nnpm run lint\nnpm test\nnpm run build\n```\n\n## License\n\nLicensed under the MIT License.\n","readmeFilename":"README.md"}