{"_id":"@chrischall/gemini-mcp","_rev":"45-d1a229310cd84a9a8145120fb09100e2","name":"@chrischall/gemini-mcp","dist-tags":{"latest":"2.3.0"},"versions":{"0.1.0":{"name":"@chrischall/gemini-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.1.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"74b7861039fc36be816ed3752de41c00ad2ab915","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.1.0.tgz","fileCount":17,"integrity":"sha512-otBtuAxoUK1u6nGMilC+8w7y260clIaVH0/RJpPtbd87gm6Ww8ZiT7yJCg7BzDSWdyV9jtd6P3bRI5y2pmNswA==","signatures":[{"sig":"MEQCICWdP2BPGoCCMcDunkNSegSjpLsYK1/HdSmmn3rexN0qAiA/3NMC/z3PsCbSvwC70TZg0cnJ6biEYGfYh7XguCZgyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1165261},"type":"module","gitHead":"38db266dce33dc7ae3c6c2d18f47bc2ea5e75c77","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"chrischall","email":"chris.c.hall@gmail.com"},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.6.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.1.0_1780880965384_0.727743453055139","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@chrischall/gemini-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.2.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"2ee6795c61a1cac91587f5334ed5261d499dc503","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.2.0.tgz","fileCount":17,"integrity":"sha512-1hbvxRziHTDM4Wnnalc6mTVyIb4yjxMGptaSCbo6tQjdc8HF+0MZH+2JbEZ7dNg5eXIHvf++yMKN3S9EYoEQIw==","signatures":[{"sig":"MEQCIGxhlMBXlp8z4WOEz/4BG+MSJFUm0Omiy7oe0QqmefZDAiABxo02sUn8DHEOFnODPqPC4ksra++H+unVB85TSHNFmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1165351},"type":"module","gitHead":"787637ccc0b03d5f3934ba1fafc32f28bc0ed729","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.6.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.2.0_1780881100619_0.40280392146218413","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@chrischall/gemini-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.3.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"36bd4888256add22e719196516d0f5c574f9c697","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.3.0.tgz","fileCount":18,"integrity":"sha512-Mye31HB+mK40WNFh6nVX/0BzFdvmzZy/QlY3AFB89xzVHaDE1H8zDPhXMPigeXf8j9RitJ/tUNU8UNig9TtyUQ==","signatures":[{"sig":"MEYCIQD805LT5MsEWeQdYcQgVs4Z0MoI1Aknc/cQ2ex5jExoPwIhAJhqrI42zbH9vhdkSt7kBPxkUoqIe+bbjnKeQHFo61Nh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1202473},"type":"module","gitHead":"1484d2e66d13c123aea17752340a5b2bd814b1d9","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.6.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.3.0_1780924219506_0.6783403639297672","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@chrischall/gemini-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.4.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"27f3ebbc57ca80a21940e320c92c3e65d6014f61","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.4.0.tgz","fileCount":19,"integrity":"sha512-CArYqBn9/XB30+JA7wCXofLK0t3XgNrB0w0ICcUY8LQRTXLh6+Bbqu7gMSQF+3FxTKVSgnkVgWtig8LV1Pc6Kg==","signatures":[{"sig":"MEUCIQD0IstJRYMC1dSg2vLm8fGXxUmKV40KBzB4I1f7x2E2ggIgb+SHtrMhBBN8lDy17BO6wjWra1Frlzg6W1vGS8FFo1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1314904},"type":"module","gitHead":"8ef110cfbfbb8173d0d1b074c126f95adac17e34","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.6.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.4.0_1780929783552_0.007268055354550995","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@chrischall/gemini-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.5.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"3c61efca0208346179e26415334f5d6175f003c3","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.5.0.tgz","fileCount":19,"integrity":"sha512-40hvHsY7eYpx/26nh55FdKWsLxvtM8oJnXHgd6lyaubdatG2zuqtojj0Z5I4G0cKQl7wDe3F5OEx9Jtrqydhrg==","signatures":[{"sig":"MEUCIEJ//oi3lNd6FZNnAk6CNKOwYYb6nbnrjtjObzLV665IAiEAuIc1Cp+mB/beRU5iADOzwghWVWca5j0MENfKAl+xVo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1322595},"type":"module","gitHead":"9b9cf9a0bb09c53a1d35d5c290451bcf086bdafb","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.5.0_1781057387884_0.26512026254359355","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@chrischall/gemini-mcp","version":"0.6.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.6.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"02cda52ad285677005068b11b13ef876693527cf","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.6.0.tgz","fileCount":20,"integrity":"sha512-2O6b77CdxBwTLqIyKSHtgQ64BFHSsnk/Bq+1/vK3O+AwFK+vROztSwIYKHlVqvEMkzm8Q3s8sOQNDVc7S6K7qQ==","signatures":[{"sig":"MEUCIQCGHxVrFZmDIjGqkHJgjivqKm00lwOuM5ke7ynLfL065QIgearB+COxQk+g52ZUkcXsOP6RjB0VYV3+fvisTB0LzEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1340748},"type":"module","gitHead":"84be89e7785d6f60ba15d69c2fcb2a4d58a31b9b","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.7.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^25.5.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.6.0_1781312054877_0.0753179230898553","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@chrischall/gemini-mcp","version":"0.6.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.6.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"4275cea8c7eaf110c023492ce8284288f32bbea7","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.6.1.tgz","fileCount":20,"integrity":"sha512-FCZOqFS+eGB8D9Nm3vOH/hxZDMIrMv3g0BUn56QDaWMi+l96aFmT9Mpb+qdL2RkOBynL4JoVRaKuU4x5Ht7NSA==","signatures":[{"sig":"MEUCIBFXkPxv/qCjq6HyS/eIzRlhE6AqD4QaTNjglZ2QYa/CAiEAiTICvZlfYteAmuYjr0PLGGRM6CctTO5RM5ESMeoW9L4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1341585},"type":"module","gitHead":"9b85815ddfc1a81103bc8a7e59d9e46a0f9b76c4","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.6.1_1783292435980_0.9356842832801822","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@chrischall/gemini-mcp","version":"0.7.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.7.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"6873d06d116026aa728cbb4a2aee6d58720d6d2f","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.7.0.tgz","fileCount":20,"integrity":"sha512-0g9WxTwgqqUvKZeK1cJhRL6u9GQgUZfV49d+V59McPxVwVSyuiL3aTZKfadtcbjjXFdrF6U5B/BU2G6YFP/vCw==","signatures":[{"sig":"MEUCIQDDOYTvyoFcP3we4ZYNCHed3vntOalJmmuv1kNKkOnYzgIgW21rLcZxcLuFkp9Sci9X7DYrO1BR4Zy7VeEutgQ2Qro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1355008},"type":"module","gitHead":"4e56b833e036e453217e44bf2cfedebd89c180b5","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.7.0_1783321714765_0.24089850863410978","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@chrischall/gemini-mcp","version":"0.7.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.7.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"714068ca7acd866a9dff911ec11e51d8b2ddc061","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.7.1.tgz","fileCount":20,"integrity":"sha512-Caa0QXpHfYMsUGGPPe4ewYl0oo53Tgy3J0zMiu17aFiITuj/TtZCYUadExGbjaOU6yBBVQVR+ddjE7d/bGRK3Q==","signatures":[{"sig":"MEUCIQCkaevpI0/IwU7fjclCTfKM2g42F7pNyBooj7bLNUsvZQIgK7+QfEbKgsw+PU/4qT/SsnnVw2Nw9iZYFE4tn9hXPjs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1358167},"type":"module","gitHead":"aa66948a3a8af4fad08a7ac013686a96f96180e7","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.7.1_1783341183975_0.6866622194588974","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@chrischall/gemini-mcp","version":"0.7.2","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.7.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"3ad2d269f82e1a9773d2ee0c185eabbef8841851","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.7.2.tgz","fileCount":20,"integrity":"sha512-hSxd9EAyWA+VpcILI+6pbCh8+gwtZJecj7KroronUWNzJFuzhGBdLzUnJ2fMpobw3P6p0yg4iyoxlIUc9rDQjQ==","signatures":[{"sig":"MEYCIQDbdAawXE6u/6uE5RlQAAFDNfz0HFlWZ124edgOXMg9qwIhAMLaHcoEJBFrIhJ3wnZKcsm/8JWTU9uJ5JmzOgdoXWsh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1361619},"type":"module","gitHead":"c0a50b3932582026bd4c03737b7acdec878ff943","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.7.2_1783347271674_0.30121527638953904","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@chrischall/gemini-mcp","version":"0.8.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.8.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"726e31bd3eb71580a032cc17337e7e5a25208cf7","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.8.0.tgz","fileCount":21,"integrity":"sha512-56ESTEFKL63DhLnVL0wwfrwiafv5y2gKoWQD5QqhHCH+Er1SsfqELpkkIQerAYbjR+lwsd6g91sF7lQNMeJN1w==","signatures":[{"sig":"MEYCIQC/0gbjxgtZFCKBDjSKllDNVFLN88nkNSG06g4p++i3NQIhAL6ncjn8/DmRF0a8eJwgBnTezZev8B69vI/Tbt8hQWkp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1384495},"type":"module","gitHead":"277dc8477c555032f5becde108bd824f6360ac87","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.12.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.8.0_1783436938963_0.6265069890575792","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@chrischall/gemini-mcp","version":"0.9.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@0.9.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"6cc0d4907cf4d76b38d0424a1825c99ef1f1c8de","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-0.9.0.tgz","fileCount":23,"integrity":"sha512-NLwUl04wZQ5UUydGSbRnxokzxDfGfpKOri25vi0PRj9LZSxIcyI9llNcApqUUgTp2Ab1jFNceD1t4uLnZjeZ/w==","signatures":[{"sig":"MEQCICvlVAYr5eNmkLUotoWnsPDkc6U7OtKSMXCV6mhJOGqpAiAmKBUNWYtEc+txyVgqaSZw+dELRtYPI1/UOigIRz/yZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1412582},"type":"module","gitHead":"78a76ba36b190438ad290bf86e396f320494507a","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.12.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_0.9.0_1783518550037_0.24652930200571022","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@chrischall/gemini-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.0.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"0410d43e2c47b0ad7f3d5ea9ac86357a9986da22","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.0.0.tgz","fileCount":25,"integrity":"sha512-rVeTQD7ISDBHzUoMwLyFMY0YmiGm+nyQMA9nDiDdZuqNOlo5Mqby0eJDDJZ4oGsFnK2yqVsdvdj53DIKA980IA==","signatures":[{"sig":"MEQCIGs4oGC/D1kZgrdltkv0H6aPWWLHsuoHqG3tChBTObBdAiB1xUzW+tLeQqrnGBFjr4kmBL9xvKvpd07PF1CK+PbMeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1448265},"type":"module","gitHead":"d6a1a6b5bea062bfe2f710ad7e5984e90d14e64c","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.12.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^6.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.0.0_1783523656250_0.7824795361875683","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chrischall/gemini-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.0.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"ded976ebec8e5cfa03677502b29cc761b49b93b0","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.0.1.tgz","fileCount":25,"integrity":"sha512-ZrZ3PidhAmKdfuoiCQY48duJt51SwwNt49eVrqqkRKhZJpxRY7PtzWjg1mOkM6alk9h29c9+0OxjPIfKhzjirA==","signatures":[{"sig":"MEUCIQCZWztgD49suCKRgWiNc/3PxoCJOWkicRaj6hBfANvzIgIgFnn7zpBzkKHbyPZ3u9FhCDfPmJv8cRBUuMVUkkPvi48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1448281},"type":"module","gitHead":"fd7a7b18b9a13ff8143d39681ab4830282c32c84","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.0.1_1784025642200_0.050661570973326686","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chrischall/gemini-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.0.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"fab9ab97c5a826d422125bbd36c527c2209ef1e5","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.0.2.tgz","fileCount":25,"integrity":"sha512-YO0fNWBZols/NE17FqGCNPYyZ2Nhnl9okK5hI75RbH3CMPGiRMhfhG6btdS596DbkB2LE2XZvStODAxLLwM7oQ==","signatures":[{"sig":"MEQCIHc1cHD+IX7vAwW8fBr733a2F8Y/J74FlbWwXI/HK6m3AiB4sjLsGRI3ebVsyKTSYgivbsy2bvwN3VQzDK+qufA5pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1448281},"type":"module","gitHead":"38644d96ad9c2544dcff2e459831ef6a2191050b","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.0.2_1784465180248_0.47650377874124206","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@chrischall/gemini-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.0.3","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"f1ba43fb7337605016e8ccdb127bedbb4e4b51da","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.0.3.tgz","fileCount":29,"integrity":"sha512-GI6hU3qpuKZDPxjTmQxW7uMBHwotNtuN93Fb5y4/etcWghobzOeHfWS33gzP6epbBgLnXon2QfxMO3ZrOz0GYg==","signatures":[{"sig":"MEUCIQC8rVztVqP9rlSK6aDcU46Y6Fq/RgZ2yI/+8jCA3/EwTgIgHG6QASRn2qKoiSpTHxEyKHWpHT1d14v9tACjYNLrpjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1498137},"type":"module","gitHead":"2411f4fa3d1251ee64a1ffbf17da35f4af952713","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.17.4","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.0.0","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.0.3_1784479761067_0.44200542394608","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@chrischall/gemini-mcp","version":"1.0.4","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.0.4","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"b65214ba2b8528c4f809caa41ecb780bb73722f2","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.0.4.tgz","fileCount":29,"integrity":"sha512-YqdPwS9LSN/iqnCLZFRDwjS6zXMHgRE7zUW/QiJrT8ew7MP4aQ2T5ucKCIWLAL05bIBclH2i44LlKNUlndYefw==","signatures":[{"sig":"MEUCIQCkiBJ8olGTmQSLYXkG1E6rbeomE+86SGtfydalyHRfOwIgS0cx/ufNXLzoVckAzlraxDc0+fyTH2jsSdxt5wFtqoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1498457},"type":"module","gitHead":"b246cf8335a3706a58e8e8d7594a2f559b20d34e","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.0.4_1785121005615_0.11317883614836588","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@chrischall/gemini-mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.1.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"8b06e1bcf39189e0e0cbe5661d766336c0925011","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.1.0.tgz","fileCount":33,"integrity":"sha512-h5xiOpvUwDp22nUG1g84yqdySJ67ymX2EFMQCMQ3I/bxddt7/o3d8CUQQUh87vRi4Be3agSDzFKMYI+RpswP9g==","signatures":[{"sig":"MEYCIQCspSRUhWxegFRbh5ebpcwqW73r6d/ZtsGcAfMGDgHYTAIhAJVBmN7nuu2+VMAT2ni5kS1pm7AUiJrkMCL9OM7rPR/E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1594650},"type":"module","gitHead":"227fd081f5c7d5cda00caf39b01bb26acad1e4b8","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.1.0_1785296253613_0.3999365590169959","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@chrischall/gemini-mcp","version":"1.2.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.2.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"f5e1675b3bf1c84251f8e000bc06fa9baf2c6ff2","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.2.0.tgz","fileCount":34,"integrity":"sha512-LRW3/YuhYgbGOMvDNMKk4Ln7IwE2rDEBic2RNNIQgLgheAYgqUFeQXa0zCjpODRbnwHPlDkj1BzUdhBFE7IvlQ==","signatures":[{"sig":"MEQCIGoksSq7YFOr8EECewJRVJzMQ3NRx5k2WgFlNNNnnrGzAiBd06DAich8C8LIRfCkE8kgd7n5lDvobrI76XwMhdgxcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1596617},"type":"module","gitHead":"cfa4dcf6e398608c44c2723499377e9f4ac03f1f","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.2.0_1785322387607_0.0599268014991956","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@chrischall/gemini-mcp","version":"1.3.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.3.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"c22df0a82dc2b6569c8ce31e103ff45e43f827db","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.3.0.tgz","fileCount":38,"integrity":"sha512-RQhwBHIeyXfzsDU6svFxXdxLchhP7oAgw+mG/IpJGn5RU0YXTM1ANkmjqFAT/MgGCVv6kH3ttX4LQYC6AfvA8A==","signatures":[{"sig":"MEUCIGXd2jJKiLD5Ahr9X7zooe0FqrnYgHXBO46v2g4lpgmgAiEAvEaXhlGJ1x7/8JXQmTaPG9N6gKQYPbhFMaHwhASib90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1619559},"type":"module","gitHead":"bf521baa60e302d218f2daf98f17e717a1d9f6b4","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.3.0_1785332098870_0.709817995722225","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@chrischall/gemini-mcp","version":"1.4.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.4.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"c5b5e5a309d88edd2895d2581fb71faf6cd23659","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.4.0.tgz","fileCount":38,"integrity":"sha512-uo7fqdvvS5OTOeMZisM7X9/zfFJpEwjQVc+c70QiaWdpTGuG/CeEPfdtQq79QP8P4i8FqXsA2JN3YLzU6N44Zw==","signatures":[{"sig":"MEQCIEXuvOzEQwlsJiVyFymj8tV50fQCKLbMqkSV878Z1IltAiBQeo+04hS2qqDF8tZ7SV/Mj+dCdqWiGc1Od1f9LIEWag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1646524},"type":"module","gitHead":"8bb869bb6c050d2c7766b33c17d3992583f6b123","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.4.0_1785422776419_0.06417563860104814","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@chrischall/gemini-mcp","version":"1.5.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.5.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"7b720836d8cdde12b26318b60644b362243cc886","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.5.0.tgz","fileCount":44,"integrity":"sha512-2lQKS89ftH5Hv81gj2sTVoVOHoEWxzgWfVL2L6OFJvJ5S+qvjQQjMIsoyL5aRagPGoFfVRO2p10Q+ebgyvtiCQ==","signatures":[{"sig":"MEYCIQCXVWaUxrKuRABzAyE+FgPcb/X8JwlBPuUYM5zm3p0JTQIhAOAZPRMVfqpxFAbhPvzQv38szJTPGuZALKAAm91kOG4N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1725644},"type":"module","gitHead":"fcfeed764a655db56443bde72464038b71ade9be","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.5.0_1785587711834_0.5039183954481934","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@chrischall/gemini-mcp","version":"1.5.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.5.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"aaee414f88ebbd50cd1f7575d025cdfba2d17edf","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.5.1.tgz","fileCount":44,"integrity":"sha512-n5sDQqF9BFzED69pL7oL6OBQ06BWXVd/WsIBBW3mXqIXJyCbFilO4O0xRpCkdc3SXcEVxRw1bPTAA9ACyYPWrg==","signatures":[{"sig":"MEUCIQC6GGtAnd6ff2eFJbBLCFTndwgMc3UOlPniV1Ay7f9DkgIgI8YMKvom86oOXlTl+v9wG26DRfovK0IORUXtM2aFviI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1726860},"type":"module","gitHead":"04e358083710244b4cb417972843c7f7d20d63a5","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run && npm run worker:test","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","worker:dev":"wrangler dev","worker:test":"npm run worker:typecheck && vitest run -c vitest.workers.config.ts","test:coverage":"vitest run --coverage","worker:deploy":"wrangler deploy","worker:typecheck":"tsc -p tsconfig.worker.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.5.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"agents":"^0.19.0","vitest":"^4.1.2","esbuild":"^0.28.0","wrangler":"^4.112.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2","@chrischall/mcp-connector":"^1.1.1","@cloudflare/workers-types":"^5.20260719.1","@cloudflare/vitest-pool-workers":"^0.18.6","@cloudflare/workers-oauth-provider":"^0.8.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.5.1_1785589625254_0.8373457828174498","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@chrischall/gemini-mcp","version":"1.6.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.6.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"93af812123284c77238bb56659afd732ecd1effb","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.6.0.tgz","fileCount":41,"integrity":"sha512-dseux+azofpRquZ8A+DHpCDovucURqFw2PtlLiTAM/KELSHAW82HCXLF7jOUvwXDC7Qhjuh3bYddmELDg48uqg==","signatures":[{"sig":"MEQCIBlARaTvyfgDhQmlUpLkFhP37PHcLKM5KkoNEwoO2f+KAiAU/hP99csqsXG9L0A8HEU/MI5aOSBMkdSPX7BcMi1i+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1746196},"type":"module","gitHead":"64ce9e1eca8b8e814d81eb54c1b209b1321ab7f8","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.6.0_1786114122943_0.9775576837970377","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@chrischall/gemini-mcp","version":"1.6.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.6.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"54c1ec046b1d67136466ccfa8bb5709ef33b80ec","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.6.1.tgz","fileCount":41,"integrity":"sha512-GIcBPT1ZRqEgbI5AR2vR43b4NQTiMEoHXk/rrfd9ZSfwsEFCBhvCkBKxmiYVWLCCAypEbTs7S2MWuPITjy2myw==","signatures":[{"sig":"MEQCIFhteDhq6Rs4cfG5VpFqmMuIil46UMQkUj4KDUWfOsXTAiAgii0lcBXDjdMr2ugAD9KZfZ3Ha9Wpb/f89LW1i59XNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1746977},"type":"module","gitHead":"80d90645adff27cbba0fb6addeb6fa02c74bc0b2","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.6.1_1786157236355_0.7019013498718598","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@chrischall/gemini-mcp","version":"1.6.2","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.6.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"d17930e8f8bdaa910d0a2cc4ae60cd522a9fc268","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.6.2.tgz","fileCount":44,"integrity":"sha512-5PBa4q3GR0CUNyrjULawOOamMB6iYoSfFGDgCMCOkPm1iHEgA4jFhqOc9st6AN9VGte6EbaYftTZ47s6lGcnPw==","signatures":[{"sig":"MEUCIF238Dk7WWxNBLrer7mtF1NdrThKmhaMH2/4yeywbaZZAiEAtTlLAd5q0xhDTtLmC51wDABuFdNOEpQAbNsSwvj/HF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1760825},"type":"module","gitHead":"c1d339e8a1c474434c7b03c8f42be80f5f630dd1","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.6.2_1787019257059_0.25266302169361476","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@chrischall/gemini-mcp","version":"1.7.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.7.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"9caeccc3ba66a292a3cab6d8b11eb3a585f5603f","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.7.0.tgz","fileCount":45,"integrity":"sha512-PziWQioXXTyfvlxU3eyP2QZsWdbh63gQJLq3VQohbg4QiX/dB8vR/AtL3oBH0BDP1PG3wVghwmzwUpZchkxK4w==","signatures":[{"sig":"MEYCIQCX0boovsN7m+4sMJ2BajPhC/kc2eDoc53ZSQb0AW9u8gIhAJ5V3j9AWyNcRm0eJznlhuYVkEeZvStzcHALgB29tzMy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1806806},"type":"module","gitHead":"64ba0010088b3028b2e88693524b29edc3c5365e","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.7.0_1787108053100_0.8397981827837422","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@chrischall/gemini-mcp","version":"1.8.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.8.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"aea9acd92b103714c3eb693332c8f1183b8ed992","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.8.0.tgz","fileCount":45,"integrity":"sha512-U2B/rROrfM41E2+I+h7kH8BEol2bJcnJdzyixi7e3MxDgVgEbbekH6N5c/lqm71DN5fIBSHG0A6w4RP0OWvd5Q==","signatures":[{"sig":"MEUCID1zqU3hhgm3Y5IGOT2iOxuuIuzoVclTj6jPuujFALQHAiEA/7+zIpCR66h6iAUi3CqzF2KqPLiIl5W4XXE86q8cFr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1856655},"type":"module","gitHead":"4663f4a12eccc60d20044a8c391b6bf70e404ba0","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.8.0_1787401457007_0.7573939143757191","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@chrischall/gemini-mcp","version":"1.9.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.9.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"68556c642571625fe9123f8913ac0eaa8e04cd73","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.9.0.tgz","fileCount":45,"integrity":"sha512-RB9eEMuvm4G0qiuLIG9HmX/Q8y3p3X0uuXKS4hd64mz4OZqAE9e6orh/4FAOGwTUPbjZQCH20ZYJMDDt3Jn+Tg==","signatures":[{"sig":"MEYCIQDDJCpVTAkZbB5yDTYJ5uqec8N2oyLLwG/rsX05VTYUngIhAMm5nPdmJj7BbUf2FgbVeciIklrx4EAX7rjlS+ezabkJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1864921},"type":"module","gitHead":"09e71730822193535056bb7192b0625b834e7ec4","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.15.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.9.0_1787537295894_0.25315870754055725","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@chrischall/gemini-mcp","version":"1.10.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.10.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"6a15484608e74ee9cc832445c5039a6d8e10b508","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.10.0.tgz","fileCount":46,"integrity":"sha512-QqbNw3zCLQDeluHQJX1ADAdpHy9ofmNmZ0r0AXJX/NOhK2vTlXsPrSULmsuqzEly6BaM9LqbmmCHrPHVMlsUQw==","signatures":[{"sig":"MEUCIQDqZMh+Dryy3uz0OrjUkcJeq9wleCvaclFUICb6VHJiPQIgNhG6up3SdgtV260qPCsucosIvCEg2VQXxsUIGGlS0Z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1868358},"type":"module","gitHead":"42ce9ed1555875db075273042561e6b88d0a1e07","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.15.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.10.0_1787704125584_0.5940014819835655","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@chrischall/gemini-mcp","version":"1.11.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.11.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"d91841df2b09c56fb5fcb14c7cf2bb7e410f1d2c","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.11.0.tgz","fileCount":49,"integrity":"sha512-8f2MoqrQ8DF5W3PcDOf7OCBcZfivJBqoRWYQJ/uPl6CCJem3gkSnaWReT9H7/6lA0oEQfIac42srGMh047yJ9w==","signatures":[{"sig":"MEQCIEZeV/jW3i7Xf4FnhBJ5wfilIAg5crMInBIt2/7/u8NEAiBOtI4TGxi4Bh3hUdOnYdhWSGkwF/ruQIlcuYneRNhqgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1910228},"type":"module","gitHead":"e85a963c83940c232d35f8781990dba2dc289578","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.15.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.11.0_1787916854752_0.8727593989001308","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"@chrischall/gemini-mcp","version":"1.11.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.11.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"7142ef2321ef063ac048ad69a53c5260e4824797","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.11.1.tgz","fileCount":49,"integrity":"sha512-zPWumb3oQH/wQeWBRo7MG6YQBOHgndLursLQUpB5zZ/brbL8bSD0DvnwHWqYsZO3+vH36sRX5hHUIMUBKNItiA==","signatures":[{"sig":"MEQCIGfuggncVQQAgyr73mPnilp2ekQemIKs7H6uz0SqYtrCAiB/WAbMrcv5egnB6tDq8hZ+/1D86JD5um57NcmvjwoM5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1910611},"type":"module","gitHead":"490050daa7c98ea9f3afe5cd5bf31ce9d87b4803","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.15.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.11.1_1787951228008_0.10270638114757635","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@chrischall/gemini-mcp","version":"1.12.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.12.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"edab81ed9899590a140813f5fd44635b2dbb2ff2","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.12.0.tgz","fileCount":50,"integrity":"sha512-ZOIG3K1dnSMSlveGm7CGKwT5YJlpAU5+OoShCm3q4lsAQd1wD4Tl6ufiJXMoMU/0asn8pJSG9m2Lh8CbgWKFFQ==","signatures":[{"sig":"MEQCID3IJiV3uRn3UtNdTtaZi/WkPJyNLB1EMtibUQ0hh6h3AiAku4Iw108e4g2jwL0tJ7uzcGHuKIBF4C5dhgRcZ1OyGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1919652},"type":"module","gitHead":"1a18ca89ce270d40d17dcd108bd7e8ebced08a45","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.19.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.12.0_1788135721495_0.967927845879196","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@chrischall/gemini-mcp","version":"1.13.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.13.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"5bba24caf20d9fc489f9f706a8e001da8faf7919","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.13.0.tgz","fileCount":50,"integrity":"sha512-jDc6Vt+VqbzWldCGU0rWuKR0ic/zAYwZNLrkNaHi8I+4KQ0usUJ6/OqG5t3Od/2OxARjDc2zbcCFQfOYgDjGOQ==","signatures":[{"sig":"MEQCICyVazMz9QXfuJmA3G4gisBlMdzmoACrkkCo+W45WKV3AiA0xl89lyr+ERTkmb6HYbislD6BdmrsuzApGtZcAqhWkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDWOwG5f/no0f3I5I9bcXMN/ew94kU2Ha+/FdNmkG1woAIhAOyRxPMKagl2QbANhjbWok4veScT5OOpjgPvR44XFobo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1935716},"type":"module","gitHead":"3db0fa820d059143c08397ea617df8a0e4a21a5c","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.23.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.2","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.13.0_1788560497810_0.7937943963119836","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@chrischall/gemini-mcp","version":"1.14.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.14.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"bb22b8f77e2c251bbe1c5194a443e252b52594b6","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.14.0.tgz","fileCount":50,"integrity":"sha512-VFWtYZ5jPXIj8IqBrrvCx9MUGWu/eMBglN4woF1ILbPnIyO9BjhRXZhuUtvW3W1qPkFJItT0bP4vuDF2z243Mw==","signatures":[{"sig":"MEQCIFD55e561f1wRIyPwx9M8/7AVsserUEpJP+O3Eo4zn2tAiBoB4AIBjVAmlxvSKsNZHIyyWdh5+F82ip3JtgxCf+wgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEsDbVtxHvMs2lwt0r4SwRlj0IuyzTRG85zTF9Ws8WApAiEA7JkBVBIxenB12M9tVZemUi62T5+fALs8ucRVNdI3t7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2161741},"type":"module","gitHead":"5dcce219dd5f41cd0c0dc07d93c0db68a8d4131a","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.23.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.14.0_1788981643886_0.839654410351637","host":"s3://npm-registry-packages-npm-production"}},"1.14.1":{"name":"@chrischall/gemini-mcp","version":"1.14.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.14.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"7498750fdceecff54e195de2216c4adbe57a7c93","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.14.1.tgz","fileCount":50,"integrity":"sha512-0VrV1HRd21zU+K5LmGGUELzjC7BGm1l4ut1PY0/i7SGf+uE4IO8Osq0jXyw2VR6H7j2QjUm/C5s4SuIl/N8efg==","signatures":[{"sig":"MEUCIQCFsQud/KTTZGdIr51sK0E4cXHn+GM+bAVWjPJTO2RoAAIgGmd25z2Pu53/eoPEmgpYZ8qK5ZvF7nXTAGsDYOaRU+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDYKR3cdZ0BtKhdEoLMzS7d8Vjj31ECxnzkixBQ8zb37QIgTOFNbBkwEkKj9yh9Of68ZUnKGIzKpU2k8DOxizu4otM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2162438},"type":"module","gitHead":"ad3c7c407e9807c58d9bff6f718647795ca09d03","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.2","dependencies":{"zod":"^4.5.4","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.26.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.14.1_1789062799786_0.26127202676243555","host":"s3://npm-registry-packages-npm-production"}},"1.14.2":{"name":"@chrischall/gemini-mcp","version":"1.14.2","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@1.14.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"69e0756072d75bb44f5d717f697e8d24542d9fde","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-1.14.2.tgz","fileCount":50,"integrity":"sha512-LK0lqpjg6cRTKFos87yetsmheF9+Uh2gp/6nVcvvJ830pTPixtLoLPtOWaV3jd2Ag1fu1MxQkZwf0Anxck9w1g==","signatures":[{"sig":"MEUCIEsSsV4VfoClNE9QnDGlbc2QZGrH3yCqt+CkiGI7Sjn9AiEAslhoIjJmHUCPwBEcsyuC1V8vTjlzquJZXMp8uKHakyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICM1GL9Fp2m6oLh4Jhybn/mjoeEBOFHuJVebq+qJgKbMAiEAu0IYnxItEn55zmt8me8bo2eYogOFXC0EOj2oCe/reQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@1.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2195006},"type":"module","gitHead":"a877e8e2d31e4d27045566dcf6d2291e9616ea5e","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.8.2","dependencies":{"zod":"^4.5.4","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.26.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_1.14.2_1789395335747_0.9319661886235517","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@chrischall/gemini-mcp","version":"2.0.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.0.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"b0228c464aa5a50dcb8248010a89dc1305e32721","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.0.0.tgz","fileCount":50,"integrity":"sha512-yGIh7+SEkT2RdxCPIwCjXgHmK7pJ6/BfFjPGVDd4IK5EfAFR5/XnnDNHA86GYNHrAFP2DkXti4bFemxof29CLw==","signatures":[{"sig":"MEYCIQDrvDUMg6Dzdcs3FwMFXhJjV3hBOEVwaKEUQ6HD0khgOAIhAJmQea1593ki/9nxUUwB78QNTlkeDSx+KgNeUGUtuxUv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCVj8bjtkMzpmtzfrcwhDLJiVP0h4XzNdbbiv85OCSuaQIhAMuGcHs6Rm21ba0VkAmJZpH8mgWZRLb9MPI7ndcrtq40","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3181028},"type":"module","gitHead":"edd88bfe91d68d9b947801957351be39fdb3816a","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^0.28.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.0.0_1789816739376_0.6947790634615538","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@chrischall/gemini-mcp","version":"2.1.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.1.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"537a73a342a462f09d995eb5c219547b8c0cae90","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.1.0.tgz","fileCount":50,"integrity":"sha512-3KmkoEmV6Te6m2k9D/F4u8RgKkQ0apZS+sjavRyQi4lNmEDDHIicN1SWg+TB/rbBR+B2XsMsgILmm8F0faFJew==","signatures":[{"sig":"MEQCIANzaFfc/aXAN2RPa6Aa7PNHHn0XcegPAMSf1EIBXk5PAiB25FODyK2FtOAhGg/goB8HUkw87G7JafK+YU5dbeLyMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDR7VQvBuD/41oLgedYGhf76CqpJlU4B2ausIbsT6sBJAIgG/7xd/mjI8YNRc40fKYIWNwpfssuzHqKjA4BLHE3ZlU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3208035},"type":"module","gitHead":"a39d3cd1a241697197bb12f8addca41d0730fbfa","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.1.0_1789872680287_0.40045786746086254","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@chrischall/gemini-mcp","version":"2.1.1","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.1.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"8c6eebab09e491ee6f47d1a9b8454f3082969c8c","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.1.1.tgz","fileCount":50,"integrity":"sha512-5e6/74JtcOyShlrVh6huPv8LnsmeGhJ43bkhURfJTMpo3/As2JbOxFqRG40injBfz9Q/gQtetMBS6Gxs/PucWA==","signatures":[{"sig":"MEQCIHqvAYyaebx8byL9Rl1ANC58VVTJk0tuMgW5gg1m/aAfAiB6sYH0VdIBfOBMi6mmS2uT9C5eFvPnPpEnIAFOtw0ekw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEAsMkcdGnE1pIBB12jBD/691nV5neDw2aqQgBVp1GBmAiAGgSb/f+1+lN9m+iegPtn8tVHYzU7vG4KsWZJohow/lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3208035},"type":"module","gitHead":"e88694a8b2b36230a20a60213f64281221b84f23","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.1.1_1789964011539_0.6207621913542185","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@chrischall/gemini-mcp","version":"2.1.2","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.1.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"47e80d5f8dc7aa32b93100ffe1183c97b48063ee","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.1.2.tgz","fileCount":50,"integrity":"sha512-YvOMQCd2bJO2SsEN17YE5Qe/2oZ+/juiq5bNoT/8zhLaMRxJT9b7pbGkcj5jM8c99y4+dDmGUTOTrDnee96WWg==","signatures":[{"sig":"MEUCIQDiSRndZu12rE4LuxyCyPJs0Y+9AG7maIJfC2Clk1ub5gIgYjfZSrM29PVw06jurMD/VEZsFJlGzwziH82Y3sbApew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCilqoF320h8DlLVuRGy49uCV3S99BoJg4RjaaoIDuJXwIhAIrWB2+h+Y833W7/SCsblYs6pathoMXEOzNoCQH37TnK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3208035},"type":"module","gitHead":"2709091f7549f7f225a604d500637d46cf95dcfd","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.0","@chrischall/mcp-utils":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.1.2_1789966955239_0.7313640974259394","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@chrischall/gemini-mcp","version":"2.1.3","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.1.3","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"79a44f64ed291281a3c46bed91147cd2bd00fa62","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.1.3.tgz","fileCount":50,"integrity":"sha512-8bj/DianOJ0BVv3IDFksxS2iK+RmBDEoApp4QKtxQL/VR38bQglBGJuwv8TR+jgB+pF7RUd9HS0eOKU3Z+DdIA==","signatures":[{"sig":"MEQCIAXeeXCgVKv2Uy6Qz2ynCWd3HUY9IuaGFuBYeQo2c8R7AiAulOmuHrTGbaLkE10vtUcglaX9CqgmOz+SgTVkf3fXzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGFZlybAvNQxLntMcKZLLbF8CNPFeS7RzxhvUsA8b6tbAiEAyhcROr3bXoln6348HBkrnaMehLlKiAWCbsIeumViIrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3218648},"type":"module","gitHead":"48c16dc8b7f58782cf2419cb7b43e298dab28d2f","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.0","@chrischall/mcp-utils":"^2.4.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.1.3_1790178449568_0.5667820030566302","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@chrischall/gemini-mcp","version":"2.1.4","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.1.4","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"978ac866ee0f01eb8d52bb8fad6f5c4cb4b16199","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.1.4.tgz","fileCount":51,"integrity":"sha512-5Ks5pM14t0DQDD4b9kLRoujei5OscjUoGwM5azgK1kEK/Wt8Rxqg3qBFMjY9puTyGm7uNlT5A/AVOmuP49IcUA==","signatures":[{"sig":"MEUCIAC7l8OVrc40Zxz0Fd6Kyqj4OSzEw8DjmsulsVrY4YWyAiEAhQ/Mz9veFY98GdXuz7epi6IJ4xxcx0mEy5ffz0EJMYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG85PodoHobPYzD4ZjO5ukAOx4SvbfBBggJTyQfU4/JlAiB8NQf6LPo07kMDUNJ1EmbJVDcrKOOy8o9CGDwk47KR7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3229739},"type":"module","gitHead":"5065d102d552c0d99d417f0fdaa10eb9f26141a5","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.0","@chrischall/mcp-utils":"^2.4.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.1.4_1790199545546_0.9570958389290083","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@chrischall/gemini-mcp","version":"2.2.0","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"@chrischall/gemini-mcp@2.2.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/gemini-mcp#readme","bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"bin":{"gemini-mcp":"dist/index.js"},"dist":{"shasum":"99952e6f1054704ce8eac60beafdef161858d0a9","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.2.0.tgz","fileCount":51,"integrity":"sha512-bdeIdEaomHdxqUgHb9NJ0Mgue0zfw1BcmS+Vrgl8clVfJBKPrQ4uof8L4Louk7Lbk50RdG5SgXKMhhm6w6a8HQ==","signatures":[{"sig":"MEUCICIa86/ZhGvXSzuBScw+N+vJ//wBWCtGTlHTY9F1QhyaAiEAx6CvRp6YtxhAI0zNKZOeNIuumvINyHxITmGLDyqgrRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH8OiD5ueGfGnoBwsC6p04+xjkOh1vAJ+QKj7BzWDVOxAiB8KloXuaPbcju7Chfm4Nfh9WOcpmDiJfscvMlpC/yKeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3260042},"type":"module","gitHead":"e220559c69af67d1dacfa5673518859c742430e8","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.0","@chrischall/mcp-utils":"^2.6.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gemini-mcp_2.2.0_1790262736036_0.04354933917315029","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"_id":"@chrischall/gemini-mcp@2.3.0","bin":{"gemini-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"dist":{"shasum":"05a99999a870789cad1e202716a2adeaa0764d0c","tarball":"https://registry.npmjs.org/@chrischall/gemini-mcp/-/gemini-mcp-2.3.0.tgz","fileCount":51,"integrity":"sha512-JcrIh5IU1T2qW4ITqJ+0O4+kdQvo1BTkgCDM29H1qXm+jy7mU/z/ggL2zkGsq13KJgAjFDMX3CI7SjP/LJwDEQ==","signatures":[{"sig":"MEQCIFDbYdfWqAGZXKsnQ9CP8mAsU4Po8Z4M3AqwAQxbTPg3AiAj9mc1ugQk7w7yv0PhIzbhP+MC5Rcs8tncr6DjqpivvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC8GAw9tmJZzmiV+IV2+OPHN4s7J8d6ETUtv7Tc6o8RjgIgQk2bPD3HKvFWwyYB1vX84UMy+m9eZCJKK03yO9xYksc="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chrischall%2fgemini-mcp@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3265020},"name":"@chrischall/gemini-mcp","type":"module","author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"gitHead":"f1e5ce4de770a98288aa25f487f40f0454cad192","license":"MIT","mcpName":"io.github.chrischall/gemini-mcp","scripts":{"dev":"node dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.test.json","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"version":"2.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06467939-9a4f-44bc-b2c5-8de0d61100a1"}},"homepage":"https://github.com/chrischall/gemini-mcp#readme","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","directories":{},"maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^18.0.2","@chrischall/mcp-utils":"^2.6.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gemini-mcp_2.3.0_1790351419804_0.3925716314943324"}}},"time":{"created":"2026-06-08T01:09:25.258Z","modified":"2026-09-25T15:50:20.237Z","0.1.0":"2026-06-08T01:09:25.576Z","0.2.0":"2026-06-08T01:11:40.812Z","0.3.0":"2026-06-08T13:10:19.727Z","0.4.0":"2026-06-08T14:43:03.749Z","0.5.0":"2026-06-10T02:09:48.072Z","0.6.0":"2026-06-13T00:54:15.047Z","0.6.1":"2026-07-05T23:00:36.192Z","0.7.0":"2026-07-06T07:08:34.911Z","0.7.1":"2026-07-06T12:33:04.156Z","0.7.2":"2026-07-06T14:14:31.849Z","0.8.0":"2026-07-07T15:08:59.161Z","0.9.0":"2026-07-08T13:49:10.198Z","1.0.0":"2026-07-08T15:14:16.405Z","1.0.1":"2026-07-14T10:40:42.342Z","1.0.2":"2026-07-19T12:46:20.512Z","1.0.3":"2026-07-19T16:49:21.230Z","1.0.4":"2026-07-27T02:56:45.764Z","1.1.0":"2026-07-29T03:37:33.776Z","1.2.0":"2026-07-29T10:53:07.759Z","1.3.0":"2026-07-29T13:34:59.045Z","1.4.0":"2026-07-30T14:46:16.615Z","1.5.0":"2026-08-01T12:35:11.976Z","1.5.1":"2026-08-01T13:07:05.409Z","1.6.0":"2026-08-07T14:48:43.134Z","1.6.1":"2026-08-08T02:47:16.484Z","1.6.2":"2026-08-18T02:14:17.210Z","1.7.0":"2026-08-19T02:54:13.233Z","1.8.0":"2026-08-22T12:24:17.184Z","1.9.0":"2026-08-24T02:08:16.043Z","1.10.0":"2026-08-26T00:28:45.789Z","1.11.0":"2026-08-28T11:34:14.891Z","1.11.1":"2026-08-28T21:07:08.162Z","1.12.0":"2026-08-31T00:22:01.696Z","1.13.0":"2026-09-04T22:21:37.908Z","1.14.0":"2026-09-09T19:20:43.994Z","1.14.1":"2026-09-10T17:53:19.896Z","1.14.2":"2026-09-14T14:15:35.866Z","2.0.0":"2026-09-19T11:18:59.469Z","2.1.0":"2026-09-20T02:51:20.370Z","2.1.1":"2026-09-21T04:13:31.653Z","2.1.2":"2026-09-21T05:02:35.346Z","2.1.3":"2026-09-23T15:47:29.688Z","2.1.4":"2026-09-23T21:39:05.655Z","2.2.0":"2026-09-24T15:12:16.200Z","2.3.0":"2026-09-25T15:50:19.915Z"},"bugs":{"url":"https://github.com/chrischall/gemini-mcp/issues"},"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","homepage":"https://github.com/chrischall/gemini-mcp#readme","keywords":["mcp","model-context-protocol","claude","ai","gemini","nano-banana","image-generation","image-editing","text-to-image","google-gemini"],"repository":{"url":"git+https://github.com/chrischall/gemini-mcp.git","type":"git"},"description":"Gemini image-generation MCP server for Claude — developed and maintained by AI (Claude Code)","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"readme":"# gemini-mcp\n\n[![CI](https://github.com/chrischall/gemini-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischall/gemini-mcp/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@chrischall/gemini-mcp)](https://www.npmjs.com/package/@chrischall/gemini-mcp)\n[![license](https://img.shields.io/npm/l/@chrischall/gemini-mcp)](LICENSE)\n\nMCP server for Google Gemini media generation. Exposes thirteen tools to Claude over stdio: list available models, generate/edit/compose images, generate a consistent set of images from a master prompt, multi-turn image refinement (Interactions API), **video** generation (omni), **music** generation (Lyria), an async result poll for long generations, and Files API upload/list/delete for reusable image references. Output is written to disk by default (path returned) or returned inline as base64. Built on the Gemini v1beta API (`generativelanguage.googleapis.com`) using the Nano Banana / Nano Banana Pro (images), omni (video), and Lyria (music) model families.\n\nDeveloped and maintained by AI (Claude Code).\n\n## Environment Variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `GEMINI_API_KEY` | Yes | Your Google Gemini API key ([aistudio.google.com/apikey](https://aistudio.google.com/apikey)) |\n| `GEMINI_IMAGE_MODEL` | No | Override the default image model (default: `gemini-3.1-flash-image`) |\n| `GEMINI_OUTPUT_DIR` | No | Default directory for generated images (default: current working directory) |\n| `GEMINI_INPUT_DIR` | No | Directory to resolve bare input-image filenames against (so `images: [\"foo.jpg\"]` works) |\n| `GEMINI_UPLOAD_DIR` | No | Restrict local files streamed to the Gemini Files API (`gemini_upload_file` `path`, `video_path`) to these directories — one or more, separated by `:` (`;` on Windows); `~` allowed. A path outside is refused before any upload. Unset: no restriction |\n| `GEMINI_TIMEOUT_MS` | No | Upstream request timeout in ms (default: `60000`, or `120000` for `image_size: \"4K\"`); each generation tool also takes a per-call `timeout_ms` |\n| `GEMINI_HEARTBEAT_MS` | No | Progress-notification cadence in ms while a generation runs (default: `10000`; `0` disables) — keeps MCP hosts that reset their timeout on progress from timing out long generations |\n| `GEMINI_CHAIN_RETRY_MS` | No | How long to wait out interactions-store lag when a chained call 404s (default: `120000`; `0` disables retrying) |\n\n### Confirmations\n\nSending a **local file** to Google (the `images` / `master_images` / `video_path` inputs, or\n`gemini_upload_file`'s `path`) and every **delete** ask for confirmation first. A client that can\nshow a confirmation prompt (Claude Code) gets the real prompt. Elsewhere the first call does\nnothing and returns a preview (the resolved local paths with their MIME types and sizes, or the\nmethod/path being deleted) plus a `confirmToken`; only a repeat call with the same arguments and\nthat token proceeds. The token is single-use, expires, and is bound to the exact arguments — a\nchanged prompt or a swapped file between the two calls is refused. Pure text prompts, URLs,\n`files/` references and base64 inputs are not gated.\n\n| variable | default | |\n|---|---|---|\n| `MCP_CONFIRM_MODE` | `ask-user` | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). `ask-user`: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. `auto`: the same two steps, but the model may use the token after reviewing the preview itself. `refuse`: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt. An unrecognised value is treated as `refuse`. |\n| `MCP_CONFIRM_TTL_SECONDS` | `600` | How long a token stays valid. |\n| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. |\n\n### Long generations and client timeouts\n\n4K / Pro-model generations can outrun an MCP host's own `tools/call` timeout (error `-32001`).\nThe server sends `notifications/progress` heartbeats so hosts that reset their timeout on\nprogress wait it out. If the host still gives up, the server-side generation usually completes\nanyway: the image is written to the output dir, `gemini_interact` also writes an\n`<image>.json` sidecar recording the `interaction_id`, and `continue_last: true` resumes the\ninteraction the lost response belonged to.\n\n### When a chained call 404s\n\nA 404 on a request carrying `previous_interaction_id` is **not** proof the chain expired. The\nonly 404 body observed live is generic — `\"Requested entity was not found.\"` — and never names\n*which* entity. An unknown or renamed **model id**, and an expired Files API **`files/…` uri**\n(~48h TTL), return exactly the same thing. So the server no longer asserts a cause it can't\nestablish: the upstream text is surfaced verbatim, and `gemini_interact` runs an experiment to\nfind out which it was.\n\nMost often the id isn't missing at all — it just isn't *visible* yet. The interactions store is\neventually consistent, and a freshly created id can 404 while the same id resolves fine minutes\nlater; heavy turns (4K, Pro, `thinking_level: high`) are the likeliest to hit it, which is\nexactly the turn you most want to chain from. So a chained 404 is retried with exponential\nbackoff for up to **120s** (`GEMINI_CHAIN_RETRY_MS`) before anything is declared broken. The\n404 generates nothing and isn't billed, so the wait costs only time.\n\nAfter that budget is spent, the tool looks up that id's sidecar, re-attaches the image it\nproduced, and re-issues the request **without** the chain:\n\n- **The re-issue succeeds** → the chain really was the problem, and you get your image anyway,\n  reported as `chain_recovered: { expired_interaction_id, reanchored_on }`. The 404'd attempt\n  generates nothing, so this costs the one generation you'd have paid for re-anchoring manually.\n- **The re-issue 404s too** → the interaction id was never the cause. You get told exactly that,\n  with the upstream text, and pointed at the model id and any `files/…` uri instead of being\n  sent to chase an interaction that was fine all along.\n- **No sidecar matches the dead id** → the original error, rather than a guess. Re-anchoring on\n  the wrong picture would silently corrupt the edit.\n\nSeparately, `continue_last` no longer dies with the server process: with no in-memory id it\nresumes from the newest `<image>.json` sidecar in the output dir and reports\n`continued_from_sidecar: true`. That case was never an expired chain at all — the interaction\nwas alive upstream the whole time; only our memory of its id was gone.\n\nFor hosts whose timeout can't be tamed (e.g. Claude Desktop, a fixed ~30s cap that ignores\nprogress), two guards make re-issuing safe and unnecessary:\n\n- **`async: true`** returns a `job_id` immediately instead of the image, so the call can't\n  time out at all; poll `gemini_get_result` with the `job_id` until it's `done`.\n- **`idempotency_key`** makes a repeat call idempotent — a retry with the same key returns the\n  recorded result (`reused: true`) instead of billing a second generation. (Even without a key,\n  two identical in-flight calls are deduplicated automatically.)\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `gemini_list_models` | List available Gemini image models and the current default |\n| `gemini_image_generate` | Generate image(s) from a text prompt |\n| `gemini_image_edit` | One-off edits or multi-image composition with a text instruction (for a series of edits, use `gemini_interact`) |\n| `gemini_image_set` | Generate a master image plus N consistent images referencing it |\n| `gemini_interact` | Preferred tool for iterative refinement: multi-turn generation/editing via the Interactions API — chain the returned `interaction_id` via `previous_interaction_id` (or `continue_last: true`) |\n| `gemini_video_generate` | Generate a short video (text→video, image→video, two-still interpolation, `edit` or `extend`) via the Gemini omni model; `resolution` 360p/720p/1080p/4k is the cost lever; written to disk as MP4 |\n| `gemini_music_generate` | Generate music from a text prompt via a Lyria model — `lyria-3-clip-preview` (30s, default), `lyria-3.5` (full-length, vocals) or `lyria-3-pro-preview`; single-turn; written to disk as MP3 |\n| `gemini_get_result` | Fetch an async generation started with `async: true` by its `job_id` (status `running` → `done` result). Lets a long generation outlive a host's `tools/call` timeout |\n| `gemini_token_usage` | Token usage and an estimated USD cost for this session so far. Call it before and after a workflow and subtract to attribute that workflow's spend. Priced per call against each call's own model from a dated rate card (`GEMINI_RATE_CARD` overrides it); there is no account-balance endpoint to read, so this is how spend is attributed |\n| `gemini_upload_file` | Upload an image (or video/audio) to the Gemini Files API once — from a `url`, `data_base64`, or a local `path` — and get a reusable `files/<id>` reference |\n| `gemini_list_files` | List the files currently uploaded under this API key, with MIME types and expiry times |\n| `gemini_delete_file` | Delete an uploaded file before its ~48h expiry (confirmed first — see [Confirmations](#confirmations)) |\n| `gemini_sign_media` | *(hosted deployments only)* Mint a fresh signed URL for generated media from its `r2_key` — an expired link is not a dead end |\n| `gemini_view_media` | *(hosted deployments only)* Return a generated image as an inline image block from its `r2_key`, so a model can actually see what it made before refining it |\n| `gemini_get_upload_url` | *(hosted deployments only)* Mint a short-lived signed PUT URL so a shell can upload a reference image with no auth header; the PUT returns an `r2_key` usable in `images_r2_keys`, `gemini_save_character`, or `gemini_upload_file` |\n| `gemini_save_character` / `gemini_list_characters` / `gemini_delete_character` | *(hosted deployments only)* Persistent per-account character library: save a reference image + description under a name, then pass `characters: [\"name\"]` on generation tools. No expiry |\n| `gemini_save_style` / `gemini_list_styles` / `gemini_delete_style` | *(hosted deployments only)* Persistent per-account style presets: a reusable prompt fragment (optionally with a reference image), applied by passing `style: \"name\"` on generation tools. No expiry |\n\nGeneration tools also share three throughput/latency controls: `async: true` (return a `job_id`\nimmediately), `max_wait_ms` (wait up to a budget, then hand back the `job_id` — fast results stay\nin-band, slow batches never trip the host timeout), and `idempotency_key` (a retry returns the\nrecorded result instead of re-billing). On a hosted deployment, a `gemini_image_set` result with\nmore than one image also carries a **`bundle_url`** — one signed URL for a zip of every image in\nthe set — and set links are signed for ~7 days instead of the default ~48h. (A set too large to\nzip safely in memory skips the bundle and says so via `bundle_skipped`; the per-image\nlinks are unaffected.)\n\n## Seeing your images (hosted)\n\nOn a hosted deployment there is no filesystem, so a generated image has to come back as\nsomething you can *open*. It does: **every result includes a URL**, with no configuration.\n\n```jsonc\n{\n  \"images\": [\"https://mcp.nullnet.app/b/<account>/gemini/gen/2026-07-29/ab12cd34-a-cat.png?exp=…&sig=…\"],\n  \"media\":  [{ \"url\": \"https://…\", \"r2_key\": \"gen/2026-07-29/ab12cd34-a-cat.png\",\n               \"expires_at\": \"2026-07-31T12:00:00.000Z\",\n               \"curl_hint\": \"curl -sS -o a-cat.png \\\"https://…\\\"\" }]\n}\n```\n\nThose links need no auth header — the signature is in the URL — so they work in a browser, in\n`curl`, and in a chat message. They expire (48h by default) and the objects behind them are\nswept on a retention schedule. The `r2_key` is the durable handle for that window:\n\n- **`gemini_sign_media`** (hosted deployments only) mints a fresh signed URL from an `r2_key`,\n  so an expired link never forces you to re-generate — and re-pay for — the image.\n- **The interaction id is stored beside each image**, so a hosted deployment recovers a lost\n  turn the way the local one does: `continue_last: true` survives a restart, a chained 404 is\n  re-anchored on the image that interaction produced, and `gemini_list_recent_media` shows the\n  prompt, model and interaction id for every stored object rather than a wall of keys.\n- **`gemini_view_media`** (hosted deployments only) returns the image itself, inline, from an\n  `r2_key`. A link is not something a model can look at, so without this a generate → refine\n  loop runs blind. It is a separate call rather than bytes on every result: you pay image\n  tokens only on the turns you actually look.\n- **`gemini_upload_file` with `r2_key`** turns media this server generated into a Files API\n  reference (the server reads it back with its own key — no signature for you to mint), so\n  a generated image can become the reference image for the next generation in one cheap call.\n- Idempotent replays (`idempotency_key`) re-mint the URLs inside the recorded result before\n  returning it, so a reused result never carries a dead link.\n\n**Why this matters:** MCP's inline image content blocks (`inline: true`) are visible to the\n*assistant* but many chat clients never render them to the user, and the assistant cannot\nextract bytes back out of its own context to save them elsewhere. A generation could bill\nsuccessfully and be invisible. A URL is the portable answer; `inline` remains available, but\nit is no longer the only way to receive media.\n\n### How the bytes are served\n\nThe host stores each generated object and serves it back at a signed, expiring\nURL — `https://<host>/b/<account>/gemini/<key>?exp=&sig=`. No setup, and no auth\nheader: the signature in the link is the authorization, so `curl` and a browser\nboth work.\n\n**Auth is a signed, expiring URL rather than an unlisted key.** Random keys would\nbe simpler, but they never expire and never revoke: anything that ever logged or forwarded the\nlink keeps working forever. A signature scopes access to one object with a deadline, and\nrotating `MEDIA_URL_SECRET` invalidates every outstanding link at once. The tradeoff is that\nlinks are long and cannot be shortened by hand.\n\n### For assistants relaying a result\n\nShow the user the URL. If your sandbox has network egress to the host, fetching it\nand attaching the bytes as a file gives the nicest result; otherwise present the link itself.\nWhether a given client renders `![](url)` markdown inline varies by client — a bare URL is the\nsafe form, and a markdown link is a reasonable enhancement where you know it renders.\n\n### Retention\n\n| Variable | Default | Effect |\n|---|---|---|\n| `MEDIA_TTL_DAYS` | `7` | Objects older than this are deleted by a daily cron — generated media (`gen/`, legacy `media/`) and signed uploads (`up/`). The character/style library (`lib/`) is exempt: saved entries never expire |\n| `MEDIA_URL_SECRET` | generated | HMAC key for `/media` links; rotate to revoke all outstanding URLs |\n\nSigned-URL lifetime is clamped to `MEDIA_TTL_DAYS`, so a link never outlives the object it\npoints at.\n\n**Prompts are stored too.** Each generated object on a hosted deployment gets a small JSON\nrecord beside it holding the prompt (first 500 characters), model and interaction id — that is\nwhat `gemini_list_recent_media` shows and what lets a lost turn be recovered. The record lives\nand is swept with its object, so it is kept for the same `MEDIA_TTL_DAYS` window, not longer.\nLocally, `gemini_interact` writes an `<image>.json` sidecar (model, interaction id, options and\nany text the model replied with — not the prompt itself) next to each image in the output dir;\nthose files are yours to keep or delete and never expire on their own. If your\nprompts describe real people, bear in mind they sit in your bucket for the retention window.\n\n## Sending reference images without burning context\n\nEvery tool that takes a reference image — `gemini_image_generate`, `gemini_image_edit`,\n`gemini_image_set`, `gemini_interact`, plus `gemini_video_generate` (reference stills) and\n`gemini_music_generate` — accepts them four ways. Only one of them costs model context:\n\n| Parameter | Where the bytes travel | Context cost |\n|---|---|---|\n| `images_url` (`master_images_url`) | the **server** downloads the https URL | none |\n| `images_file_uris` (`master_images_file_uris`) | a `files/<id>` reference, already uploaded | none |\n| `images_r2_keys` (`master_images_r2_keys`) | the server reads its **own store** (hosted deployments only) | none |\n| `images` | read off local disk (stdio builds only) | none |\n| `characters` / `style` | saved library entries, attached by name (hosted deployments only) | none |\n| `images_base64` | **through the tool-call JSON** | **~14k tokens per JPEG** |\n\n`images_base64` is the fallback of last resort. It costs roughly 14k tokens per modest photo,\nand it is silently corrupted whenever the file read that produced it was truncated — the\npayload still looks like base64, so the failure surfaces as a bad generation rather than an\nerror. Prefer any of the other three.\n\n### `images_url` — the server fetches it\n\n```jsonc\n{ \"prompt\": \"make it look like winter\", \"images_url\": [\"https://example.com/photo.jpg\"] }\n```\n\nFetches are restricted to public `https://` URLs — private, loopback and link-local hosts are\nrefused (IPv6 literals are parsed, so `[::ffff:7f00:1]` is caught as loopback), every redirect\nhop is revalidated, and each hop is bounded by a timeout. The response must be\n`Content-Type: image/*` and is capped at **15MB**, enforced while streaming rather than trusted\nfrom `Content-Length`. A failure names the offending URL. Anything over 6MB is uploaded to the\nFiles API and referenced by uri instead of inlined, since `generateContent` caps a whole\nrequest near 20MB.\n\n### `images_file_uris` — upload once, reference many times\n\n```jsonc\n// 1. upload\n{ \"tool\": \"gemini_upload_file\", \"url\": \"https://example.com/photo.jpg\" }\n// → { \"file_uri\": \"files/abc123\", \"mime_type\": \"image/jpeg\", \"expires\": \"...\" }\n\n// 2. reference it, as many times as you like\n{ \"prompt\": \"make it winter\",  \"images_file_uris\": [\"files/abc123\"] }\n{ \"prompt\": \"make it sunrise\", \"images_file_uris\": [\"files/abc123\"] }\n```\n\nUploads are retained **~48h**; after that the reference stops resolving (as a generic 404 —\nsee the chained-404 section above). `gemini_image_set` fetches or resolves such a reference\n**once** and passes it to the master and every scene call.\n\nOn stdio builds, a local `images` path that gets referenced **more than once in a session** is\nuploaded to the Files API automatically (keyed on path + mtime + size), so repeated edits of\nthe same photo stop re-sending the bytes. Editing the file invalidates the cached upload.\n\n### Signed upload URLs — no token at all (hosted)\n\nThis is the intended path for an agent with a shell: disk file → curl → `r2_key` → tool call,\nwith the image never entering the conversation. `gemini_get_upload_url` mints a short-lived\n(~10 min) signed **PUT** URL, and the shell uploads with zero auth headers — the signature in\nthe URL is the authorization, mirroring how the download links work.\n\n```bash\n# 1. tool call: gemini_get_upload_url { filename: \"photo.jpg\", content_type: \"image/jpeg\" }\n#    → { upload_url, r2_key, expires_at, curl_hint }\n\n# 2. shell:\ncurl -sS -X PUT -H \"Content-Type: image/jpeg\" --data-binary @photo.jpg \"$UPLOAD_URL\"\n# → { \"r2_key\": \"up/<tenant>/2026-07-31/ab12cd34-photo.jpg\", \"size_bytes\": 812345, ... }\n```\n\nThe signature covers one tenant-scoped object key, the declared content type and the expiry;\nuploads are capped at 15MB, enforced while reading the stream. Only **raster** image types are\naccepted (jpeg/png/webp/gif/avif/heic/heif/bmp/tiff) — SVG is deliberately refused, because an\nSVG is a scriptable document and `/media` serves from the server's own origin. The returned\n`r2_key` is then usable three ways: directly as `images_r2_keys` on any generation tool (the\nserver reads its own bucket — no bytes in the conversation), permanently via\n`gemini_save_character`, or as a ~48h Files API reference via `gemini_upload_file({ r2_key })`.\nUploads themselves follow the media retention schedule (`up/` prefix, default 7 days).\n\n### Character & style library (hosted)\n\nRecurring subjects and styles can be saved once, per account, with **no expiry** (the retention\ncron deliberately skips the library's `lib/` prefix):\n\n```jsonc\n// once:\n{ \"tool\": \"gemini_save_character\", \"name\": \"finn\",\n  \"description\": \"6-year-old boy, curly red hair\", \"image_r2_key\": \"up/…/photo.jpg\" }\n{ \"tool\": \"gemini_save_style\", \"name\": \"bold-cartoon-sports\",\n  \"prompt_fragment\": \"bold cartoon style, thick outlines, saturated colors\" }\n\n// afterwards, on any generation:\n{ \"tool\": \"gemini_image_set\",\n  \"master_prompt\": \"Finn on a soccer field\",\n  \"scenes\": [\"kicking the ball\", \"celebrating a goal\"],\n  \"characters\": [\"finn\"], \"style\": \"bold-cartoon-sports\" }\n```\n\nNaming a character attaches its saved reference image and weaves its description into the\nprompt; naming a style appends its fragment (and attaches its reference image, if it has one).\n`gemini_image_set` passes character references to the master *and every scene call*, which is\nwhat keeps the subject consistent across the set.\n\n## Quick Start\n\n```json\n{\n  \"mcpServers\": {\n    \"gemini\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/gemini-mcp\"],\n      \"env\": {\n        \"GEMINI_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\nSee [SKILL.md](./skills/gemini-mcp/SKILL.md) for full usage documentation.\n","readmeFilename":"README.md"}