{"_id":"@dockndevai/mcp-keycloak","_rev":"8-04ee70fdbee69480c1030e02dedadcf9","name":"@dockndevai/mcp-keycloak","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@dockndevai/mcp-keycloak","version":"0.1.0","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.1.0","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"d6c689aa5d8346deb0deaf16c7118b6dbf1d53d0","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.1.0.tgz","fileCount":30,"integrity":"sha512-vo8SjLnekOunAnVfhpI5pzeKE6M7uuFv+/mKB4gsXXEwGSUpTij3JQZaQ0aClff8+6m5YFFp73tIefgk8KlAjQ==","signatures":[{"sig":"MEUCIDzN6IHSLEFbjIoEAzh9BVT/m73OFS47DqdNoYOQ8mYzAiEA9eL5UWTfgiTaTwsFKm40n7owyeqi0i/E+IVqprzRwig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69793},"type":"module","engines":{"node":">=20"},"gitHead":"0e8e9582fcd1f7b9363d54b0dd3df99f6b0afe31","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.7","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.1.0_1787471355911_0.2489942742618525","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dockndevai/mcp-keycloak","version":"0.1.1","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.1.1","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"b11bcfb2de9ae996989ad2f01a374e4c2f01912f","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.1.1.tgz","fileCount":33,"integrity":"sha512-wt2IK1X3YX7WFo/NNJSHqSKA+RzrhLc4OR6PmdZO9b0+agaBUpyoaU4AVK/jcF6XLiAAWkfGfJYNdfO9m8+6bg==","signatures":[{"sig":"MEQCIBwkb7N89Nt6VJ1yXJM6RqrnoXdyq+He4ecAaocpoJx9AiBJpjFR9rl0KNi01TCnfPHWTreRU6cUQeNs+dRSiXKY3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74657},"type":"module","engines":{"node":">=20"},"gitHead":"e7cbdbe2ef8460efad5aaa2e4de824c926e64a44","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.7","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.1.1_1787885306639_0.4402325249498016","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dockndevai/mcp-keycloak","version":"0.1.2","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.1.2","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"a79997859d5a099b51960ab14fb994cc6d68a91d","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.1.2.tgz","fileCount":33,"integrity":"sha512-tOKCerjHd+l0sZgk6r0YfkEWiKMVOTSP0cL4IDXl3GypkgIX8xY5ZQ/6j74OEo77l1YXywIvy2inGdgB/HkeXw==","signatures":[{"sig":"MEUCIHbneoCvYycuOc5fsO1z1d3MV6kjA0Tb7KsRflkHyXPdAiEAjdKy+p+BKStzT6geKEkSbw2GapvMpszHDtZC6OslW3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74657},"type":"module","engines":{"node":">=20"},"gitHead":"15c90c0a6312d8688f28618937d426c2e6550b34","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^3.2.7","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.1.2_1788070704147_0.8867088635480367","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dockndevai/mcp-keycloak","version":"0.1.3","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.1.3","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"3ca1c1656eb1b14d44ee16f659a00a5bf3cc64b7","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.1.3.tgz","fileCount":33,"integrity":"sha512-dGlkIwhcO7Mbit/yEkne56PzYl+qxhWPoCEATKKGXPD0VxUjxZ9GSNT+it6JpaZ4W5VdEAPiZmZ3t/2ha3Smng==","signatures":[{"sig":"MEUCIQCVjViByEDK3JMkkWFkY/uOngJII489tDRmTugJ+ryM6AIgYYf6DvyL5sKz/3J26RDsIfqMH6WJZ1OO8m4M277fWOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74657},"type":"module","engines":{"node":">=22"},"gitHead":"340e73750bdb7b286f5ab6413b2a6bf50de66d88","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.1.3_1788969301632_0.09399877262708212","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dockndevai/mcp-keycloak","version":"0.2.0","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.2.0","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"887773a0d079c1592d314ea7b21ffad04aaf731a","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.2.0.tgz","fileCount":36,"integrity":"sha512-8QmX8vJnKFAWuoiAGvmbon5QTqLB7lwRTjQ4vz2Q/yGNDngUjZbXH3yS35LJ6ZWg+3HDP2Sf/+sKM9zyyu05kg==","signatures":[{"sig":"MEUCIGz5GnPhbfZyn42v53dEvti0TRqfEN2y5Hj50x23EhLGAiEAxjcBrjSVjYxdMZ4KGv84YERos+8DZiAv4o6EoAwqQ2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80885},"type":"module","engines":{"node":">=22"},"gitHead":"3d0013f79bd0263e53d3e7fc7ad86346ea792474","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.2.0_1788981875325_0.4809548252681397","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dockndevai/mcp-keycloak","version":"0.2.1","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.2.1","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"2592ca1567a2efc777230dd1791013fef9676def","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.2.1.tgz","fileCount":36,"integrity":"sha512-7Xt+Y8abiM+uJi43jiJtmP1W0PAjNMfstkgw67n2DkpMBU5PWP7TZxrfyTImAlkfyjMSknR9tYmVEKZiTJX37A==","signatures":[{"sig":"MEYCIQD4/825vmepqZuJz4d/MXnA8hoTE430ImrknPGJA0Rd7QIhANmu1W2UYGgToY89zI4CVN9BEITtvRf2lBnrBrWxsQqi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81569},"type":"module","engines":{"node":">=22"},"gitHead":"bddc6ce824787adf0dcb2314acbf80dba6d0771b","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^5.0.0","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.2.1_1788983004874_0.6981486890818367","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@dockndevai/mcp-keycloak","version":"0.2.2","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"license":"MIT","_id":"@dockndevai/mcp-keycloak@0.2.2","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"bin":{"mcp-keycloak":"dist/index.js"},"dist":{"shasum":"d279de99e08071901397a63e655b888db9a3361f","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.2.2.tgz","fileCount":36,"integrity":"sha512-s3GbYMvEm6MjAgFcNTPBNcBi0Tp8n0kMzc8o0CWIhED/471caYjJ+Q1tavwmCMxqQutPmcBJ+BMlLr492SzY7w==","signatures":[{"sig":"MEUCIQCRdMGb6NgqoLP9qhJp8zG5J3NbRhcUfCrXaLHBs7uP0QIgFpZ16N4nLRXmB18RZfA8nl7wGfl/Xh3pO7WgEzr8Yi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81536},"type":"module","engines":{"node":">=22"},"gitHead":"73a458525d27416736957809fe343de0caad346e","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^5.0.0","typescript":"^7.0.2","@types/node":"^26.5.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-keycloak_0.2.2_1789235786988_0.9572016773302117","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"_id":"@dockndevai/mcp-keycloak@0.3.0","bin":{"mcp-keycloak":"dist/index.js"},"bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"dist":{"shasum":"53d52a793ac9f2868c00548392a6cbe5ee6eaf8c","tarball":"https://registry.npmjs.org/@dockndevai/mcp-keycloak/-/mcp-keycloak-0.3.0.tgz","fileCount":39,"integrity":"sha512-B1lqpNHg916+Mimb2+4ujtEQ6+HEVXITZS/VCBLjDnaEIPqVOM8hlY8NJRxhKLfAMp893y59RMQY/ps0KzhNdg==","signatures":[{"sig":"MEUCIQDTJtg2q8Vq6d9ZT2HhsISP9PApLpExBLjkbJ6HiPxZ5wIgZfbiTIv11XJ5bagCvxT3sg+E+pjnPsXNuobUoexlP7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDV9jcnFJjETHA4aPq2fCc++06cVVIZ1xxP2sZrvBqc+gIgOqTjD59sxORyVVPxWSbxTMqMryqEDrOeLlAmycMVejk="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dockndevai%2fmcp-keycloak@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91559},"name":"@dockndevai/mcp-keycloak","type":"module","engines":{"node":">=22"},"gitHead":"8ab2c519ec87a1b17ea81cd7011904a433640100","license":"MIT","mcpName":"io.github.dockndevai/mcp-keycloak","scripts":{"dev":"tsx watch src/index.ts","lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"version":"0.3.0","_npmUser":{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"},"homepage":"https://github.com/dockndevai/mcp-keycloak#readme","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"_npmVersion":"10.9.8","description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","directories":{},"maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.5.4","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","vitest":"^5.0.0","typescript":"^7.0.2","@types/node":"^26.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-keycloak_0.3.0_1790685032967_0.3642142529520389"}}},"time":{"created":"2026-08-23T07:49:15.756Z","modified":"2026-09-29T12:30:33.362Z","0.1.0":"2026-08-23T07:49:16.049Z","0.1.1":"2026-08-28T02:48:26.784Z","0.1.2":"2026-08-30T06:18:24.321Z","0.1.3":"2026-09-09T15:55:01.794Z","0.2.0":"2026-09-09T19:24:35.448Z","0.2.1":"2026-09-09T19:43:25.055Z","0.2.2":"2026-09-12T17:56:27.116Z","0.3.0":"2026-09-29T12:30:33.046Z"},"bugs":{"url":"https://github.com/dockndevai/mcp-keycloak/issues"},"license":"MIT","homepage":"https://github.com/dockndevai/mcp-keycloak#readme","keywords":["mcp","model-context-protocol","keycloak","iam","llm","ai"],"repository":{"url":"git+https://github.com/dockndevai/mcp-keycloak.git","type":"git"},"description":"Model Context Protocol server for Keycloak — multi-realm admin access with security modes and access-control flags.","maintainers":[{"name":"dock-n-dev-ai","email":"ankitcs17071993@gmail.com"}],"readme":"# mcp-keycloak\n\n[![CI](https://github.com/dockndevai/mcp-keycloak/actions/workflows/ci.yml/badge.svg)](https://github.com/dockndevai/mcp-keycloak/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![npm](https://img.shields.io/npm/v/@dockndevai/mcp-keycloak)](https://www.npmjs.com/package/@dockndevai/mcp-keycloak)\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server for **Keycloak**. It lets an MCP-capable client (Claude Desktop, Claude Code, etc.) inspect and manage Keycloak realms, users, clients, roles, and groups — with security controlled entirely by flags.\n\nThe design goal is **safe by default**: it starts read-only, scopes to an allowlist of realms, protects sensitive realms from mutation, and gates destructive operations behind an explicit opt-in.\n\n## Features\n\n- **Multi-realm** — every tool takes a `realm` argument; scope it with an allowlist.\n- **Access modes** — `read-only` → `read-write` → `admin`, layered so a mode never exposes tools above its level.\n- **Security flags** — realm allowlist, protected realms, delete gating, dry-run, and JSON audit logging (see below).\n- **Two auth strategies** — confidential-client service account (recommended) or admin username/password.\n- **Zero heavy dependencies** — a thin fetch-based Admin REST client, plus the MCP SDK and zod.\n\n## Security model\n\n| Concern | Flag | Default | Effect |\n| --- | --- | --- | --- |\n| What can the server do at all? | `KEYCLOAK_MODE` | `read-only` | `read-only` exposes only read tools; `read-write` adds mutations; `admin` adds destructive tools. Tools above the mode are **never registered**. |\n| Which realms are in scope? | `KEYCLOAK_REALM_ALLOWLIST` | *(all)* | Comma-separated. When set, any operation on a realm outside the list is refused. |\n| Which realms are read-only forever? | `KEYCLOAK_PROTECTED_REALMS` | `master` | Protected realms can be read but never mutated or deleted, regardless of mode. |\n| Can it delete? | `KEYCLOAK_ALLOW_DELETE` | `false` | `delete_*` tools require this **and** admin mode. |\n| Preview without touching Keycloak | `KEYCLOAK_DRY_RUN` | `false` | Write/admin tools validate + log intent, then return without calling Keycloak. |\n| Audit trail | `KEYCLOAK_AUDIT_LOG` | `true` | Emits a JSON line to stderr per guarded operation (`ALLOW` / `DENY` / `DRY_RUN`). |\n| Interactive confirmation | *(automatic)* | — | Destructive & high-impact actions prompt the human to approve via MCP elicitation before running; clients without elicitation fall back to the `*_ALLOW_*` gate. |\n\nThese layers are independent — for example `admin` mode with `KEYCLOAK_ALLOW_DELETE=false` can create and update users but cannot delete them.\n\n## Tools\n\n**Read** (`read-only`+): `list_realms`, `get_realm`, `list_users`, `get_user`, `count_users`, `list_clients`, `list_realm_roles`, `list_groups`\n\n**Write** (`read-write`+): `create_user`, `update_user`, `reset_password`, `logout_user`\n\n**Admin** (`admin`): `delete_user`\n\n## Quickstart — add to your agent\n\nPublished on npm as [`@dockndevai/mcp-keycloak`](https://www.npmjs.com/package/@dockndevai/mcp-keycloak). No clone or build needed — your MCP client runs it on demand with `npx`. **Start in `read-only` mode**; see [`.env.example`](.env.example) for every variable and [docs/CLIENTS.md](docs/CLIENTS.md) for the full per-client guide.\n\n**Claude Code** (CLI)\n\n```bash\nclaude mcp add keycloak -e KEYCLOAK_URL=\"https://keycloak.example.com\" -e KEYCLOAK_CLIENT_ID=\"admin-cli\" -e KEYCLOAK_CLIENT_SECRET=\"your-secret\" -e KEYCLOAK_MODE=\"read-only\" -- npx -y @dockndevai/mcp-keycloak\n```\n\n**Claude Desktop · Cursor · Windsurf** — same block in `claude_desktop_config.json`, `.cursor/mcp.json`, or `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"keycloak\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@dockndevai/mcp-keycloak\"\n      ],\n      \"env\": {\n        \"KEYCLOAK_URL\": \"https://keycloak.example.com\",\n        \"KEYCLOAK_CLIENT_ID\": \"admin-cli\",\n        \"KEYCLOAK_CLIENT_SECRET\": \"your-secret\",\n        \"KEYCLOAK_MODE\": \"read-only\"\n      }\n    }\n  }\n}\n```\n\n**OpenAI Codex CLI** — in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.keycloak]\ncommand = \"npx\"\nargs = [\"-y\", \"@dockndevai/mcp-keycloak\"]\nenv = { KEYCLOAK_URL = \"https://keycloak.example.com\", KEYCLOAK_CLIENT_ID = \"admin-cli\", KEYCLOAK_CLIENT_SECRET = \"your-secret\", KEYCLOAK_MODE = \"read-only\" }\n```\n\n**VS Code (GitHub Copilot, Agent mode)** — in `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"keycloak\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@dockndevai/mcp-keycloak\"\n      ],\n      \"env\": {\n        \"KEYCLOAK_URL\": \"https://keycloak.example.com\",\n        \"KEYCLOAK_CLIENT_ID\": \"admin-cli\",\n        \"KEYCLOAK_CLIENT_SECRET\": \"your-secret\",\n        \"KEYCLOAK_MODE\": \"read-only\"\n      }\n    }\n  }\n}\n```\n\n## Configure\n\nCopy `.env.example` and fill it in, or set the variables directly in your MCP client config. A confidential client with the `realm-management` roles you need is the recommended credential.\n\n## Run from source (development)\n\nPrefer the published package above. To run from a clone:\n\n```bash\nnpm install\nnpm run build\nnode dist/index.js   # with the environment variables set\n```\n\n## Develop\n\n```bash\nnpm run dev        # watch mode\nnpm test           # unit tests for the security policy\nnpm run typecheck\n```\n\n## Publishing\n\nThis server ships a [`server.json`](server.json) for the official MCP registry and an [`mcpName`](package.json) for npm ownership validation. See **[PUBLISHING.md](PUBLISHING.md)** for publishing to npm and listing on the MCP registry, Smithery, Glama, Cursor, and PulseMCP.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}