{"_id":"@mindstone/mcp-server-nano-banana","_rev":"3-f10e54fad14de92e69e8ad95c4159bb4","name":"@mindstone/mcp-server-nano-banana","dist-tags":{"latest":"0.4.1"},"versions":{"0.3.2":{"name":"@mindstone/mcp-server-nano-banana","version":"0.3.2","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-nano-banana@0.3.2","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/nano-banana","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-nano-banana":"dist/index.js"},"dist":{"shasum":"9c74917c5446866c29ea99b2d2efe410233bd35f","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-nano-banana/-/mcp-server-nano-banana-0.3.2.tgz","fileCount":27,"integrity":"sha512-/C/FaWuk5i7N+RTQh/w19ETOhazXMekZsiFy+lx8z0gHtBnPsGJLFRG3qrszVvGkmTQqnsUBVQ4mft+9WBldAA==","signatures":[{"sig":"MEUCIQDEHU5mny8wideSEM414iux6hR4vBBE/8p+EZntrOEQOAIgBwstCGhLyFJxOLKzbtCpEab+xG73IDX82lP3Q+8oe+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60859},"type":"module","engines":{"node":">=20.3.0"},"gitHead":"83878671b322434710c729d19cd790301bc68369","mcpName":"io.github.mindstone/mcp-server-nano-banana","scripts":{"test":"vitest run","build":"tsc && shx chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"mindstone-engineering","email":"engineering@mindstone.com"},"overrides":{"hono":"^4.12.18","fast-uri":"^3.1.2","ip-address":"^10.2.0"},"repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/nano-banana"},"_npmVersion":"11.11.1","description":"Nano Banana MCP server — Google Gemini image generation and editing via Model Context Protocol","directories":{},"_nodeVersion":"25.8.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-nano-banana_0.3.2_1779136832067_0.06194092997768563","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@mindstone/mcp-server-nano-banana","version":"0.4.0","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-nano-banana@0.4.0","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/nano-banana","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-nano-banana":"dist/index.js"},"dist":{"shasum":"8e9b46d33d4c1a61cc8aaade60ec8cec38f61a1c","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-nano-banana/-/mcp-server-nano-banana-0.4.0.tgz","fileCount":31,"integrity":"sha512-mJbLr9Eww+0v6rN8koOXE+z0Wv6XlWpWymo5hDV00TqVRzpyNq5NQcPibivq5fHxpb5m0PEVtqx6MNhYpKMt4A==","signatures":[{"sig":"MEYCIQDjM9Dz3tTQfj3y1NVEsDdH30BgOKJIagdafEOV5+IKfgIhALmMZ/1SVkzNawqPkxL/gfDWN6wNcPzc8YBIL4tEyz7Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mindstone%2fmcp-server-nano-banana@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122665},"type":"module","_from":"file:mindstone-mcp-server-nano-banana-0.4.0.tgz","engines":{"node":">=20.3.0"},"mcpName":"io.github.mindstone/mcp-server-nano-banana","scripts":{"test":"vitest run","build":"tsc && shx chmod +x dist/index.js","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e8fd85d-40c7-49d2-bea4-e8cc63a49cd1"}},"_resolved":"/home/runner/work/mcp-servers/mcp-servers/mindstone-mcp-server-nano-banana-0.4.0.tgz","overrides":{"hono":"^4.12.18","fast-uri":"^3.1.2","ip-address":"^10.2.0"},"_integrity":"sha512-mJbLr9Eww+0v6rN8koOXE+z0Wv6XlWpWymo5hDV00TqVRzpyNq5NQcPibivq5fHxpb5m0PEVtqx6MNhYpKMt4A==","repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/nano-banana"},"_npmVersion":"11.16.0","description":"Nano Banana MCP server — Google Gemini image generation and editing via Model Context Protocol","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-nano-banana_0.4.0_1786119848215_0.6578715459806415","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@mindstone/mcp-server-nano-banana","version":"0.4.1","mcpName":"io.github.mindstone/mcp-server-nano-banana","description":"Nano Banana MCP server — Google Gemini image generation and editing via Model Context Protocol","license":"FSL-1.1-MIT","type":"module","bin":{"mcp-server-nano-banana":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/mindstone/mcp-servers.git","directory":"connectors/nano-banana"},"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/nano-banana","publishConfig":{"access":"public"},"scripts":{"build":"tsc && shx chmod +x dist/index.js","prepare":"npm run build","watch":"tsc --watch","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","zod":"^3.23.0"},"devDependencies":{"@mindstone/mcp-test-harness":"file:../../test-harness","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","msw":"^2.13.2","shx":"^0.3.4","typescript":"^5.8.2","vitest":"^4.1.3"},"engines":{"node":">=20.3.0"},"overrides":{"fast-uri":"^3.1.2","hono":"^4.12.18","ip-address":"^10.2.0"},"_id":"@mindstone/mcp-server-nano-banana@0.4.1","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"_integrity":"sha512-DbdiR1vaiEKs5C/IST6NmjYtVWfMq+Dp2DOTBFiPt9ZI6OnjPk63Nx4Nahqwm2sGn9hnAK5a7E18QYG7bhsbnw==","_resolved":"/home/runner/work/mcp-servers/mcp-servers/mindstone-mcp-server-nano-banana-0.4.1.tgz","_from":"file:mindstone-mcp-server-nano-banana-0.4.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-DbdiR1vaiEKs5C/IST6NmjYtVWfMq+Dp2DOTBFiPt9ZI6OnjPk63Nx4Nahqwm2sGn9hnAK5a7E18QYG7bhsbnw==","shasum":"824175b2c48297604542e95435858f605b70fce8","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-nano-banana/-/mcp-server-nano-banana-0.4.1.tgz","fileCount":31,"unpackedSize":124776,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mindstone%2fmcp-server-nano-banana@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDknJ/eLT1NQF9orASPSURBgRnT3I+4hHtML/zu6XUfxwIhAI2f9WIMOvZHuZMhi75gCumLVn0eFGpiLOi25VkMl24c"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e8fd85d-40c7-49d2-bea4-e8cc63a49cd1"}},"directories":{},"maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server-nano-banana_0.4.1_1786316365345_0.8008510170151986"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T20:40:32.007Z","modified":"2026-08-09T22:59:25.810Z","0.3.2":"2026-05-18T20:40:32.213Z","0.4.0":"2026-08-07T16:24:08.432Z","0.4.1":"2026-08-09T22:59:25.509Z"},"bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"license":"FSL-1.1-MIT","homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/nano-banana","repository":{"type":"git","url":"git+https://github.com/mindstone/mcp-servers.git","directory":"connectors/nano-banana"},"description":"Nano Banana MCP server — Google Gemini image generation and editing via Model Context Protocol","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"readme":"# @mindstone/mcp-server-nano-banana\n\n[![npm version](https://img.shields.io/npm/v/@mindstone/mcp-server-nano-banana.svg)](https://www.npmjs.com/package/@mindstone/mcp-server-nano-banana)\n[![License: FSL-1.1-MIT](https://img.shields.io/badge/License-FSL--1.1--MIT-blue.svg)](./LICENSE)\n\nNano Banana MCP server — Google Gemini image generation and editing via Model Context Protocol. Generate images from text descriptions and edit existing images using Google Gemini's AI capabilities.\n\n## Status\n\n- **Version:** [0.4.1](./CHANGELOG.md) · [npm](https://www.npmjs.com/package/@mindstone/mcp-server-nano-banana)\n- **Auth:** API key ([`GEMINI_API_KEY`](./server.json))\n- **Tools:** [3](./src/tools/) (image-generation, image-editing)\n- **Surface:** cloud-api\n- **Machine-readable:** [`STATUS.json`](./STATUS.json)\n\n## Requirements\n\n- Node.js 20+\n- npm\n\n<!-- BEGIN INSTALL_LINKS: do not edit by hand; regenerated by scripts/gen-install-links.mjs -->\n## One-click install\n\n[![Add to Cursor](https://img.shields.io/badge/Add_to_Cursor-black?style=for-the-badge&logo=cursor&logoColor=white)](cursor://anysphere.cursor-deeplink/mcp/install?name=Nano%20Banana&config=eyJ0eXBlIjoic3RkaW8iLCJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBtaW5kc3RvbmUvbWNwLXNlcnZlci1uYW5vLWJhbmFuYSJdLCJlbnYiOnsiR0VNSU5JX0FQSV9LRVkiOiIiLCJOQU5PX0JBTkFOQV9HRU1JTklfVElNRU9VVF9NUyI6IjE4MDAwMCIsIk5BTk9fQkFOQU5BX0JSSURHRV9USU1FT1VUX01TIjoiMzAwMDAifX0)\n[![Add to VS Code](https://img.shields.io/badge/Add_to_VS_Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22Nano%20Banana%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40mindstone%2Fmcp-server-nano-banana%22%5D%2C%22env%22%3A%7B%22GEMINI_API_KEY%22%3A%22%22%2C%22NANO_BANANA_GEMINI_TIMEOUT_MS%22%3A%22180000%22%2C%22NANO_BANANA_BRIDGE_TIMEOUT_MS%22%3A%2230000%22%7D%7D)\n[![Add to VS Code Insiders](https://img.shields.io/badge/Add_to_VS_Code_Insiders-24bfa5?style=for-the-badge&logo=visual-studio-code&logoColor=white)](vscode-insiders:mcp/install?%7B%22name%22%3A%22Nano%20Banana%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40mindstone%2Fmcp-server-nano-banana%22%5D%2C%22env%22%3A%7B%22GEMINI_API_KEY%22%3A%22%22%2C%22NANO_BANANA_GEMINI_TIMEOUT_MS%22%3A%22180000%22%2C%22NANO_BANANA_BRIDGE_TIMEOUT_MS%22%3A%2230000%22%7D%7D)\n\nAfter clicking the button, your host will prompt you to fill: `GEMINI_API_KEY`, `NANO_BANANA_GEMINI_TIMEOUT_MS`, `NANO_BANANA_BRIDGE_TIMEOUT_MS`.\n\n<details>\n<summary>Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Nano Banana)</summary>\n\n```json\n{\n  \"mcpServers\": {\n    \"Nano Banana\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@mindstone/mcp-server-nano-banana\"\n      ],\n      \"env\": {\n        \"GEMINI_API_KEY\": \"\",\n        \"NANO_BANANA_GEMINI_TIMEOUT_MS\": \"180000\",\n        \"NANO_BANANA_BRIDGE_TIMEOUT_MS\": \"30000\"\n      }\n    }\n  }\n}\n```\n\n</details>\n<!-- END INSTALL_LINKS -->\n\n## Quick Start\n\n### Install & build\n\n```bash\ncd <path-to-repo>/connectors/nano-banana\nnpm install\nnpm run build\n```\n\n### npx (once published)\n\n```bash\nnpx -y @mindstone/mcp-server-nano-banana\n```\n\n### Local\n\n```bash\nnode dist/index.js\n```\n\n## Configuration\n\n### Environment variables\n\n- `GEMINI_API_KEY` — Google Gemini API key\n- `MCP_WORKSPACE_PATH` — optional workspace path for saving generated images\n- `MCP_HOST_BRIDGE_STATE` — optional path to a host bridge state file used for credential management\n- `MINDSTONE_REBEL_BRIDGE_STATE` — backwards-compatible alias for `MCP_HOST_BRIDGE_STATE`\n- `NANO_BANANA_GEMINI_TIMEOUT_MS` — optional override (positive integer ms) for the outbound Gemini request timeout. Default: `180000` (3 min). Increase this if you use `gemini-3-pro-image-preview` and see `TIMEOUT` errors on slow generations; decrease it if you want tighter bounds.\n- `NANO_BANANA_BRIDGE_TIMEOUT_MS` — optional override (positive integer ms) for requests to the host bridge. Default: `30000`.\n\n## Host configuration examples\n\n### Claude Desktop / Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"NanoBanana\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mindstone/mcp-server-nano-banana\"],\n      \"env\": {\n        \"GEMINI_API_KEY\": \"your-gemini-api-key\"\n      }\n    }\n  }\n}\n```\n\n### Local development (no npm publish needed)\n\n```json\n{\n  \"mcpServers\": {\n    \"NanoBanana\": {\n      \"command\": \"node\",\n      \"args\": [\"<path-to-repo>/connectors/nano-banana/dist/index.js\"],\n      \"env\": {\n        \"GEMINI_API_KEY\": \"your-gemini-api-key\"\n      }\n    }\n  }\n}\n```\n\n## Tools (3)\n\n### Configuration\n- `configure_nano_banana_api_key` — Save your Gemini API key for image generation\n\n### Image generation\n- `nano_banana_generate` — Generate images from text descriptions\n- `nano_banana_edit` — Edit existing images using AI; accepts up to 14 reference images (`source_image_paths`) for multi-image composition/fusion. Each source may be a workspace file path or an `https://` URL — every source is capped at 20MB per image (local files included) with a combined-size cap across sources, and remote fetches are SSRF-guarded (HTTPS only, no userinfo, private/loopback/link-local hosts refused with DNS re-validation, redirects re-validated per hop, PNG/JPEG/WebP only)\n\nBoth image tools accept an optional `save_path` inside the workspace. Saves never overwrite: if a file (or symlink) already exists at `save_path`, the tool returns a `SAVE_EXISTS` error (with the image still included inline) — choose a different path or delete the existing file. Saved files are written owner-only (`0600`).\n\n### Output resolution\n\nBoth image tools accept an optional `image_size` parameter (`\"1K\"`, `\"2K\"`, or `\"4K\"`; default `\"1K\"` ≈ 1024px). Higher resolutions are only honoured by the Gemini 3 image models (`gemini-3.1-flash-image-preview`, `gemini-3-pro-image-preview`); the legacy `gemini-2.5-flash-image` always produces ~1K output and rejects an explicit `image_size`.\n\n## Licence\n\n[FSL-1.1-MIT](./LICENSE) — Functional Source License, Version 1.1, with MIT future licence. The software converts to MIT licence on 2030-04-08.\n","readmeFilename":"README.md"}