nano-banana-mcp

Um servidor do Model Context Protocol para geração e edição de imagens por IA com os modelos de imagem "Nano Banana" do Google Gemini, via a API Interactions. Gere, edite e itere imagens diretamente do Claude Code, Claude Desktop, Cursor ou qualquer cliente compatível com MCP — com edição em múltiplas etapas, fundamentação de pesquisa, storyboards intercalados, conjuntos de ícones com estilo consistente e imagem a partir de vídeo.

Documentação

nano-banana-mcp

CI License: MIT Node.js MCP

Um servidor Model Context Protocol para geração e edição de imagens com IA usando os modelos de imagem Gemini "Nano Banana" do Google, via Interactions API.

Gere, edite e itere em imagens diretamente do Claude Code, Claude Desktop, Cursor ou qualquer cliente compatível com MCP — com edição multitorre, grounding por busca, storyboards intercalados, conjuntos de ícones com estilo consistente e imagem a partir de vídeo.

Photorealistic product shot of a teal ceramic coffee mug Isometric illustration of a developer workstation Kawaii banana sticker wearing sunglasses

Tudo gerado por este servidor — um produto fotorealista, uma ilustração isométrica com texto legível e um adesivo vetorial. Sem edições.

Observação: Este servidor usa a Interactions API do Gemini, que está atualmente em beta. Os modelos de imagem Gemini 3 (gemini-3-pro-image, gemini-3.1-flash-image) podem exigir acesso na sua chave de API. O nível nano (gemini-2.5-flash-image) é o mais amplamente disponível. Consulte Requisitos.

Recursos

  • Texto para imagem — imagens de alta qualidade a partir de um prompt, até 4K, com controle de proporção e resolução
  • Edição multitorre — itere de forma conversacional; cada resultado retorna um interaction_id que você passa de volta para continuar editando
  • Imagens de referência — até 14 entradas para provador virtual, colocação de produto, composição, transferência de estilo, restauração de fotos, substituição de atributos, maquetes 2D→3D
  • Grounding por busca — ancore imagens em dados em tempo real (clima, notícias, placares) com o Google Search e o Google Image Search
  • Histórias intercaladas — um prompt → uma sequência de imagens legendadas (storyboards, quadrinhos, receitas, explicadores ilustrados)
  • Conjuntos de ícones com estilo consistente — geração encadeada mantém uma aparência uniforme em um conjunto de ícones
  • Imagem a partir de vídeo — gere miniaturas/pôsteres a partir de uma URL pública do YouTube
  • Pré-visualizações inline — pré-visualizações reduzidas retornadas ao cliente para que o modelo veja o que gerou e se autocorrija
  • Robusto — novas tentativas automáticas com backoff em limites de taxa e erros transitórios; mensagens de erro claras e acionáveis

Início Rápido

1. Obtenha uma chave de API do Gemini

Crie uma chave em Google AI Studio.

2. Instalação

git clone https://github.com/petrkindlmann/nano-banana-mcp.git
cd nano-banana-mcp
npm install

3. Registre com seu cliente MCP

Claude Code

claude mcp add nano-banana --scope user \
  --env GEMINI_API_KEY=your_key_here \
  -- node /absolute/path/to/nano-banana-mcp/index.js

Claude Desktop / Cursor / Windsurf / VS Code

Adicione à sua configuração MCP (ex.: ~/Library/Application Support/Claude/claude_desktop_config.json no macOS):

{
  "mcpServers": {
    "nano-banana": {
      "command": "node",
      "args": ["/absolute/path/to/nano-banana-mcp/index.js"],
      "env": {
        "GEMINI_API_KEY": "your_key_here"
      }
    }
  }
}

Reinicie seu cliente. As cinco ferramentas abaixo aparecerão.

Configuração

Variável de ambienteObrigatóriaDescrição
GEMINI_API_KEYSua chave da API Gemini.
NANO_BANANA_MODEL_NANOSubstitui o ID do modelo do nível nano.
NANO_BANANA_MODEL_FLASHSubstitui o ID do modelo do nível flash.
NANO_BANANA_MODEL_PROSubstitui o ID do modelo do nível pro.

Os IDs de modelo são modelos beta/pré-visualização que o Google rotaciona e ocasionalmente descontinua. Se uma versão mais recente for lançada — ou um ID configurado for descontinuado — aponte um nível para um novo modelo sem editar o código:

"env": {
  "GEMINI_API_KEY": "your_key_here",
  "NANO_BANANA_MODEL_FLASH": "gemini-3.2-flash-image"
}

Cada nível mantém seu perfil de capacidade (tamanhos, proporções, grounding) independentemente do ID que você atribuir a ele.

Uso

Basta pedir em linguagem natural — seu cliente MCP escolhe a ferramenta e os argumentos corretos.

Você: Gere uma imagem hero 16:9 de uma floresta de pinheiros enevoada ao amanhecer, cinematográfica, salve em hero.jpg

Claude: chama generate_image → salva hero.jpg, retorna um interaction_id e uma pré-visualização

Você: Deixe o nevoeiro mais denso e adicione um veado na clareira

Claude: chama edit_image com o interaction_id anterior → hero-v2.jpg

A edição multitorre é a forma recomendada de iterar: cada resultado carrega um interaction_id, e passá-lo de volta mantém todo o contexto da conversa para que as edições permaneçam consistentes.

Ferramentas

FerramentaDescrição
generate_imageGera uma única imagem a partir de um prompt de texto. Grounding opcional por busca, pensamento e controle de proporção/tamanho.
edit_imageEdita ou itera em uma imagem — encadeie via previous_interaction_id, ou passe imagens de referência do disco.
generate_storyGera texto + imagens intercalados a partir de um prompt (storyboards, quadrinhos, receitas, explicadores).
generate_icon_setGera um conjunto de ícones com estilo consistente via geração encadeada.
generate_from_videoGera uma imagem a partir de uma URL pública de vídeo do YouTube (apenas modelo flash).

Modelos

NívelID do modeloTamanhosGrounding por buscaPensamentoEntrada de vídeoSaída JPEG
nanogemini-2.5-flash-image1K— (apenas PNG)
flashgemini-3.1-flash-image0.5K, 1K, 2K, 4Kweb + imagem
progemini-3-pro-image1K, 2K, 4Kweb

Qual devo usar?

  • flash (padrão) — sua opção preferida. Melhor equilíbrio geral entre qualidade, custo e latência. Até 4K, grounding por busca, as proporções mais amplas (21:9, 1:4, etc.), e o único nível que aceita entrada de vídeo.
  • pro — o renderizador de maior qualidade. Use para ativos profissionais/entregáveis, instruções complexas com múltiplos elementos e texto legível renderizado dentro da imagem (infográficos, pôsteres, cardápios). Uma passada de "Thinking" integrada refina a composição antes de renderizar. Mais lento e mais caro.
  • nano — velocidade e volume. Apenas 1K, sem grounding/pensamento, sempre retorna PNG. Use quando precisar gerar muitas imagens rapidamente e a qualidade por imagem importar menos.

generate_story usa como padrão pro (melhor qualidade intercalada); generate_from_video é bloqueado em flash (o único nível que aceita vídeo).

generate_image

ArgumentoTipoPadrãoObservações
promptstringObrigatório. O que gerar.
outputstringObrigatório. Caminho do arquivo de saída. A extensão define o formato: .png (padrão) ou .jpg (apenas flash/pro — nano sempre retorna PNG).
modelnano/flash/proflashNível do modelo.
ratiostring1:1Ex.: 16:9, 9:16, 4:3; 21:9/1:4/4:1/1:8/8:1 são exclusivos do flash.
size0.5K/1K/2K/4K1K0.5K é exclusivo do flash.
use_searchbooleanfalseAncora com o Google Search (flash/pro).
use_image_searchbooleanfalseTambém usa o Google Image Search como contexto visual (flash).
show_thinkingbooleanfalseInclui os resumos de pensamento do modelo (pro).
previewbooleantrueRetorna uma pequena imagem de pré-visualização ao cliente.

Retorna o caminho do arquivo e um interaction_id — passe-o para edit_image para continuar iterando.

edit_image

Mesmos controles de imagem de generate_image, mais:

ArgumentoTipoObservações
previous_interaction_idstringContinue uma geração/edição anterior de forma conversacional (a forma recomendada de iterar).
reference_imagesstring[]Caminhos para imagens de referência no disco (máx. 14; flash: 10 objetos + 4 personagens, pro: 6 + 5).

generate_story

ArgumentoTipoPadrãoObservações
promptstringObrigatório. Ex.: "Um storyboard de 6 painéis de uma raposa aprendendo a voar, ilustrações intercaladas com legendas."
output_dirstringObrigatório. Diretório para as imagens numeradas.
basenamestringstoryPrefixo do nome do arquivo.
modelnano/flash/propropro oferece a melhor qualidade intercalada.
ratio / sizestringOpcional; omita para deixar o modelo decidir.

generate_icon_set

ArgumentoTipoPadrãoObservações
promptsstring[]Obrigatório. Um prompt por ícone.
output_dirstringObrigatório. Os arquivos são nomeados após cada prompt (icon-shopping-cart.png).
modelnano/flash/proflash
size0.5K/1K/2K/4K1K

generate_from_video

ArgumentoTipoPadrãoObservações
youtube_urlstringObrigatório. URL pública do YouTube.
promptstringObrigatório. O que gerar a partir do vídeo.
outputstringObrigatório. Caminho do arquivo de saída.
ratiostring16:9
size0.5K/1K/2K/4K1K
previewbooleantrue

Dicas de prompt

Para obter os melhores resultados, escreva frases completas descrevendo sujeito + cenário + iluminação + câmera/lente + clima — batidas narrativas em vez de sopa de palavras-chave.

Um retrato em close-up fotorrealista de um ceramista japonês idoso com rugas profundas e um sorriso caloroso. Luz suave de hora dourada entrando pela janela. Capturado com lente de retrato 85mm, fundo com bokeh suave. Clima sereno e magistral.

Requisitos

  • Node.js 18+ (usa o executor node:test integrado e módulos ES modernos)
  • Uma chave de API Gemini (GEMINI_API_KEY)
  • A Interactions API está em beta; os níveis de imagem Gemini 3 (flash, pro) podem exigir acesso. O nível nano é o mais amplamente disponível — defina model: "nano" se flash/pro não estiverem disponíveis na sua chave.

Desenvolvimento

npm test          # unit tests (node:test) — no API key needed
npm run smoke     # live smoke test — requires GEMINI_API_KEY

O código é dividido em módulos focados:

  • lib/config.js — tabelas de modelos, validação de proporção/tamanho, auxiliares
  • lib/gemini.js — cliente de API, novas tentativas, extração de resposta, pré-visualizações
  • lib/tools.js — esquemas e manipuladores de ferramentas
  • index.js — integração do servidor MCP

Licença

MIT