diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index b8b863993..435f90b23 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -528,6 +528,11 @@ "source": "third_party/square", "description": "Work with payments, orders, catalog, customers, and invoices." }, + { + "name": "nano-banana", + "source": "third_party/nano-banana", + "description": "Generate Nano Banana images and retrieve the finished image." + }, { "name": "tailscale", "source": "third_party/tailscale", diff --git a/README.md b/README.md index b42a64469..7527bcad2 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `workday` | [Workday](third_party/workday/) | Cursor | Integrations | Look up workers, organizations, time off, payroll, and recruiting data in Workday. | | `whatsapp-business` | [WhatsApp Business](third_party/whatsapp-business/) | Cursor | Integrations | Send messages and manage templates, contacts, and phone numbers in WhatsApp Business. | | `square` | [Square](third_party/square/) | Cursor | Integrations | Work with payments, orders, catalog, customers, and invoices. | +| `nano-banana` | [Nano Banana](third_party/nano-banana/) | Ace Data Cloud Dev | Integrations | Generate Nano Banana images and retrieve the finished image. | | `tailscale` | [Tailscale](third_party/tailscale/) | Cursor | Integrations | Let Grok Bot reach MCP servers on your private Tailscale network. Sign in to Tailscale to connect your tailnet; Grok Bot joins it as one tagged device and only reaches the hosts you grant to tag:grokbot. | | `highlevel` | [HighLevel](third_party/highlevel/) | Cursor | Integrations | Work with contacts, conversations, opportunities, calendars, and payments. | | `finary` | [Finary](third_party/finary/) | Cursor | Integrations | Read your net worth, accounts, holdings, spending, and budgets. | diff --git a/third_party/nano-banana/.cursor-plugin/plugin.json b/third_party/nano-banana/.cursor-plugin/plugin.json new file mode 100644 index 000000000..7e511ecdd --- /dev/null +++ b/third_party/nano-banana/.cursor-plugin/plugin.json @@ -0,0 +1,44 @@ +{ + "name": "nano-banana", + "displayName": "Nano Banana", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Generate Nano Banana images and retrieve the finished image.", + "author": { + "name": "Ace Data Cloud Dev", + "email": "dev@acedata.cloud" + }, + "homepage": "https://platform.acedata.cloud/models", + "repository": "https://github.com/AceDataCloud/NanoBananaCursor", + "license": "MIT", + "logo": "assets/logo.jpg", + "keywords": [ + "nano-banana", + "nano banana", + "image", + "acedatacloud", + "mcp" + ], + "category": "integrations", + "tags": [ + "nano-banana", + "image", + "mcp" + ], + "variables": { + "type": "object", + "properties": { + "ACEDATACLOUD_API_TOKEN": { + "type": "string", + "title": "Ace Data Cloud API token", + "description": "Service API key from https://platform.acedata.cloud/console/applications with Nano Banana access." + } + }, + "required": [ + "ACEDATACLOUD_API_TOKEN" + ] + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/nano-banana/CHANGELOG.md b/third_party/nano-banana/CHANGELOG.md new file mode 100644 index 000000000..9a1565769 --- /dev/null +++ b/third_party/nano-banana/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 + +- Initial Nano Banana Cursor plugin using the existing Ace Data Cloud hosted MCP. diff --git a/third_party/nano-banana/LICENSE b/third_party/nano-banana/LICENSE new file mode 100644 index 000000000..64bb5cfce --- /dev/null +++ b/third_party/nano-banana/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Ace Data Cloud + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/nano-banana/README.md b/third_party/nano-banana/README.md new file mode 100644 index 000000000..33ff2217a --- /dev/null +++ b/third_party/nano-banana/README.md @@ -0,0 +1,56 @@ +# Nano Banana for Cursor + +Generate Nano Banana images and retrieve the finished image. This standalone plugin reuses the [Ace Data Cloud nanobanana MCP](https://github.com/AceDataCloud/MCPs/tree/main/nanobanana) and includes a focused Agent skill. Available tools and limits come from the live MCP schema. + +[简体中文教程](readme/README_zh_Hans.md) · [Copyable first-run prompt](examples/first-run.md) · [Current pricing](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_pricing_en) + +## 1. Search and install + +In Cursor 3.24, open **Customize → Browse Marketplace**, search for **Nano Banana**, confirm **Ace Data Cloud Dev** and the service logo, then click **Add**. Older releases may put Plugins under Settings. You can also use `/add-plugin nano-banana` in chat. If the official listing is not live, review this source under `~/.cursor/plugins/local/nano-banana/`; local installation does not prove Marketplace publication. + +## 2. Get a service API key + +1. Sign in at [Ace Data Cloud Applications](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_api_key_en). +2. Open **General application** or a service-specific application. Copy an existing API key, or use **Manage Keys → Create** for a separate Cursor key. +3. Confirm Nano Banana access, [current price](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_pricing_en), and balance. If **Allowed APIs** restrictions are enabled, include /nano-banana/images, /nano-banana/tasks. + +Use a service API key, not a platform management token. Do not put it in chat or source files. + +## 3. Configure the plugin + +Open **Customize → Plugins → Nano Banana → Configure**, paste the key string into **Ace Data Cloud API token**, and click **Save**. Cursor uses it as `ACEDATACLOUD_API_TOKEN`; the plugin adds `Bearer `. Reconnect the MCP server if tools are missing. The hosted endpoint needs no local Python installation. + +```json +{ + "mcpServers": { + "nanobanana": { + "type": "http", + "url": "https://nanobanana.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} +``` + +## 4. Run the first example + +Open Cursor Agent and paste the [first-run prompt](examples/first-run.md). It asks for `nanobanana_generate_image`, model `nano-banana-2-lite` and resolution 1K, aspect_ratio 1:1, count 1. The sample prompt is `A teal ceramic cube on a plain cream background, studio product photograph, no text.`. Verify live model access and price before running. + +Submit with `nanobanana_generate_image` once. Save the returned `task_id` and use `nanobanana_get_task` with that same ID until terminal. Pending is not a completed image; open the returned result URL on success. Never regenerate merely to poll. + +Open the returned image and inspect it. In **Ace Data Cloud → Usage/Billing**, match this call to its deducted Credits record. The plugin is free; API calls follow current service pricing. + +## Troubleshooting + +| Symptom | Action | +| --- | --- | +| Plugin or tools are missing | Check the Nano Banana listing, configure the key, and reconnect MCP. | +| 401 or 403 | Check key validity, service access, balance, and Allowed APIs; do not include `Bearer ` in the configured value. | +| Invalid model or argument | Use the live tool schema and a model this account can access. | +| Pending task | Query the original task ID; do not regenerate to poll. | +| 429, timeout, or 5xx | Inspect the original task and usage history before another paid submission. | +| Result URL will not open | Confirm a terminal success and use the URL returned by that call. | + +[Source](https://github.com/AceDataCloud/NanoBananaCursor) · [Report a problem](https://github.com/AceDataCloud/NanoBananaCursor/issues) · dev@acedata.cloud. The logo reuses an existing Ace Data Cloud integration asset. This tool plugin does not register a Cursor chat-model provider. diff --git a/third_party/nano-banana/assets/logo.jpg b/third_party/nano-banana/assets/logo.jpg new file mode 100644 index 000000000..6ad5a1b65 Binary files /dev/null and b/third_party/nano-banana/assets/logo.jpg differ diff --git a/third_party/nano-banana/examples/first-run.md b/third_party/nano-banana/examples/first-run.md new file mode 100644 index 000000000..508b0f0ce --- /dev/null +++ b/third_party/nano-banana/examples/first-run.md @@ -0,0 +1,5 @@ +# First Nano Banana run + +Copy this into Cursor Agent after installing and configuring the plugin. No key is included. + +> Use the nanobanana MCP tool nanobanana_generate_image for one image request. I checked the current Ace Data Cloud price and balance. Use model nano-banana-2-lite if this account offers it. Set resolution 1K, aspect_ratio 1:1, count 1. Set prompt to A teal ceramic cube on a plain cream background, studio product photograph, no text.. Submit at most once, keep the task ID, query it using nanobanana_get_task until terminal, and open the completed result. If pending, report the ID so I can resume without a second generation. diff --git a/third_party/nano-banana/mcp.json b/third_party/nano-banana/mcp.json new file mode 100644 index 000000000..0afc03361 --- /dev/null +++ b/third_party/nano-banana/mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "nanobanana": { + "type": "http", + "url": "https://nanobanana.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} diff --git a/third_party/nano-banana/readme/README_zh_Hans.md b/third_party/nano-banana/readme/README_zh_Hans.md new file mode 100644 index 000000000..7356f70e0 --- /dev/null +++ b/third_party/nano-banana/readme/README_zh_Hans.md @@ -0,0 +1,42 @@ +# Cursor Nano Banana 插件 + +Generate Nano Banana images and retrieve the finished image. 插件复用 [Ace Data Cloud nanobanana MCP](https://github.com/AceDataCloud/MCPs/tree/main/nanobanana),并提供专用 Agent skill。实际工具参数和限制以在线 MCP schema 为准。 + +[English guide](../README.md) · [可复制的首跑提示词](../examples/first-run.md) · [当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_pricing_zh_hans) + +## 1. 搜索安装 + +在 Cursor 3.24 打开 **Customize → Browse Marketplace**,搜索 **Nano Banana**,确认作者 **Ace Data Cloud Dev** 和服务图标后点击 **Add**。较早版本可能在 Settings 中提供 Plugins 入口。也可在聊天中输入 `/add-plugin nano-banana`。若官方条目尚未出现,可在 `~/.cursor/plugins/local/nano-banana/` 本地审查;本地安装不代表 Marketplace 已上架。 + +## 2. 获取服务 API Key + +1. 登录 [Ace Data Cloud 应用管理](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_api_key_zh_hans)。 +2. 打开 **General application** 或服务专用应用,复制已有 Key;也可通过 **Manage Keys → Create** 新建 Cursor 专用 Key。 +3. 确认 Nano Banana 权限、[当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=nano_banana_cursor_shared_readme_pricing_zh_hans)和余额。若启用了 **Allowed APIs**,允许 /nano-banana/images, /nano-banana/tasks。 + +使用服务 API Key,不要用平台管理 token,也不要放在聊天或仓库文件中。 + +## 3. 配置插件 + +打开 **Customize → Plugins → Nano Banana → Configure**,将 Key 原文填入 **Ace Data Cloud API token** 并点击 **Save**。Cursor 将其用于 `ACEDATACLOUD_API_TOKEN`;插件会自行添加 `Bearer `,连接 `https://nanobanana.mcp.acedata.cloud/mcp`;无需安装本地 Python 服务。工具未出现时重新连接 MCP。 + +## 4. 首次调用 + +在 Cursor Agent 中复制[首跑提示词](../examples/first-run.md)。它使用 `nanobanana_generate_image`,模型 `nano-banana-2-lite`,参数为 resolution 1K, aspect_ratio 1:1, count 1,prompt 为 `A teal ceramic cube on a plain cream background, studio product photograph, no text.`。执行前核对当前模型权限和价格;字段变化时以在线工具 schema 为准。 + +只用 `nanobanana_generate_image` 提交一次,保存返回的 `task_id`,随后用同一 ID 调用 `nanobanana_get_task` 直到终态。pending 不代表已完成;成功后打开结果地址。不要为轮询重新生成。 + +打开返回的image结果并检查。在 **Ace Data Cloud → Usage/Billing** 核对本次调用对应的 Credits 扣费;插件免费,API 按当前服务价格计费。 + +## 排障 + +| 现象 | 处理 | +| --- | --- | +| 找不到插件或工具 | 核对 Nano Banana 条目、配置 Key 并重连 MCP。 | +| 401 或 403 | 检查 Key、服务权限、余额和 Allowed APIs;配置值不要带 `Bearer `。 | +| 模型或参数错误 | 以在线 MCP schema 和账户可用模型为准。 | +| 任务 pending | 沿原 task ID 查询,不要为轮询重新生成。 | +| 429、超时或 5xx | 先检查原任务和用量记录,再决定是否再次付费提交。 | +| 结果无法打开 | 确认终态成功,打开该次调用返回的地址。 | + +[源码](https://github.com/AceDataCloud/NanoBananaCursor) · [问题反馈](https://github.com/AceDataCloud/NanoBananaCursor/issues) · dev@acedata.cloud。图标复用 Ace Data Cloud 现有集成资源。本插件提供工具,不注册 Cursor 聊天模型 Provider。 diff --git a/third_party/nano-banana/skills/nano-banana/SKILL.md b/third_party/nano-banana/skills/nano-banana/SKILL.md new file mode 100644 index 000000000..a76bdb530 --- /dev/null +++ b/third_party/nano-banana/skills/nano-banana/SKILL.md @@ -0,0 +1,14 @@ +--- +name: nano-banana +description: Use Nano Banana through the Ace Data Cloud MCP server in Cursor. Use for Nano Banana image work or an existing task query. +--- + +# Nano Banana in Cursor + +This skill adapts the [existing Ace Data Cloud skill](https://github.com/AceDataCloud/Skills/tree/main/skills/nano-banana-image). The live MCP schema is the source of truth for arguments and models. + +1. Check [current price, balance, and service access](https://platform.acedata.cloud/models) before a paid call. +2. Submit with `nanobanana_generate_image` once. Save the returned `task_id` and use `nanobanana_get_task` with that same ID until terminal. Pending is not a completed image; open the returned result URL on success. Never regenerate merely to poll. +3. Return the result, task ID if present, and any service error. Keep the API token out of chat and files. + +Configure `ACEDATACLOUD_API_TOKEN` in **Customize → Plugins → Nano Banana → Configure**. See the [first-run guide](../../README.md).