{"_id":"@unleash/mcp","_rev":"32-ba2a6469e403d908fe9c4b382b8a6168","name":"@unleash/mcp","dist-tags":{"beta":"0.3.0-beta.7","latest":"0.4.1"},"versions":{"0.0.1":{"name":"@unleash/mcp","version":"0.0.1","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.0.1","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"mcp":"dist/index.js"},"dist":{"shasum":"cdea309fb4ace5d25014d6dc25cd50df01ce3af1","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.0.1.tgz","fileCount":70,"integrity":"sha512-WsCxgQSMPG5b6ElsqCf3NeNCfyhVqVEXIOKr0MzptNpk7fuUG2+KiFdnBltxtM4pl0omC+VyA9AfMhlNJvG/NQ==","signatures":[{"sig":"MEUCIFRklh2NYsArKgu1z1EV9IwfDsN2FBMHfC2vAr/V5mhQAiEAthHsoEZtUvmySrTGpTr+S1GAkppi0A6ONL0p7WonW1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244762},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"043004b457c4bd8812e7e88526b63fe7f59b244a","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.0.1_1761817567867_0.12693349609388327","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@unleash/mcp","version":"0.0.2","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.0.2","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"95b77c22215ab513f219d6de54c2d49e35b4cc44","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.0.2.tgz","fileCount":70,"integrity":"sha512-VY0tyK2i14f5Bkz3AkETkuY+2BiYcPErHdk/GFNV7FIobKKSTxuhZcBZ1csMR/eOtfDJ8pYYNfpuv45ACA16tQ==","signatures":[{"sig":"MEUCIEx16ckuyaQnCdBdyi9q1jZyFdjeX2b6bSJcl6n5Ae2JAiEAoz5v0UMiQRl+8TgmhUcVG2ENUG6u/EXby/2oh3siHh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246014},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b7b207d3d325c4fdd3b0a1d8cb76ba3575d081a8","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.0.2_1761821428493_0.6507967335885483","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@unleash/mcp","version":"0.0.3","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.0.3","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"229c4c7729b2544b7ff89052c2af14fb6accfcd0","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.0.3.tgz","fileCount":70,"integrity":"sha512-1vBcvjaVvYkh+9vzyNW1EQFkRtINy2R5Vht9j7a11G0Z8v99peSsctK5cZMwwdjbMkTFmj6EtRGR4GBJzNwXSg==","signatures":[{"sig":"MEUCIATSzilNSCyrec1WGGv/lnSKppgJlJTNx3TwFaqRbWlrAiEA+m6cTMKsil3ExPhJpZcrp0yU71pI++iyW++ukDAGShc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246116},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"141c1c46f72cd565b76da85271a263b7bae50fe7","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.0.3_1761821584659_0.23191615512404296","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@unleash/mcp","version":"0.0.4","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.0.4","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"d3e30d0d63fe0164d235407b2b32a8b248087fe5","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.0.4.tgz","fileCount":110,"integrity":"sha512-guY3NdEcfcEB+hJvEZB5RRt7ifuBTzRtgV3XmUsOJWQ+5+fn1W7tUwt6YgtYJr5EifHAjOJSodRBUt7mscUj+Q==","signatures":[{"sig":"MEQCIDBETtA7lEzjUyK7x+EVoReCCPrrgj3BKLrAF9H24NvOAiALVF6sFacOS7BwOYrEaj6Qs4gsMpeHgUFrcHbk05JNvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440499},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"84a3c2d4bb926fde0f0d3f716eecde1db0c99238","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.0.4_1762346437581_0.5279472128829659","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@unleash/mcp","version":"0.1.0","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.1.0","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"291a6c29b6c6cc6ef3d03631d369ce772b7588a4","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.1.0.tgz","fileCount":110,"integrity":"sha512-XSsCzo4l6q/EbCGFJwEMTJscjESxJ/PEI09LJ+oJRI5zlqN65zajw1z9a6jN1NtawMQ7P74Oyp9R7zPDYgtr3A==","signatures":[{"sig":"MEUCIGPR/zHdXXJqPFtoErRP8qT1MzS45+lqa/kQYYK1AEubAiEAm2rW4K781WiHeJfidaP1mNsNQLDjqOfoDDku1V3tUBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442147},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d6161ce35fb4f5abd461894f42c31b563bbb283c","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1763370021595_0.8211430218694187","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@unleash/mcp","version":"0.1.1","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.1.1","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"4573fde7d42c89b54a434c489738cff9e1051f41","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.1.1.tgz","fileCount":110,"integrity":"sha512-Kh+q9c/wypzHmv/D6NJPhOk3A/6GZwEArAQ0daiPrj3IDr7MIrTu5i842LL5s/o1CVG4s4FLFsnfZRhj/p28XQ==","signatures":[{"sig":"MEUCIG4ZpZPBjq8L5Ya594OIPJ9KIyfu6FA0XEHBmU96TuF9AiEAxTXqSzpfju4nlPvYal2Ij9XZ/+Fd6BoYe+ntySngy18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442269},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b14f904166cda92c294249f18ff63cfcb892243d","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest","build":"tsc","prepack":"npm run build"},"_npmUser":{"name":"foseberg","email":"fredrik.no@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.1_1763399297087_0.475538359163018","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@unleash/mcp","version":"0.2.1","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.1","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"56dcdd1b165358fe14c0aaa94358ced05f42d265","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.1.tgz","fileCount":114,"integrity":"sha512-eUgAGgdiWvPF1AXd7z1fW7oAdXOfoTaZ32lHa/BoDoLP2l1yr4XetyptNERAw/N+zWats4Y5uzFhiNBVtI9xfA==","signatures":[{"sig":"MEYCIQCU3i5V1RLqZRJv/m9dRc+x1uj0BfrRKe/+JAYsoEJPZwIhALaG+5idTVY73GaUjdzo/p749FumrJKLplhwbfJ4Ks+I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":434941},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"6da99af4157ff08775b6334589ac1cfff77ce4be","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"deprecated":"Faulty release—use 0.1.1","_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.1_1765407469385_0.7496466579395868","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@unleash/mcp","version":"0.2.2","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.2","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"ac9827b64ca4b63ce3f50ea879f04bd2c133253b","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.2.tgz","fileCount":118,"integrity":"sha512-Ra3Dt/R73W+2AlIp4XFW4LtegeS9uxaoq7XdhFI6ZJEom1UXJWXglY1vZeXJWIrvDEfwIPRpIMsnTvR7nKWwCQ==","signatures":[{"sig":"MEUCIHz7OkGCCWQp9YnDSKse6tYhJxTXP/IYhwA+fv8wQtC0AiEA4FJ5wSakfrBhsXjh3vBwntGV4iMp8qJfFaF3d4f0i+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"261653f876ff83b01c3e49216901f692974ef9b9","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"deprecated":"Faulty release—use 0.1.1","_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.2_1765987508604_0.008580420382507281","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@unleash/mcp","version":"0.2.3","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.3","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"fab737352d035e5460c0ad682cdc670958a8ef86","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.3.tgz","fileCount":118,"integrity":"sha512-4s4lpqqzM43aivu5NXlbfM7es60u+GC/z4PzwfCEwKqfQTiztCzDKYBosMXSsopcMs+9DSyfFLMZlEKbO/zvYw==","signatures":[{"sig":"MEYCIQDjBMsNaNojiCj62zmrNWBFKrO6Oq0u1QLfeY1tXgmzAgIhAJLH5RIFwduda7+l/IfAw5zno3AnoSYHYi+WjOFCV2qd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"cadbd7bd2a2e4e1d967da9bdddb1a83a8e3fd11a","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.3_1765991052453_0.7878449364138209","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@unleash/mcp","version":"0.2.4","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.4","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"9d0fddbe57e19f640895567b7cfc556737b0acdd","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.4.tgz","fileCount":118,"integrity":"sha512-8MO54ZHx6tC76NltIxvv6gbNLNFEfdmQ471L/BCAfv0Rvg3MokSFWb+UI4DII3aamro59r9a0x+2qNKWtAkrNg==","signatures":[{"sig":"MEUCIQClmEP8aMUf6d9I51WGZEkQQwgb+BbrvsyahFYi5VkX0AIgGx1B2MAl3Ch9M45vuI//nQMf28FtxfuHFhzk635Hzs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"6d72bc63746b300a1a757f9efc62a42381454efe","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.4_1765991293768_0.9950950474824043","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@unleash/mcp","version":"0.2.5","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.5","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"be1112327ebd00b732f6f581307711a0bec48d11","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.5.tgz","fileCount":118,"integrity":"sha512-Uf1PtlPujYGXDPTpbT03ET+5grHMilw4uEAnCaYSRETYUpJpM6Nl2KWxqKsztcdrjWGutgd4CvhfRWMSfll90g==","signatures":[{"sig":"MEUCIQDVCKggKRuwgC8nEFPhzu9u4kvakx5VbjYQ1k3h7OSzMgIgRCMX2A+GyYA4TTBfjq3XDWKCcta/HL6C4RBy4Hr90uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"997eadc8fc647dcd6d8e92576a88b0ef7671eacf","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.5_1765991549042_0.8537183790326299","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@unleash/mcp","version":"0.2.6","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.6","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"cee30e75ba68bd77f5fcdff26160f444a3da02c9","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.6.tgz","fileCount":118,"integrity":"sha512-KOWDikznbJ+N+HyyQGjQJ1kGhKOdE0HWnf7h0OHAb1Q2phxYrL8DmbBhBpKZ182A6sVvNbXRg0pOzPRGkBTgPg==","signatures":[{"sig":"MEUCIFxlaHiB6jIAuDqGcws+R6n9GeDloUttQcd71t8zGHCPAiEA+fAnmolGsa16EOlh3fc5TPEl6HyGXvo2u5hbsmLCEi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"93e0eb92a7ad5b026bb221f8fcd3b73eed1c427d","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.6_1765991822676_0.3745422366541782","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@unleash/mcp","version":"0.2.7","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.7","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"8ef27f4e52f92d8ef146b7cc906e3c26ae241ce6","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.7.tgz","fileCount":118,"integrity":"sha512-7AV/hL3gQtupuHac6iV9oqJx+v9Pi/1TquUHgLxcGzCgjqj0zJ4RH3Lnfmw3zWntgUUXkp+yqtYLpzRt6n1lgw==","signatures":[{"sig":"MEUCIBl+wSnvhDsiFvfu/Qx+Wvo692UySlqSZloHtK7Vx6bnAiEArS2BWzfGsQk9w4F2CpwuRR6na/E5QM19YZi4fSl5IEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"4726f8a6ede8b8e3768e709838d185192e1dffce","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.7_1765992439156_0.992621874910576","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@unleash/mcp","version":"0.2.9","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.2.9","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"515baea1e9a989f1224501c1f6654fbfa32fe9f4","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.2.9.tgz","fileCount":118,"integrity":"sha512-16yQ/2X1wJ0dCagh2611QXkF14oC342TTIq19PZ9V/+FAlRI0F7ORHJpEHAOestrv4OehT0qUqy2TYVctEY8/Q==","signatures":[{"sig":"MEUCIFZNLwdZSBcCHm+mHPKnckCnar3wU23XCPKGcr6AtSAcAiEAueOw/1yqTzZa/0jA5xSkSFyxDUMlYCDD7OTQds1+qhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448804},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"gitHead":"581b125151178ae3be603893c1d2bb193bede68b","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.9_1768402762878_0.9797462810627293","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.0":{"name":"@unleash/mcp","version":"0.3.0-beta.0","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.0","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"e1a43c7fe1786bae79620034459b438718796fca","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.0.tgz","fileCount":130,"integrity":"sha512-C6tISoEsG+6tkYLPK1GnEi8RpYPk2Pfp5vZcAI5CgHCotOpMXvRGZKRmsQ5rSQEHyuhV7Lsoz8Ez0JViFFkuSw==","signatures":[{"sig":"MEQCICs2iZSwIGlbCogoXpPVFF8j+lURUUP/OB1yhOjvPz/MAiAOwCw4SA8gVPGwDmEkcU58mjhc/8mp6YBhz9Jpeb20jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462879},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"4810790de4a8a06d3b12199664d9aed0cc4c3c75","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.0_1770717446921_0.8903067725115907","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.1":{"name":"@unleash/mcp","version":"0.3.0-beta.1","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.1","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"7c5dd6f7a134ce0af87aeae7f5e6c15592af54d4","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.1.tgz","fileCount":130,"integrity":"sha512-m2QAPbs0QhCYc5Kj/lX68BhBZEJvHO8TgU6uRAOBoJnHu+zJzVWzVx9H/aNWWZ4aPCxrTvAfTz2v9V7UgjOGDw==","signatures":[{"sig":"MEYCIQDXtHeV4DhXIqWbnLsPqqkIqH6enK8Z+0XZo2lN0bsFZAIhAJj4RQh3QSG/otMe1nu9uhc+qwrpbpmD6yd5ZCIsWydR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465332},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"acba139ee09c23a004b1bc023e766e0612e82fa9","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^2.1.8","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.1_1772116950047_0.2628928002158233","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.2":{"name":"@unleash/mcp","version":"0.3.0-beta.2","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.2","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"3d4d339dfd88ddba71d40156285ef4e3ff31ca27","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.2.tgz","fileCount":130,"integrity":"sha512-dk5KF/i8g+vKfMZ9+EcVK8oLeZWiI9e7QIPq6qaLoE7SIvROWIfibsjjxRjzmgt15iNirLvbevAyHC3IfSwMgw==","signatures":[{"sig":"MEYCIQCsr8IzMiqoh0mJjfsY5rugASA0Acw7xj0Ul0lzAohW1gIhAOgL2JLAdFeFOVpeen1a8FG+iJnNrFbWA1mNIhSFO8Eg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467172},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"828456eea97fdb742b0bad116a677382a8daa162","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.4","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.2_1773057647546_0.9294071750109545","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.3":{"name":"@unleash/mcp","version":"0.3.0-beta.3","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.3","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"504f34d7639542b529eaa18521e3494e89ee60c3","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.3.tgz","fileCount":130,"integrity":"sha512-ktst1hnnIx/VxWRieUwx70yyJ14s2++ukBzOE6MtGKRjoyXU3bTNr5DnrXCg3KIDAjGmUyTG3i7L09X6cFWXww==","signatures":[{"sig":"MEYCIQCk975nXy6xLiF8FjiXllOLw6UItsmnQfsT51RZlwcnEQIhAONN9Ajdo47G+XxuopZr7mM6saut2KvbhE7ybBO6bVSY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467172},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"52ced5dec6f55d3e62d15d57e22e75a9d6fc7733","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.4","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.3_1775720404067_0.5300121195011946","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.4":{"name":"@unleash/mcp","version":"0.3.0-beta.4","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.4","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"330b997a0a295243575a1826d6e029b56cfd302f","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.4.tgz","fileCount":130,"integrity":"sha512-LOe0kQWnyXtttqmQJLEYXnrcxU4wRRGhgXRFj93B3oq+yQW1amRS/wSPFzhgXus5Llhr32ITUN6IaC9dfnGadg==","signatures":[{"sig":"MEUCIQDluIfrQtoIiK+G7MboArYX6P5sc5rUQM32HYX7NGSeuQIgCzHn8zInDIYnE7VpGm0ayKnq3LxwVnH46I6US/O/oNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467172},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"744545d2d2bc12ce21df735cb709d5da403d00ab","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"gfournier","email":"gastonfournier@gmail.com"},"_npmVersion":"10.8.2","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.4","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.4_1775720879232_0.8960785574704839","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.7":{"name":"@unleash/mcp","version":"0.3.0-beta.7","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.7","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"homepage":"https://github.com/Unleash/unleash-mcp#readme","bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"18af01d250376651f93b6040d3f44a03c54fba2d","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.7.tgz","fileCount":130,"integrity":"sha512-hZeJ2EB+7FmB8xMSBe4enJnZqKwc6babux44toTt335cNG8jZh2dMDhUsqBF+9gcTf5hEcz6SKNfPtEv7hvFCg==","signatures":[{"sig":"MEUCIQC4qB2uo995VqhjqVzvjcYW3bOuG3ePTH6W3vx7aaVkTgIgUEN1XEo65hQYCUVA+JD0Evg8NtxhRpsVlp1C1FjncsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unleash%2fmcp@0.3.0-beta.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":467413},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"5099fdc08a3e249586e8f7258523c1865b32ba15","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:882e97bc-ff35-4f9b-ab43-872bf5aa1b12"}},"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.1","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.4","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.7.2","@types/node":"^22.10.2","@biomejs/biome":"2.3.8","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.7_1776422480941_0.9808588243109211","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.9":{"name":"@unleash/mcp","version":"0.3.0-beta.9","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0-beta.9","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"}],"homepage":"https://github.com/Unleash/unleash-mcp#readme","bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"8a50bda0e5689281890b2e65533af78489d68ab2","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0-beta.9.tgz","fileCount":130,"integrity":"sha512-AmhzDWA7uU0Pz57QF10/71zRsEcrTQlW/wV8nLgxzM7P/aCquoq7zF51waMyWVBMWoVQOvLDZ+0Bt6I+0yL0hw==","signatures":[{"sig":"MEUCIQDTW9ytaCngcDtNDxKYfNLNQ3U2couicVl95OJrlrWdUwIgY5jPprxYm7oaoqWniyoIfHIgzWqJEYnrkkt9RsJx1Ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unleash%2fmcp@0.3.0-beta.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":461714},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"935dce2ed834a1fe427a753e8d2a9cf69210a16d","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:882e97bc-ff35-4f9b-ab43-872bf5aa1b12"}},"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"_npmVersion":"11.14.0","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"tsx":"^4.19.2","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.2","@biomejs/biome":"2.4.15","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0-beta.9_1778512944767_0.9449972922488843","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@unleash/mcp","version":"0.3.0","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.3.0","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"},{"name":"kwasniew","email":"kwasniewski.mateusz@gmail.com"}],"homepage":"https://github.com/Unleash/unleash-mcp#readme","bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"89917cd742e1f74dd706aabb7117add7aaba8991","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.3.0.tgz","fileCount":142,"integrity":"sha512-jlZWDGmjEBKR331YAKyhZ9Gr+qvjJjGMqVHGbHcWRtGSb7WdQj/kls9FHAka5nR5JJZqNqydQV3tKzo+LOOinA==","signatures":[{"sig":"MEQCICt0Qj5HxTbMQljNyE/6AvHQY29IuPEJFio0BXLe9yTGAiB4AK79iFfkbujlbHpg+bcwTjnZK2oLMo3JWekiwhtjwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unleash%2fmcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":506473},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"ec76d2bc9dfa6dd799d73d3a0229a8db8c259f1f","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:882e97bc-ff35-4f9b-ab43-872bf5aa1b12"}},"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"_npmVersion":"11.14.0","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"tsx":"^4.19.2","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.2","@biomejs/biome":"2.4.15","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0_1779802523097_0.26399348473574724","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@unleash/mcp","version":"0.4.0","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.4.0","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"},{"name":"kwasniew","email":"kwasniewski.mateusz@gmail.com"}],"homepage":"https://github.com/Unleash/unleash-mcp#readme","bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"e6757efea03964d132cd3badc2f2d11a462f9a7c","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.4.0.tgz","fileCount":154,"integrity":"sha512-xEvnJnKuA0hruM9wcgf+xfFA5saP5evQkDRM9eChpVONrm/RSNjoux/Hka5IN97CNr9EdtLDlyFBitwYRPEMdQ==","signatures":[{"sig":"MEQCIGKg5FCfe9aQAY+ANIsOWlS4IAYPot/GCj4Y9nVhR1D0AiAkNMc5XOVihsZ9nXS2BZplQEzdGSOwtKzk+RLEH0NV0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unleash%2fmcp@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":547293},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"072e341131621c7ce3dd53f8d644a985d158140f","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:882e97bc-ff35-4f9b-ab43-872bf5aa1b12"}},"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"_npmVersion":"11.14.0","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"tsx":"^4.19.2","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.2","@biomejs/biome":"2.4.15","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.0_1780926931407_0.9672965991264715","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@unleash/mcp","version":"0.4.1","keywords":["mcp","unleash","feature-flags"],"license":"MIT","_id":"@unleash/mcp@0.4.1","maintainers":[{"name":"foseberg","email":"fredrik.no@gmail.com"},{"name":"ivarconr","email":"ivarconr@gmail.com"},{"name":"alexcasalboni","email":"alex@alexcasalboni.com"},{"name":"chriswk","email":"npm@chriswk.no"},{"name":"sighphyre","email":"liquidwicked64@gmail.com"},{"name":"gfournier","email":"gastonfournier@gmail.com"},{"name":"sjaanus","email":"sellinjaanus@gmail.com"},{"name":"nunogois","email":"github@nunogois.com"},{"name":"kwasniew","email":"kwasniewski.mateusz@gmail.com"}],"homepage":"https://github.com/Unleash/unleash-mcp#readme","bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"bin":{"unleash-mcp":"dist/index.js"},"dist":{"shasum":"a1b48465ae9441a7671291653fbbe794b9a7efa5","tarball":"https://registry.npmjs.org/@unleash/mcp/-/mcp-0.4.1.tgz","fileCount":154,"integrity":"sha512-OrUVtLbbMXNJfLO21LqJAaJjTsUGW9ruoW4UnvcQlp2Q1LdRcjjCgNpu2G6lnHqTSJ96hYQgWHm2Do1k+9p7pQ==","signatures":[{"sig":"MEUCIQCBRx5iE3D/wlUSZEjqbBYKbPFeOSgn2Yhxj8IHC+iZHgIgSEowFrdRSa7wQBHDkjIYJAn/4eHxAW8LGMG1zgCJW9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@unleash%2fmcp@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":547458},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"}},"gitHead":"95b98c275b7ea3f2fd3e936c743dadae91be0b25","mcpName":"io.getunleash/unleash-mcp","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run --passWithNoTests","build":"tsc","prepack":"npm run build","lint:fix":"biome check --write ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:882e97bc-ff35-4f9b-ab43-872bf5aa1b12"}},"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"_npmVersion":"11.14.0","description":"MCP server for managing Unleash feature flags","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"tsx":"^4.19.2","vitest":"^4.1.5","express":"^5.2.1","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.2","@biomejs/biome":"2.4.15","@types/express":"^5.0.6","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.1_1783331395164_0.8131343307078862","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-10-30T09:46:07.754Z","modified":"2026-07-07T11:19:56.985Z","0.0.1":"2025-10-30T09:46:08.073Z","0.0.2":"2025-10-30T10:50:28.699Z","0.0.3":"2025-10-30T10:53:04.891Z","0.0.4":"2025-11-05T12:40:37.840Z","0.1.0":"2025-11-17T09:00:21.821Z","0.1.1":"2025-11-17T17:08:17.332Z","0.2.1":"2025-12-10T22:57:49.573Z","0.2.2":"2025-12-17T16:05:08.759Z","0.2.3":"2025-12-17T17:04:12.614Z","0.2.4":"2025-12-17T17:08:13.917Z","0.2.5":"2025-12-17T17:12:29.199Z","0.2.6":"2025-12-17T17:17:02.846Z","0.2.7":"2025-12-17T17:27:19.327Z","0.2.9":"2026-01-14T14:59:23.059Z","0.3.0-beta.0":"2026-02-10T09:57:27.079Z","0.3.0-beta.1":"2026-02-26T14:42:30.278Z","0.3.0-beta.2":"2026-03-09T12:00:47.729Z","0.3.0-beta.3":"2026-04-09T07:40:04.221Z","0.3.0-beta.4":"2026-04-09T07:47:59.429Z","0.3.0-beta.7":"2026-04-17T10:41:21.100Z","0.3.0-beta.9":"2026-05-11T15:22:24.975Z","0.3.0":"2026-05-26T13:35:23.239Z","0.4.0":"2026-06-08T13:55:31.551Z","0.4.1":"2026-07-06T09:49:55.428Z"},"bugs":{"url":"https://github.com/Unleash/unleash-mcp/issues"},"license":"MIT","homepage":"https://github.com/Unleash/unleash-mcp#readme","keywords":["mcp","unleash","feature-flags"],"repository":{"url":"git+https://github.com/Unleash/unleash-mcp.git","type":"git"},"description":"MCP server for managing Unleash feature flags","maintainers":[{"email":"fredrik.no@gmail.com","name":"foseberg"},{"email":"ivarconr@gmail.com","name":"ivarconr"},{"email":"alex@alexcasalboni.com","name":"alexcasalboni"},{"email":"npm@chriswk.no","name":"chriswk"},{"email":"liquidwicked64@gmail.com","name":"sighphyre"},{"email":"gastonfournier@gmail.com","name":"gfournier"},{"email":"sellinjaanus@gmail.com","name":"sjaanus"},{"email":"github@nunogois.com","name":"nunogois"},{"email":"david@getunleash.io","name":"davidleek"},{"email":"kwasniewski.mateusz@gmail.com","name":"kwasniew"}],"readme":"# Unleash MCP Server\n\nA purpose-driven [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for managing [Unleash](https://www.getunleash.io/) feature flags. This server enables LLM-powered coding assistants to create and manage feature flags following Unleash best practices.\n\nTo share feedback, join our [community Slack](https://www.getunleash.io/unleash-community) or open an [issue on GitHub](https://github.com/Unleash/unleash-mcp/issues).\n\n## Overview\n\nThis MCP server provides tools that integrate with the [Unleash Admin API](https://docs.getunleash.io/understanding-unleash/unleash-overview#admin-api), allowing AI coding assistants to:\n\n- **Create feature flags** with proper validation and typing.\n- **Detect existing flags** to prevent duplicates or encourage reuse.\n- **Evaluate changes** to decide when a feature flag is needed.\n- **Stream progress** for visibility during operations.\n- **Handle errors** gracefully with helpful hints.\n- **Follow best practices** from the [Unleash documentation](https://docs.getunleash.io/topics/feature-flags/best-practices-using-feature-flags-at-scale).\n\n### Available tools\n\nThe MCP server exposes the following tools:\n\n- `create_flag`: Creates a feature flag in Unleash.\n- `evaluate_change`: Scores risk and recommends feature flag usage.\n- `detect_flag`: Discovers existing feature flags to avoid duplicates.\n- `wrap_change`: Provides guidance on how to wrap a change in a feature flag.\n- `set_flag_rollout`: Configures rollout strategies for a feature flag (does not enable the flag).\n- `get_flag_state`: Surfaces a feature flag's metadata and its activation strategies.\n- `list_flags`: Lists all feature flags in a project, with optional pagination and sort order.\n- `list_projects`: Lists Unleash projects available to the configured token, with optional pagination.\n- `toggle_flag_environment`: Enables or disables a feature flag in an environment.\n- `remove_flag_strategy`: Deletes a feature flag's strategy from an environment.\n- `cleanup_flag`: Generates instructions for safely removing flagged code paths.\n\n### Core workflow\n\nThe core workflow for an AI assistant is designed to be:\n1. `evaluate_change`: First, assess a code change to see if a flag is needed.\n2. `detect_flag`: This is often called automatically by `evaluate_change` to prevent creating duplicate flags.\n3. `create_flag`: If a new flag is required, this tool creates it in Unleash.\n4. `wrap_change`: Finally, this tool provides the language-specific code to implement the new flag.\n\nSee more information on the core workflow tools in the [Tool reference](#tool-reference) section.\n\n## Prerequisites\n\nBefore you can run the server, you need the following:\n- Node.js 22 or higher\n- pnpm package manager or npm\n- An Unleash instance (hosted or self-hosted)\n- A [personal access token](https://docs.getunleash.io/reference/api-tokens-and-client-keys#personal-access-tokens) with permissions to create feature flags\n\n## Get started\n\nThis section covers the different ways to install and run the Unleash MCP server. You can either follow a setup for [agents](#agent-setup) (such as Claude Code and Codex), run the MCP as a [standalone process](#quickstart-with-npx) using npx, or use a [local development](#local-development-setup) setup.\n\n### Agent setup\n\nYou can add the MCP server directly to Claude Code or Codex. Agent configurations are path-specific. You must run the following command from the root directory of the project where you want to use the MCP.\n\nFor Claude Code:\n\n```\nclaude mcp add unleash \\\n    --env UNLEASH_BASE_URL={{your-instance-url}} \\\n    --env UNLEASH_PAT={{your-personal-access-token}} \\\n    -- npx -y @unleash/mcp@latest --log-level error\n```\n\nFor Codex:\n```\ncodex mcp add unleash \\\n    --env UNLEASH_BASE_URL={{your-instance-url}} \\\n    --env UNLEASH_PAT={{your-personal-access-token}} \\\n    -- npx -y @unleash/mcp@latest --log-level error\n```\n\n### Remote agent setup (experimental)\n\nInstead of running the MCP server locally, you can connect directly to your Unleash instance's built-in remote MCP server over HTTP. This uses the [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) — no local process needed.\n\n> **Note:** Remote MCP is an experimental feature that must be enabled on your Unleash instance. Contact the Unleash team to get it enabled.\n\n#### OAuth\n\nThe OAuth flow opens your browser, lets you log in to Unleash, and automatically provisions a short-lived PAT. No manual token management required.\n\nFor Claude Code:\n\n```bash\nclaude mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http\n```\n\nFor Codex:\n\n```bash\ncodex mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http\n```\n\nOn first use, the client will automatically open your browser for login. After authenticating with Unleash, a PAT is created and used for all subsequent requests.\n\nThe PAT expires after 24 hours by default.\n\n#### Personal Access Token (PAT)\n\nUse this method when you already have a PAT or need headless/non-interactive access (CI pipelines, shared developer environments, clients that don't support OAuth).\n\nTo create a PAT: log in to your Unleash instance, go to **Profile** > **Personal Access Tokens**, and create a new token.\n\nFor Claude Code:\n\n```bash\nclaude mcp add unleash https://{{your-instance-url}}/api/admin/mcp \\\n  --transport http \\\n  --header \"Authorization: Bearer {{your-personal-access-token}}\"\n```\n\nFor Codex:\n\n```bash\ncodex mcp add unleash https://{{your-instance-url}}/api/admin/mcp \\\n  --transport http \\\n  --header \"Authorization: Bearer {{your-personal-access-token}}\"\n```\n\nThe `--header` flag sends the PAT directly, bypassing the OAuth flow entirely.\n\n### Quickstart with npx\n\nYou can run the MCP server as a standalone process without cloning the repository using `npx`. Provide configuration through environment variables or a local `.env` file in the directory where you run the command:\n\n```bash\nUNLEASH_BASE_URL={{your-instance-url}} \\\nUNLEASH_PAT={{your-personal-access-token}} \\\nUNLEASH_DEFAULT_PROJECT={{default_project_id}} \\\nnpx unleash-mcp --log-level debug\n```\n\nThe CLI supports the same flags as the local build (for example, `--dry-run`, `--log-level`).\n\n### Local development setup\n\nFollow these steps to set up the project for local development.\n\n1. **Install dependencies**\n\nClone the repository and install dependencies using pnpm. Corepack keeps everyone on the same pnpm version:\n\n```bash\ngit clone https://github.com/Unleash/unleash-mcp.git\ncd unleash-mcp\n\n# Enable Corepack once per machine, then prepare the pnpm this repo expects\ncorepack enable\ncorepack prepare pnpm@11.0.8 --activate\n\npnpm install\n```\n\n2) **Run in dev mode directly from Claude or Codex**\n\nAvoid `npm run` output and `tsx watch` banners because any extra stdout breaks the MCP handshake. Two quiet options:\n\n**A) Use compiled JS (most reliable)**\n```\nnpm run build\n# or keep it hot in another terminal: npm run build:watch\n\nclaude mcp add unleash-dev \\\n  --env UNLEASH_BASE_URL={{your-instance-url}} \\\n  --env UNLEASH_PAT={{your-personal-access-token}} \\\n  --env LOG_LEVEL=debug \\\n  --env APP_LOG_FILE=\"$(pwd)/app.log\" \\\n  --env MCP_STDIO_LOG_FILE=\"$(pwd)/mcp-stdio.log\" \\\n  -- node \"$(pwd)/dist/index.js\"\n\ncodex mcp add unleash-dev \\\n  --env UNLEASH_BASE_URL={{your-instance-url}} \\\n  --env UNLEASH_PAT={{your-personal-access-token}} \\\n  --env LOG_LEVEL=debug \\\n  --env APP_LOG_FILE=\"$(pwd)/app.log\" \\\n  --env MCP_STDIO_LOG_FILE=\"$(pwd)/mcp-stdio.log\" \\\n  -- node \"$(pwd)/dist/index.js\"\n```\n\n**B) Use TypeScript directly (no build)**\n```\nclaude mcp add unleash-dev \\\n  --env UNLEASH_BASE_URL={{your-instance-url}} \\\n  --env UNLEASH_PAT={{your-personal-access-token}} \\\n  --env LOG_LEVEL=debug \\\n  --env APP_LOG_FILE=\"$(pwd)/app.log\" \\\n  --env MCP_STDIO_LOG_FILE=\"$(pwd)/mcp-stdio.log\" \\\n  -- node --no-warnings --import tsx \"$(pwd)/src/index.ts\"\n\ncodex mcp add unleash-dev \\\n  --env UNLEASH_BASE_URL={{your-instance-url}} \\\n  --env UNLEASH_PAT={{your-personal-access-token}} \\\n  --env LOG_LEVEL=debug \\\n  --env APP_LOG_FILE=\"$(pwd)/app.log\" \\\n  --env MCP_STDIO_LOG_FILE=\"$(pwd)/mcp-stdio.log\" \\\n  -- node --no-warnings --import tsx \"$(pwd)/src/index.ts\"\n```\n\nNotes:\n- `node --import tsx` is quiet (no npm lifecycle output) and runs TS directly; use this when you want to avoid building.\n- `node dist/index.js` is the safest choice; pair it with `npm run build:watch` to rebuild on changes while the agent command stays stable.\n- Logs stay in the repo root (`app.log`, `mcp-stdio.log`), both gitignored.\n\n### Logging control\n\n- `LOG_LEVEL` (preferred): controls application logging verbosity (`debug`, `info`, `warn`, `error`). Defaults to `error` when unset.\n- `--log-level` CLI flag: optional override for `LOG_LEVEL` when you want a one-off change.\n- `APP_LOG_FILE` (optional): if set, application logs are written to this file (not stdout). If unset, logs go to stderr.\n- `MCP_STDIO_LOG_FILE` (optional): if set, MCP stdin/stdout/stderr are tee’d into this single file with channel prefixes. Protocol messages still flow over stdout normally.\n\n### Client attribution\n\nWhen an MCP client sends `clientInfo` during initialization (Claude Code, Cursor, Copilot, Windsurf, Codex, Kiro, and other conforming clients), the server enriches the `User-Agent` header on outbound Unleash Admin API calls:\n\n```\nUser-Agent: unleash-mcp/<version> (MCP Server; client=claude-code/1.2.3)\n```\n\nThis makes Unleash event logs answer \"which AI tool created or toggled this flag\" without any server-side changes. Attribution values are sanitized so they cannot break the User-Agent header.\n\nSet `UNLEASH_MCP_CLIENT_ATTRIBUTION=off` to disable enrichment and revert to `unleash-mcp/<version> (MCP Server)`. Default: enabled.\n\n## Tool reference\n\nThis section describes each of the core tools in detail, including its purpose, parameters, and output.\n\n### Create flag\n\nThe `create_flag` tool creates a new feature flag in Unleash with comprehensive validation and progress tracking. \n\n#### When to use\n\nUse this tool when you have already determined that a feature flag is required (for example, after running `evaluate_change`) and you are ready to create it with the correct type and metadata.\n\n#### Parameters\n\nThe tool accepts the following parameters:\n- `name` (required): Unique feature flag name within the project.\n- `type` (required): Feature flag type indicating lifecycle and intent.\n  - `release`: Gradual feature rollouts to users.\n  - `experiment`: A/B tests and experiments.\n  - `operational`: System behavior and operational toggles.\n  - `kill-switch`: Emergency shutdowns or circuit breakers.\n  - `permission`: Control feature access based on user roles or entitlements.\n- `description` (required): Clear explanation of what the flag controls and why it exists.\n- `projectId` (optional): Target project (defaults to `UNLEASH_DEFAULT_PROJECT`).\n- `impressionData` (optional): Enable analytics tracking (defaults to false).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse create_flag with:\n- name: \"new-checkout-flow\"\n- type: \"release\"\n- description: \"Gradual rollout of the redesigned checkout experience\"\n- projectId: \"ecommerce\"\n```\n\n**Tool payload**\n```json\n{\n  \"name\": \"new-checkout-flow\",\n  \"type\": \"release\",\n  \"description\": \"Gradual rollout of the redesigned checkout experience with improved conversion tracking\",\n  \"projectId\": \"ecommerce\",\n  \"impressionData\": true\n}\n```\n\n**Tool output**\n\nOn success, the tool returns a JSON object containing the new feature flag's URL in the Unleash Admin UI, an MCP resource link for programmatic access, creation timestamp, and configuration details.\n\n### Evaluate change\n\nThe `evaluate_change` tool evaluates whether a code change should be behind a feature flag. It examines the structure, context, and potential risk of the change and returns a recommendation with an explanation and next steps.\n\n#### When to use\n\nUse `evaluate_change` at the beginning of a feature or modification when you want to understand whether the work requires a feature flag. This tool is also helpful when you are unsure which flag type to use or want guidance on rollout planning.\n\n#### How it works\nThe tool returns detailed, markdown-formatted guidance for the LLM assistant based on [Unleash best practices](https://docs.getunleash.io/topics/feature-flags/best-practices-using-feature-flags-at-scale).\n\nThe guidance includes:\n- **Parent flag detection**: Checks if code is already protected by existing flags.\n- **Risk assessment**: Analyzes code patterns to identify risky operations.\n- **Code type evaluation**: Classifies the change (for example, test, config, feature, or bug fix).\n- **Recommendation**: Suggests whether to create a flag, use an existing flag, or skip the flag.\n- **Next actions**: Provides specific instructions on what to do next.\n\nWhen `evaluate_change` determines a flag is needed, it provides explicit instructions to:\n\n1. Call `create_flag` tool to create the feature flag.\n2. Call `wrap_change` tool to get language-specific code wrapping guidance.\n3. Implement the wrapped code following the detected patterns.\n\n**The evaluation process**\n\nThe tool follows a clear evaluation process:\n\n```\nStep 1: Gather code changes (git diff, read files)\n        ↓\nStep 2: Check for parent flags (avoiding nesting)\n        ↓\nStep 3: Assess code type (test? config? feature?)\n        ↓\nStep 4: Evaluate risk (auth? payments? API changes?)\n        ↓\nStep 5: Calculate risk score\n        ↓\nStep 6: Make recommendation\n        ↓\nStep 7: Take action (create flag or proceed without)\n```\n\n**Risk assessment**\n\nThe tool uses language-agnostic patterns to score risk:\n- **Critical risk** (Score +5): For example, auth, payments, security, and database operations.\n- **High risk** (Score +3): For example, API changes, external services, or new classes.\n- **Medium risk** (Score +2): For example, async operations or state management.\n- **Low risk** (Score +1): For example, bug fixes, refactors, or small changes.\n\nScores accumulate across matched categories. The total maps to a risk level:\n- **Critical**: Score ≥ 5\n- **High**: Score ≥ 3\n- **Medium**: Score ≥ 2\n- **Low**: Score < 2\n\nThe output includes a `confidence` score (0-1) representing the LLM's self-assessed certainty, which increases with more context provided.\n\nAn **excluded** category covers files that do not need feature flags regardless of content: test files (`*.test.ts`, `*_test.go`, etc.), configuration files (`*.config.js`, `.env`, `*.yaml`), and documentation files (`*.md`, `docs/**`). Changes limited to excluded files will not trigger a flag recommendation.\n\nThe full pattern definitions, including per-category keywords, file globs, code patterns, and reasoning, are in [`src/evaluation/riskPatterns.ts`](src/evaluation/riskPatterns.ts).\n\n**Parent flag detection**\n\nThe tool looks for common patterns across languages, such as:\n- **Conditionals**: `if (isEnabled('flag'))`, `if client.is_enabled('flag'):`\n- **Assignments**: `const enabled = useFlag('flag')`\n- **Hooks**: `const enabled = useFlag('flag')` → `{enabled && <Component />}`\n- **Guards**: `if (!isEnabled('flag')) return;`\n- **Wrappers**: `withFeatureFlag('flag', () => {...})`\n\n#### Parameters\n\nAll parameters are optional, but more context leads to better recommendations:\n- `repository` (string): Repository name or path.\n- `branch` (string): Current branch name.\n- `files` (array): List of files being changed.\n- `description` (string): Description of the change.\n- `riskLevel` (enum): `low`, `medium`, `high`, or `critical`, as assessed by the user.\n- `codeContext` (string): Surrounding code for parent flag detection.\n\n#### Usage example\n\n**Agent prompt**\n\nSimple usage where you let the agent gather context:\n```\nUse evaluate_change to help me determine if I need a feature flag\n```\n\nExplicit instructions:\n```\nUse evaluate_change with:\n- description: \"Add Stripe payment processing\"\n- riskLevel: \"high\"\n```\n\n**Tool payload**\n\n```json\n{\n  \"repository\": \"my-app\",\n  \"branch\": \"feature/stripe-integration\",\n  \"files\": [\"src/payments/stripe.ts\"],\n  \"description\": \"Add Stripe payment processing\",\n  \"riskLevel\": \"high\",\n  \"codeContext\": \"surrounding code for parent flag detection\"\n}\n```\n\n**Tool output**\n\nReturns a JSON object with the evaluation result, including a `needsFlag` boolean, a `recommendation` (e.g., \"create_new\"), a suggested flag name, risk level, and a detailed `explanation`.\n\n```json\n{\n  \"needsFlag\": true,\n  \"reason\": \"new_feature\",\n  \"recommendation\": \"create_new\",\n  \"suggestedFlag\": \"stripe-payment-integration\",\n  \"riskLevel\": \"critical\",\n  \"riskScore\": 5,\n  \"explanation\": \"This change integrates Stripe payments, which is critical risk...\",\n  \"confidence\": 0.9\n}\n```\n\n### Detect flag\n\nThe `detect_flag` tool finds existing feature flags in the codebase so you can reuse them instead of creating duplicates. This tool is automatically integrated into the `evaluate_change` workflow but can also be used manually.\n\n#### When to use\n\nUse this tool before creating a new feature flag or during code evaluation to check for existing flags that might already cover your use case. This helps prevent flag duplication.\n\n#### How it works\n\nThe tool returns comprehensive search instructions and uses multiple detection strategies:\n- **File-based detection**: Search in files you're modifying for existing flags.\n- **Git history analysis**: Look for recently added flags in commit history.\n- **Semantic name matching**: Match descriptions to existing flag names.\n- **Code context analysis**: Inspect code around the change.\n\nThe tool then follows a scoring process:\n\n```\nStep 1: Execute file-based search (grep for flag patterns in target files)\n        ↓\nStep 2: Search git history for recent flag additions\n        ↓\nStep 3: Perform semantic matching (description → flag names)\n        ↓\nStep 4: Analyze code context (if provided)\n        ↓\nStep 5: Combine scores from all methods\n        ↓\nStep 6: Return best candidate with confidence score\n```\n\n**Confidence levels**\n\nThe tool returns candidates with confidence scores:\n\n- High `≥0.7`: Strong match; reuse is recommended.\n- Medium `0.4-0.7`: Possible match; review manually.\n- Low `<0.4`: Weak match; likely create a new flag.\n\n#### Parameters\n\n- `description` (required): Description of the change or feature. For example, `\"payment processing with Stripe\"`, `\"new checkout flow\"`.\n- `files` (optional): Files being modified. For example, `[\"src/payments/stripe.ts\", \"src/checkout/flow.ts\"]`.\n- `codeContext` (optional): Nearby code to scan for flags.\n\n#### Usage example\n\n**Agent prompt**\n\nCheck for existing flags before creating a flag:\n```\nUse detect_flag with description \"payment processing with Stripe\"\n```\n\nIntegrated automatically in evaluation:\n```\nUse evaluate_change - automatically searches for existing flags\n```\n\n**Tool payload**\n\n```json\n{\n  \"description\": \"payment processing with Stripe\",\n  \"files\": [\"src/payments/stripe.ts\"]\n}\n```\n\n**Tool output**\n\nReturns a JSON object indicating if a flag was found. If `flagFound` is true, it includes a `candidate` object with the flag's name, location, confidence score, and the reason for the match.\n\nMatch found:\n```json\n{\n  \"flagFound\": true,\n  \"candidate\": {\n    \"name\": \"stripe-payment-integration\",\n    \"location\": \"src/payments/stripe.ts:42\",\n    \"context\": \"if (client.isEnabled('stripe-payment-integration')) {\",\n    \"confidence\": 0.85,\n    \"reasoning\": \"Found in same file you're modifying, added 2 days ago\",\n    \"detectionMethod\": \"file-based\"\n  }\n}\n```\n\nNo match found:\n\n```json\n{\n  \"flagFound\": false,\n  \"candidate\": null\n}\n```\n\n### Wrap change\n\nThe tool `wrap_change` generates language-specific code snippets and guidance for wrapping code with feature flags. It helps LLMs and developers follow existing patterns in the codebase and use flags correctly.\n\n#### When to use\nUse this tool after you have created a feature flag (with `create_flag`) and need to implement it in your code. It's especially useful when you want to ensure you are following existing codebase patterns or need framework-specific examples (e.g., React, Django).\n\n#### How it works\n\nThis tool is the final step in the `evaluate_change` → `create_flag` → `wrap_change` workflow.\n\nThe tool provides the following guidance in its response:\n1. **Search instructions**: Step-by-step guide for finding existing flag patterns in your codebase using grep.\n2. **Pattern detection**: Identifies common patterns (for example, imports, client variable names, method names, or wrapping styles).\n3. **Default templates**: Fallback code snippets if no patterns are found.\n4. **Framework-specific examples**: Specialized patterns for React, Express, Django, and others.\n5. **Multiple patterns**: If-blocks, guard clauses, hooks, decorators, middleware, and more.\n\n**Supported languages and frameworks:**\n\n- **TypeScript/JavaScript**: Node.js, React Hooks, Express middleware.\n- **Python**: FastAPI, Django, Flask decorators.\n- **Go**: Standard if-blocks, HTTP middleware.\n- **Ruby**: Rails controllers.\n- **PHP**: Laravel controllers.\n- **C#**: .NET/ASP.NET controllers.\n- **Java**: Spring Boot.\n- **Rust**: Actix/Rocket handlers.\n\n#### Parameters\n\n- `flagName` (required): Feature flag name to wrap the code with. For example: `\"new-checkout-flow\"`, or `\"stripe-integration\"`.\n- `language` (optional): Programming language (auto-detected from `fileName` if not provided). Supported: `typescript`, `javascript`, `python`, `go`, `ruby`, `php`, `csharp`, `java`, `rust`\n- `fileName` (optional): File name being modified (helps detect language), For example: `\"checkout.ts\"`, `\"payment.py\"`, or `\"handler.go\"`.\n- `codeContext` (optional): Surrounding code to help detect existing patterns.\n- `frameworkHint` (optional): Framework for specialized templates. For example, `\"React\"`, `\"Express\"`, `\"Django\"`, `\"Rails\"`, or `\"Spring Boot\"`.\n\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse wrap_change with:\n- flagName: \"new-checkout-flow\"\n- fileName: \"src/components/checkout.ts\"\n- frameworkHint: \"React\"\n```\n\n**Tool payload**\n\n```json\n{\n  \"flagName\": \"new-checkout-flow\",\n  \"fileName\": \"checkout.ts\",\n  \"frameworkHint\": \"React\"\n}\n```\n\n**Tool output**\n\nReturns a comprehensive, markdown-formatted string that guides the user on how to wrap their code. This includes a quickstart, search instructions, wrapping instructions with placeholders, all available templates for the language, and links to SDK documentation.\n\n```markdown\n# Feature Flag Wrapping Guide: \"new-checkout-flow\"\n\n**Language:** TypeScript\n**Framework:** React\n\n## Quick Start\n[Recommended pattern with import and usage]\n\n## How to Search for Existing Flag Patterns\n[Step-by-step Grep instructions]\n\n## How to Wrap Code with Feature Flag\n[Wrapping instructions with examples]\n\n## All Available Templates\n[If-block, guard clause, hooks, ternary, etc.]\n```\n\n### Set flag rollout\n\nThe `set_flag_rollout` tool configures a `flexibleRollout` strategy on a feature flag environment. It sets the rollout percentage, stickiness, and optional strategy-level variants. This does not enable the flag; use `toggle_flag_environment` to turn it on.\n\n#### When to use\n\nUse this tool after creating a flag with `create_flag` to configure how traffic is distributed before enabling it. Also use it to update an existing rollout percentage or add variants.\n\n#### Parameters\n\n- `featureName` (required): Feature flag name.\n- `environment` (required): Target environment (for example, `\"production\"`, `\"development\"`).\n- `rolloutPercentage` (required): Percentage of traffic to receive the feature (0-100).\n- `projectId` (optional): Project ID (defaults to `UNLEASH_DEFAULT_PROJECT`).\n- `groupId` (optional): Stickiness bucketing key (defaults to the feature name).\n- `stickiness` (optional): Stickiness field (defaults to `\"default\"`).\n- `title` (optional): Descriptive title for the strategy.\n- `disabled` (optional): Create the strategy in a disabled state (defaults to false).\n- `variants` (optional): List of strategy-level variants, each with `name`, `weight` (0-1000), optional `weightType` (`\"variable\"` or `\"fix\"`), `stickiness`, and `payload` (`{type, value}`).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse set_flag_rollout with:\n- featureName: \"new-checkout-flow\"\n- environment: \"production\"\n- rolloutPercentage: 25\n```\n\n**Tool payload**\n\n```json\n{\n  \"featureName\": \"new-checkout-flow\",\n  \"environment\": \"production\",\n  \"rolloutPercentage\": 25,\n  \"projectId\": \"ecommerce\",\n  \"stickiness\": \"userId\"\n}\n```\n\n**Tool output**\n\nReturns a confirmation with the configured percentage, a link to the flag in the Unleash Admin UI, the Admin API strategies URL, and an MCP resource link for the flag.\n\n### Get flag state\n\nThe `get_flag_state` tool fetches a feature flag's current metadata and environment strategies from the Unleash Admin API. It returns the flag's type, enabled/archived status, impression data setting, and a per-environment summary of active strategies and variants.\n\n#### When to use\n\nUse this tool to inspect a flag before modifying it, to check how many strategies are active across environments, or to find strategy IDs before calling `remove_flag_strategy`.\n\n#### Parameters\n\n- `featureName` (required): Feature flag name.\n- `projectId` (optional): Project ID (defaults to `UNLEASH_DEFAULT_PROJECT`).\n- `environment` (optional): Filter results to a single environment (case-insensitive).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse get_flag_state with:\n- featureName: \"new-checkout-flow\"\n- environment: \"production\"\n```\n\n**Tool payload**\n\n```json\n{\n  \"featureName\": \"new-checkout-flow\",\n  \"projectId\": \"ecommerce\",\n  \"environment\": \"production\"\n}\n```\n\n**Tool output**\n\nReturns a text summary of the flag (type, enabled/archived/impression-data, project, environment summaries with strategy counts) along with UI and API links. The structured output includes the full feature object with all environments and strategy details.\n\n### List flags\n\nThe `list_flags` tool enumerates the feature flags in a project and returns a structured inventory with pagination and sort order. Active and archived flags are returned separately: call it once with `archived: false` (the default) and once with `archived: true` to assemble a full inventory for audit workflows.\n\n#### When to use\n\nUse this tool when an agent needs to discover which flags already exist, for example to audit a project, find candidates for cleanup, or build context before creating or wrapping a flag. It is the agent-invokable equivalent of the `unleash://projects/{projectId}/feature-flags` resource (see [MCP resources](#mcp-resources)).\n\n#### Parameters\n\n- `projectId` (optional): Project to list flags from (defaults to `UNLEASH_DEFAULT_PROJECT`; auto-resolved when a single project exists).\n- `archived` (optional): `true` to list archived flags instead of active ones. Defaults to `false`. Active and archived flags cannot be returned in the same response.\n- `limit` (optional): Maximum flags per page (default: server page size, typically 50).\n- `order` (optional): Sort order by flag name, `asc` or `desc` (default: `asc`).\n- `offset` (optional): Number of flags to skip for pagination (default: 0).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse list_flags with:\n- projectId: \"ecommerce\"\n- archived: false\n```\n\n**Tool payload**\n\n```json\n{\n  \"projectId\": \"ecommerce\",\n  \"archived\": false,\n  \"limit\": 50,\n  \"order\": \"asc\"\n}\n```\n\n**Tool output**\n\nReturns a text summary plus structured content with `projectId`, `archived`, `order`, `limit`, `offset`, `nextOffset`, `totalFlags`, and the `flags` array (each with name, type, project, archived status, and links). Use `nextOffset` to page through large projects.\n\n### List projects\n\nThe `list_projects` tool enumerates the Unleash projects available to the configured token, with pagination and sort order.\n\n#### When to use\n\nUse this tool when the target project is unknown, or when an agent needs to pick a project before listing or creating flags. It is the agent-invokable equivalent of the `unleash://projects` resource (see [MCP resources](#mcp-resources)).\n\n#### Parameters\n\n- `limit` (optional): Maximum projects per page (default: server page size, typically 20).\n- `order` (optional): Sort order by project creation time, `asc` or `desc` (default: `desc`, newest first).\n- `offset` (optional): Number of projects to skip for pagination (default: 0).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse list_projects to see which projects are available.\n```\n\n**Tool payload**\n\n```json\n{\n  \"limit\": 20,\n  \"order\": \"desc\"\n}\n```\n\n**Tool output**\n\nReturns a text summary plus structured content with `order`, `limit`, `offset`, `nextOffset`, `totalProjects`, and the `projects` array (each with id, name, description, mode, creation time, and URL).\n\n### Toggle flag environment\n\nThe `toggle_flag_environment` tool enables or disables a feature flag in a specific environment. For gradual rollouts, configure a strategy with `set_flag_rollout` before enabling.\n\n#### When to use\n\nUse this tool to turn a flag on after configuring a rollout strategy, or to disable a flag during an incident or after completing a rollout.\n\n#### Parameters\n\n- `featureName` (required): Feature flag name.\n- `environment` (required): Environment to toggle (for example, `\"production\"`).\n- `enabled` (required): `true` to enable, `false` to disable.\n- `projectId` (optional): Project ID (defaults to `UNLEASH_DEFAULT_PROJECT`).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse toggle_flag_environment with:\n- featureName: \"new-checkout-flow\"\n- environment: \"production\"\n- enabled: true\n```\n\n**Tool payload**\n\n```json\n{\n  \"featureName\": \"new-checkout-flow\",\n  \"environment\": \"production\",\n  \"enabled\": true,\n  \"projectId\": \"ecommerce\"\n}\n```\n\n**Tool output**\n\nReturns a confirmation of the new state, a summary of the environment (enabled/disabled, strategy count), and links to the flag in the Unleash Admin UI and Admin API.\n\n### Remove flag strategy\n\nThe `remove_flag_strategy` tool deletes a strategy configuration from a feature flag environment. Use `get_flag_state` first to discover the strategy ID.\n\n#### When to use\n\nUse this tool to clean up stale strategies, or to replace an existing strategy by removing the old one and configuring a new one with `set_flag_rollout`.\n\n#### Parameters\n\n- `featureName` (required): Feature flag name.\n- `environment` (required): Environment from which to remove the strategy.\n- `strategyId` (required): ID of the strategy to remove (find this via `get_flag_state`).\n- `projectId` (optional): Project ID (defaults to `UNLEASH_DEFAULT_PROJECT`).\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse get_flag_state to find strategy IDs for \"new-checkout-flow\" in production,\nthen use remove_flag_strategy to delete the old strategy.\n```\n\n**Tool payload**\n\n```json\n{\n  \"featureName\": \"new-checkout-flow\",\n  \"environment\": \"production\",\n  \"strategyId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"projectId\": \"ecommerce\"\n}\n```\n\n**Tool output**\n\nReturns a confirmation of removal, a count of remaining strategies in the environment, and links to the flag in the Unleash Admin UI and Admin API.\n\n### Cleanup flag\n\nThe `cleanup_flag` tool generates step-by-step instructions for safely removing feature flag code from the codebase while preserving the desired code path.\n\n#### When to use\n\nUse this tool when a feature flag has completed its lifecycle:\n- After a rollout reaches 100% and the flag is no longer needed.\n- When deprecating an experimental feature (preserve the disabled path).\n- When removing a kill switch that is no longer necessary.\n- During technical debt cleanup of old flags.\n\n#### How it works\n\nThe tool returns comprehensive cleanup instructions that guide the LLM through:\n1. Finding all occurrences of the flag using grep patterns.\n2. Identifying usage patterns (if-else blocks, ternary expressions, guard clauses, hooks, decorators, middleware).\n3. Removing flag checks while preserving the correct code path.\n4. Cleaning up unused imports with language-specific guidance.\n5. Verifying changes with post-cleanup search and test steps.\n\nIf `preservePath` is not provided, the tool returns instructions to ask the user which path to keep before proceeding.\n\n#### Parameters\n\n- `flagName` (required): Name of the feature flag to remove (for example, `\"new-checkout-flow\"`).\n- `preservePath` (optional): `\"enabled\"` to keep the flag-on code path (typical for completed rollouts), or `\"disabled\"` to keep the flag-off path (for removed experiments). If omitted, the tool prompts you to ask the user.\n- `files` (optional): Specific files to clean up. If omitted, searches the entire codebase.\n- `language` (optional): Programming language for specialized import cleanup guidance (for example, `\"typescript\"`, `\"python\"`). Auto-detected from `files` if not provided.\n\n#### Usage example\n\n**Agent prompt**\n\n```\nUse cleanup_flag with:\n- flagName: \"new-checkout-flow\"\n- preservePath: \"enabled\"\n```\n\n**Tool payload**\n\n```json\n{\n  \"flagName\": \"new-checkout-flow\",\n  \"preservePath\": \"enabled\",\n  \"files\": [\"src/components/checkout.tsx\", \"src/api/checkout.ts\"],\n  \"language\": \"typescript\"\n}\n```\n\n**Tool output**\n\nReturns a markdown guide covering the cleanup scope and preserved path, grep commands to find all occurrences, per-pattern removal instructions, language-specific import cleanup, and post-cleanup verification steps (re-search, run tests, manual review).\n\n## MCP resources\n\nThe server registers MCP [resources](https://modelcontextprotocol.io/docs/concepts/resources) for reading project and feature flag data. All resources return JSON and are cached for 60 seconds.\n\n| URI template | Description |\n|---|---|\n| `unleash://projects{?limit,order,offset}` | List projects. Default page size: 20, sorted by creation time (newest first). |\n| `unleash://projects/{projectId}/feature-flags{?limit,order,offset}` | List flags in a project. Default page size: 50, sorted alphabetically. |\n| `unleash://projects/{projectId}/feature-flags/{flagName}` | Single feature flag metadata. |\n\nThe first two templates accept optional query parameters: `limit` (page size), `order` (`asc` or `desc`), and `offset` (pagination start). Responses include `fetchedAt`, `cached`, `totalProjects` or `totalFlags`, and `nextOffset` fields.\n\n> **Resources vs. tools:** MCP resources are application-controlled, so many clients only surface them through user-driven UI (for example `#`-mentions) and do not let the agent call `resources/read` on its own. When an agent needs to enumerate projects or flags programmatically, use the `list_projects` and `list_flags` tools, which return the same data through the tool interface. The `detect_flag` inventory analysis routes through the same path.\n\n**Example resource read**\n\n```\nRead unleash://projects/ecommerce/feature-flags?limit=10&order=asc\n```\n\nReturns the first 10 feature flags in the `ecommerce` project, sorted alphabetically, with pagination metadata.\n\n## Architecture\n\nThe server follows a focused, purpose-driven design.\n\n### Structure\n\n```\nsrc/\n├── index.ts                     # Stdio CLI entry point\n├── server.ts                    # Transport-agnostic server factory\n├── remote.ts                    # HTTP request handler for embedded mode\n├── config.ts                    # Configuration loading and validation\n├── context.ts                   # Shared runtime context\n├── version.ts                   # Version constant\n├── unleash/\n│   └── client.ts                # Unleash Admin API client\n├── tools/\n│   ├── types.ts                 # Shared ToolDefinition type\n│   ├── createFlag.ts            # create_flag tool\n│   ├── evaluateChange.ts        # evaluate_change tool\n│   ├── detectFlag.ts            # detect_flag tool\n│   ├── wrapChange.ts            # wrap_change tool\n│   ├── cleanupFlag.ts           # cleanup_flag tool\n│   ├── setFlagRollout.ts        # set_flag_rollout tool\n│   ├── getFlagState.ts          # get_flag_state tool\n│   ├── toggleFlagEnvironment.ts # toggle_flag_environment tool\n│   └── removeFlagStrategy.ts    # remove_flag_strategy tool\n├── resources/\n│   └── unleashResources.ts      # MCP resource handlers (projects, flags)\n├── prompts/\n│   └── promptBuilder.ts         # Markdown formatting utilities\n├── evaluation/\n│   ├── riskPatterns.ts          # Risk assessment patterns\n│   └── flagDetectionPatterns.ts # Parent flag detection patterns\n├── detection/\n│   ├── flagDiscovery.ts         # Flag discovery strategies\n│   └── flagScoring.ts           # Scoring and ranking logic\n├── knowledge/\n│   └── unleashBestPractices.ts  # Best practices knowledge base\n├── templates/\n│   ├── languages.ts             # Language detection and metadata\n│   ├── wrapperTemplates.ts      # Code wrapping templates\n│   ├── searchGuidance.ts        # Pattern search instructions\n│   └── cleanupGuidance.ts       # Flag cleanup instructions\n└── utils/\n    ├── errors.ts                # Error normalization\n    ├── streaming.ts             # Progress notifications\n    └── stdioLogging.ts          # Stdio protocol traffic logging\n```\n\n### Design principles\n\n- **Thin surface area**: Only the endpoints needed for the core capabilities.\n- **Purpose-driven**: Each module serves a specific, well-defined purpose.\n- **Explicit validation**: Zod schemas validate all inputs before API calls.\n- **Error normalization**: All errors converted to `{code, message, hint}` format.\n- **Progress streaming**: Long-running operations provide visibility.\n- **Best practices integration**: Guidance from Unleash docs embedded in tool descriptions.\n\n## Configuration\n\nThis section provides a quick reference for all configuration options.\n\n**Environment variables:**\n- `UNLEASH_BASE_URL`: Your Unleash instance URL (required). Both `https://your-instance.getunleash.io` and `https://your-instance.getunleash.io/api` are accepted — the server normalizes a trailing `/api` away if present, so you can paste the same value most Unleash SDKs expect.\n- `UNLEASH_PAT`: Personal access token (required).\n- `UNLEASH_DEFAULT_PROJECT`: The default project ID the MCP should use (optional).\n\n**CLI flags:**\n- `--dry-run`: Simulate operations without making actual API calls.\n- `--log-level`: Set logging verbosity (debug, info, warn, error).\n\n## Best practices\n\nThis server encourages Unleash best practices from the [official documentation](https://docs.getunleash.io/topics/feature-flags/best-practices-using-feature-flags-at-scale):\n\n### Flag lifecycle\n\n1. **Create with intent**: Choose the right flag type to signal purpose.\n2. **Document clearly**: Write descriptions that explain the \"why\".\n3. **Plan for cleanup**: Feature flags are temporary; plan their removal.\n4. **Monitor usage**: Enable impression data for important flags.\n\n### Flag types\n\n- **Release flags**: For gradual feature rollouts (remove after full rollout).\n- **Experiment flags**: For A/B tests (remove after analysis).\n- **Operational flags**: For system behavior (longer-lived, review periodically).\n- **Kill switches**: For emergency controls (maintain until feature is stable).\n- **Permission flags**: For access control (longer-lived, review permissions).\n\n### Naming conventions\n\n- Use kebab-case: `new-checkout-flow`\n- Be descriptive: `enable-ai-recommendations` not `flag1`.\n- Include scope when needed: `mobile-push-notifications`.\n\n## API reference\n\nThis server uses the Unleash Admin API. For complete API documentation, see:\n\n- [Unleash Admin API OpenAPI Spec](https://app.unleash-hosted.com/hosted/docs/openapi.json)\n- [Unleash API Documentation](https://docs.getunleash.io/reference/api/unleash)\n\n### Endpoints used\n\n- `GET /api/admin/projects` - List projects\n- `GET /api/admin/projects/{projectId}/features` - List feature flags\n- `POST /api/admin/projects/{projectId}/features` - Create feature flag\n- `GET /api/admin/projects/{projectId}/features/{featureName}` - Get flag details\n- `POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies` - Add rollout strategy\n- `DELETE /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/strategies/{strategyId}` - Remove strategy\n- `POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/on` - Enable flag\n- `POST /api/admin/projects/{projectId}/features/{featureName}/environments/{environment}/off` - Disable flag\n\n## Troubleshooting\n\n### Configuration issues\n\n**Error: \"UNLEASH_BASE_URL must be a valid URL\"**: Ensure your base URL is complete, including protocol. For example, `https://app.unleash-hosted.com/instance`. Remove any trailing slashes.\n\n**Error: \"UNLEASH_PAT is required\"**: Check that your `.env` file exists and contains `UNLEASH_PAT={{your-personal-access-token}}`. Verify that the token is valid in Unleash.\n\n### API issues\n\n**Error: \"HTTP_401\"**: Your personal access token may be invalid or expired. Generate a new token under **Profile > View Profile settings > Personal API tokens > New token**.\n\n**Error: \"HTTP_403\"**: Your token doesn't have permission to create flags in this project. Review your role and permissions in Unleash.\n\n**Error: \"HTTP_404\"**: The project ID doesn't exist. Confirm the project ID in Unleash Admin UI.\n\n**Error: \"HTTP_409\"**: A flag with this name already exists in the project. Use a different name or reuse the existing flag.\n\n## License\n\nMIT\n\n## Contributing\n\nThis is a purpose-driven project with a focused scope. Contributions should:\n\n- Align with the existing tool surface and MCP resource model.\n- Maintain the thin, purpose-driven architecture.\n- Follow Unleash best practices.\n- Include clear documentation.\n","readmeFilename":"README.md"}