Para agentes de IA e clientes MCP
Nano Banana MCP Server para Claude, Cursor e Gemini CLI
Gere imagens e vídeos de IA diretamente do Claude Desktop, Claude Code e de qualquer outro cliente MCP — cobrado por geração a partir do seu saldo BananaBanana. Sem assinatura.
Um único endpoint, todos os modelos
Um servidor remoto Model Context Protocol que expõe todo o ecossistema de geração do BananaBanana como ferramentas para agentes: imagens do Google Nano Banana 2 Lite / 2 / 2.1 / Pro (a partir de $0.03), vídeos do Veo 3.1 / Fast / Lite e Gemini Omni Flash, Wan 3.0 com som ($0.09–1.00). Seu agente visualiza os preços em tempo real, confirma os custos antes de execuções caras, e cada geração é registrada no mesmo histórico e saldo do site.
- Endpoint:
https://bananabanana.pro/api/mcp(HTTP Streamable) - Autenticação: entre com OAuth 2.1 (claude.ai e outros clientes com conectores) ou uma chave API Bearer do seu perfil
- Limite de requisições: 20 chamadas de ferramenta por minuto por chave; limite diário de gastos opcional por chave
- Não usa cliente MCP? O mesmo endpoint é um JSON-RPC simples sobre HTTPS — chame-o via curl, Python ou TypeScript sem a necessidade de qualquer SDK
- Gerações que falharem ou forem filtradas são reembolsadas automaticamente
- Acesse a documentação, o
server.jsone copie exemplos de clientes no repositório do GitHub bananabanana-mcp
Conectado em três passos
1. Crie uma conta e recarregue seu saldo. 2. Em Perfil → Chaves de API MCP, crie uma chave (exibida apenas uma vez). 3. Adicione o servidor ao seu cliente:
claude.ai, Claude Desktop, celular (OAuth — nada para copiar)
Settings → Connectors → Add custom connector, cole https://bananabanana.pro/api/mcp e clique em Connect. O Claude se registra sozinho, você aprova o acesso numa tela da BananaBanana, e as gerações são cobradas da conta com que você entrou.
Settings → Connectors → Add custom connector
URL: https://bananabanana.pro/api/mcp
→ Add → Connect → approve access on bananabanana.proO mesmo fluxo funciona em qualquer cliente que implemente a autorização MCP: MCP Inspector, conectores web do ChatGPT e do Grok, Claude Code. Os apps conectados aparecem no seu perfil e podem ser desconectados a qualquer momento.
Claude Code
# with an API key
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"
# or with OAuth — no key, sign in in the browser
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp
# then run /mcp inside Claude Code and pick "Authenticate"Claude Desktop
Adicione ao claude_desktop_config.json (Settings → Developer → Edit Config); requer Node.js para a ponte mcp-remote:
{
"mcpServers": {
"bananabanana": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://bananabanana.pro/api/mcp",
"--header", "Authorization: Bearer bb_live_YOUR_KEY"
]
}
}
}Cursor
Adicione ao ~/.cursor/mcp.json (global) ou .cursor/mcp.json no projeto; para manter a chave fora do arquivo, use ${env:BB_API_KEY} em vez do valor literal:
{
"mcpServers": {
"bananabanana": {
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Guia completo do Cursor, incluindo detalhes de funcionamento e uma demonstração com chave ativa: Gere Imagens no Cursor.
VS Code / GitHub Copilot
Adicione ao .vscode/mcp.json no workspace (ou no seu settings.json do usuário); o VS Code solicitará a chave uma vez e a armazenará de forma criptografada:
{
"servers": {
"bananabanana": {
"type": "http",
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer ${input:bb-api-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "bb-api-key",
"description": "BananaBanana API key (bb_live_…)",
"password": true
}
]
}Guia completo do VS Code / Copilot, incluindo detalhes de funcionamento e uma demonstração com chave ativa: Gere Imagens no VS Code: Guia de Configuração do Copilot MCP.
Windsurf
Adicione ao ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bananabanana": {
"serverUrl": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
}
}
}
}Windsurf MCP Setup: Generate Images in Cascade
Cline
{
"mcpServers": {
"bananabanana": {
"type": "streamableHttp",
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer bb_live_YOUR_KEY"
},
"disabled": false,
"autoApprove": ["list_models", "get_account", "get_result"]
}
}
}Cline MCP Server: Generate Images From Your Editor
Qualquer outro cliente MCP (JSON-RPC puro)
POST https://bananabanana.pro/api/mcp
Authorization: Bearer bb_live_YOUR_KEY
Content-Type: application/json
Accept: application/json, text/event-stream
{"jsonrpc":"2.0","id":1,"method":"tools/list"}Todos os métodos, exceto ping e as listas de discovery (tools/list, prompts/list, resources/list), exigem credenciais — inclusive initialize: um handshake não autenticado responde 401 com um desafio WWW-Authenticate. A assimetria é deliberada, não um bug: é por esse desafio que um cliente conector descobre que este servidor usa OAuth. Ler o catálogo de ferramentas sem chave continua funcionando.
Prefere um tutorial passo a passo? O tutorial Gere Imagens no Claude Code cobre a configuração do Claude de ponta a ponta, com quatro casos de uso reais e seus respectivos custos.
Compatibilidade de clientes
O MCP é um protocolo aberto: qualquer cliente que suporte HTTP Streamable e consiga anexar um cabeçalho Authorization pode se conectar. Status atual, verificado com base nas documentações oficiais de cada provedor (última verificação em agosto de 2026):
| Cliente | Funciona hoje? | Como |
|---|---|---|
| Claude Code | sim | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | sim | conector personalizado: cole a URL e entre com OAuth (uma chave em cabeçalho também funciona, em beta) |
| Cursor | sim | .cursor/mcp.json: url + headers, segredos via ${env:…} — veja o trecho acima |
| VS Code / GitHub Copilot | sim | .vscode/mcp.json: type: "http" + url + headers; armazene a chave como uma entrada promptString — o VS Code solicita uma vez e a mantém criptografada |
| ChatGPT desktop / Codex CLI / IDE | sim | ~/.codex/config.toml compartilhado: url + bearer_token_env_var (a chave na variável de ambiente). Conectores web do ChatGPT entram via OAuth em vez de chave colada |
| Gemini CLI | sim | httpUrl + headers no settings.json |
| Windsurf | sim | serverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide |
| Cline | sim | type: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide |
| xAI API (Grok) | sim | ferramenta MCP com server_url e um valor de authorization enviado ao servidor Setup guide |
| grok.com (web) | parcialmente | conectores personalizados aceitam uma URL de servidor (Connectors → New Connector → Custom); o login passa pelo nosso fluxo OAuth 2.1 |
| ZCode (GLM-5.2) | sim | Settings → MCP Servers → tipo HTTP + cabeçalho Authorization; o GLM-5.2 dentro do Claude Code herda as configurações do Claude Code |
| Qualquer outro | sim | JSON-RPC puro sobre HTTPS — veja Chame via código abaixo |
Exemplo do Codex — adicione a ~/.codex/config.toml e exporte BB_API_KEY=bb_live_…:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"Guia completo do Codex — CLI, extensão de IDE e ChatGPT desktop a partir de uma única configuração, com detalhes de funcionamento e uma demonstração com chave ativa: Configuração do Codex MCP: Imagens e Vídeos a partir de um único config.toml.
Chame via código
Não usa um cliente MCP? Você não precisa de um — e também não precisa de SDK. O servidor é um JSON-RPC 2.0 simples sobre HTTPS: um endpoint POST, um cabeçalho Bearer e uma única resposta JSON. Ele é stateless, portanto não há handshake de sessão para gerenciar — o tools/call funciona logo na primeira requisição usando curl, Python, TypeScript ou qualquer outra ferramenta capaz de enviar requisições HTTP.
curl
# start an image generation (charges one image, $0.03 on the default Lite model)
curl -s https://bananabanana.pro/api/mcp \
-H "Authorization: Bearer bb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"generate_image",
"arguments":{"prompt":"studio photo of a ceramic mug on linen, soft daylight"}}}'
# → result.structuredContent.job_id = "cmxy…"
# fetch the result (long-polls server-side up to 30 s; free)
curl -s https://bananabanana.pro/api/mcp \
-H "Authorization: Bearer bb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"get_result",
"arguments":{"job_id":"cmxy…","wait_seconds":30}}}'Python
Apenas requests — sem biblioteca MCP:
import requests
MCP = "https://bananabanana.pro/api/mcp"
HEADERS = {"Authorization": "Bearer bb_live_YOUR_KEY"}
def call(tool, **args):
r = requests.post(MCP, headers=HEADERS, json={
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": tool, "arguments": args},
})
r.raise_for_status()
return r.json()["result"]["structuredContent"]
job = call("generate_image", prompt="watercolor painting of a lighthouse at dawn")
result = call("get_result", job_id=job["job_id"], wait_seconds=30)
while result["status"] == "processing":
result = call("get_result", job_id=job["job_id"], wait_seconds=30)
print(result["files"][0]["url"], "cost:", result["cost_charged_usd"])TypeScript / Node.js
Zero dependências — fetch nativo (Node 18+, Deno, Bun, navegadores):
const MCP = "https://bananabanana.pro/api/mcp";
async function call(tool: string, args: Record<string, unknown>) {
const res = await fetch(MCP, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BB_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0", id: 1, method: "tools/call",
params: { name: tool, arguments: args },
}),
});
const { result } = await res.json();
return result.structuredContent;
}
const job = await call("generate_image", {
prompt: "isometric 3D render of a tiny greenhouse at golden hour",
});
let out = await call("get_result", { job_id: job.job_id, wait_seconds: 30 });
while (out.status === "processing") {
out = await call("get_result", { job_id: job.job_id, wait_seconds: 30 });
}
console.log(out.files[0].url, "cost:", out.cost_charged_usd);Detalhes importantes para quando você for criar scripts:
- Toda resposta de ferramenta traz o mesmo JSON duas vezes: o formato legível por máquina
result.structuredContente um bloco de texto emresult.content— processe o que for mais fácil. - Geração de vídeos (e lotes de várias imagens) é um processo de duas etapas: a primeira chamada a
generate_videoretorna uma estimativa e não cobra nada; repita a chamada enviando emconfirm_costo valor estimado para iniciar. - Envie uma
idempotency_keynas chamadas de geração — tentativas de reenvio por falha de rede nunca cobrarão em duplicidade. - O
tools/listfunciona sem chave, permitindo que você explore todos os schemas antes mesmo de criar uma conta. As chamadas de ferramenta são limitadas a 20 por minuto por chave.
Dez ferramentas especializadas
| Ferramenta | Custo | O que faz |
|---|---|---|
| list_models | grátis | Todos os modelos com preços em tempo real por unidade, resoluções e restrições. |
| get_account | grátis | Saldo, limite de gastos da chave e uso de hoje. |
| top_up | grátis | Cria um link seguro para adicionar saldo. OAuth recebe acesso somente para depósito; chaves de API usam o perfil. |
| generate_image | $0.03–$0.20 | Texto para imagem no Nano Banana 2 Lite / 2 / 2.1 / Pro, até 4K. Retorna um job_id. |
| edit_image | preço de uma imagem | Refine uma imagem finalizada por meio de instruções em texto (edição interativa em turnos). |
| generate_video | $0.10–$6.00 | Família Veo 3.1 ou Omni Flash (sempre com som), Wan 3.0, opcionalmente a partir de um quadro inicial e imagens de referência. Sempre exibe o custo exato estimado primeiro. |
| edit_video | $0.09–1.00 | Edição vídeo-a-vídeo no Omni Flash: o seu clipe ou um URL público — mudar estilo, substituir objetos, reiluminar. Primeiros 10 s, 720p com som. |
| generate_speech | $0.01 / 200 caracteres | Gera fala WAV com um ou dois locutores. Cobrado por cada bloco iniciado de 200 caracteres. |
| get_result | grátis | Consulta o status de uma tarefa: URLs das mídias hospedadas (links válidos por 24 h), custo cobrado, saldo restante e pré-visualização da imagem inline. |
| list_generations | grátis | Histórico de gerações recentes — compartilhado com o site. |
Quanto custa gerar pelo MCP em 2026?
- Os preços são fornecidos em tempo real pelo
list_models— a mesma fonte que o site utiliza. - Toda chamada de vídeo (e lote de várias imagens) primeiro retorna uma estimativa sem cobrar nada; o agente repete a chamada enviando
confirm_costpara iniciar. - Cada resultado inclui
cost_charged_usdebalance_remaining_usd. - Falhas de provedores parceiros e rejeições por filtro de conteúdo são reembolsadas automaticamente — a mesma política do aplicativo web.
- O uso opcional de
idempotency_keygarante que novas tentativas de rede nunca cobrem em duplicidade.
Uma conversa real
→ generate_video {"prompt": "drone shot over a misty pine forest", "model": "veo-3.1-fast"}
← {"status": "confirmation_required", "quoted_cost_usd": 0.70, ...}
→ generate_video {..., "confirm_cost": 0.70}
← {"job_id": "cmxy…", "status": "processing", "cost_charged_usd": 0.70, "balance_remaining_usd": 12.40}
→ get_result {"job_id": "cmxy…"}
← {"status": "completed", "files": [{"url": "https://…"}], "cost_charged_usd": 0.70}URLs de mídias e segurança
- As URLs dos resultados são assinadas e válidas por 24 horas; a mídia em si permanece na sua conta — chame
get_resultnovamente para obter novos links ou faça o download diretamente pelo site. - As chaves de API são armazenadas como hash e exibidas apenas uma vez na criação; revogue-as a qualquer momento em seu perfil.
- Conexões OAuth usam tokens de acesso de uma hora com refresh rotativo, guardados como hash e válidos só para este servidor; desconectar um app no perfil invalida os tokens na hora.
- O log de uso de cada chave (ferramenta, modelo, custo, pré-visualização do prompt) fica visível em Perfil → Chaves de API MCP.
- As gerações via MCP aparecem no mesmo histórico de geração e análise que as gerações feitas pelo site.
x402: pagamento por chamada em USDC, sem conta
x402 é um protocolo aberto que permite a um agente pagar uma única requisição com stablecoin. É um endpoint separado do servidor MCP: POST /api/x402. Não é preciso conta, chave de API nem recarga.
- Envie o nome da ferramenta e os argumentos. O servidor responde
402com o preço exato dessa chamada. - Assine o pagamento em USDC na rede Base e repita a requisição com o cabeçalho
X-PAYMENT. - Imagens e fala chegam na mesma resposta. O vídeo devolve um
job_id; consulte gratuitamenteGET /api/x402/result/{jobId}.
Ferramentas disponíveis: generate_image, generate_speech, generate_video. Os preços são os mesmos do estúdio web e do MCP; a chamada custa o que custa a geração, sem recarga mínima.
Se um vídeo pago falhar, o pagador recebe um token de crédito no mesmo valor, válido por 90 dias. Envie-o como refund_token em uma chamada posterior. Os pagamentos não são reembolsados on-chain. O catálogo legível por máquina com os preços atuais está em GET /api/x402.
Perguntas sobre o servidor MCP Nano Banana
O que é o servidor MCP Nano Banana?
É um servidor MCP remoto que entrega ao seu agente de IA os modelos de imagem Nano Banana como ferramentas, junto com modelos de vídeo e voz. O agente chama generate_image, o servidor faz a geração e devolve um link para o arquivo pronto. A BananaBanana hospeda o servidor em https://bananabanana.pro/api/mcp, então não há nada para instalar ou rodar localmente, e cada geração é cobrada do seu saldo BananaBanana pelos mesmos preços do estúdio web.
Como adiciono ao Gemini CLI?
O Gemini CLI se conecta a servidores MCP remotos via HTTP, então toda a configuração de Gemini CLI MCP é um único comando: gemini mcp add --transport http --scope user bananabanana https://bananabanana.pro/api/mcp -H "Authorization: Bearer YOUR_KEY". Quando o CLI perguntar se você confia na pasta, confirme; depois rode gemini mcp list e verifique se o servidor aparece como Connected. Com --scope user a chave vai para ~/.gemini/settings.json, e não para o .gemini/settings.json do projeto, então ela nunca acaba no repositório.
Como conecto ao Claude Desktop, Claude Code ou Cursor?
No claude.ai e no Claude Desktop, abra Settings → Connectors → Add custom connector, cole https://bananabanana.pro/api/mcp e entre com OAuth: não há chave para copiar. No Claude Code, rode claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp, depois digite /mcp e escolha Authenticate, ou passe uma chave de API com --header. No Cursor, adicione a URL e um cabeçalho Authorization ao .cursor/mcp.json. Configurações prontas para colar, para esses e outros clientes, estão no início rápido acima.
Quanto custa uma chamada?
Você paga por geração, não pela conexão: imagens custam $0.03–$0.20, vídeo $0.10–$6.00 conforme modelo, duração, resolução e som, e voz $0.01 a cada 200 caracteres iniciados. Ferramentas auxiliares como list_models, get_result e get_account são gratuitas. Chamadas de vídeo e de várias imagens primeiro retornam um orçamento exato e não cobram nada até o agente confirmar, e gerações com falha ou filtradas são reembolsadas no saldo automaticamente.
Preciso de conta Google ou de assinatura?
Não. Você não precisa de conta Google nem de chave de nenhum provedor de modelos, só de uma conta BananaBanana (basta um e-mail) com saldo pré-pago. Não há assinatura e o saldo não expira. Clientes baseados em chave usam uma chave de API BananaBanana do seu perfil; clientes do tipo conector entram com OAuth. Agentes que pagam com x402 dispensam até a conta: cada chamada é paga em USDC na rede Base.
Quais modelos meu agente pode usar?
Imagens: Nano Banana 2 Lite (o padrão), Nano Banana 2 e Nano Banana Pro até 4K, além de GPT Image 2.5 e Qwen Image 3.0 Pro. Nano Banana 2.1 acrescenta formatos panorâmicos até 8:1. Vídeo: Veo 3.1, Veo 3.1 Fast e Veo 3.1 Lite, Gemini Omni Flash, Wan 3.0 e Grok Imagine Video 1.5. Voz: Gemini 3.1 Flash TTS com 30 vozes. A ferramenta list_models retorna a lista atual com preços, resoluções e limites, então o agente sempre trabalha com o catálogo em vigor.
É um servidor MCP de geração de imagens que também faz vídeo?
Sim. É um servidor MCP de geração de imagens (generate_image, edit_image) e de vídeo na mesma conexão: generate_video cria clipes a partir de texto, de um quadro inicial ou de imagens de referência, e edit_video muda o estilo de um clipe existente ou o estende. Há também generate_speech para narrações com uma ou duas vozes. Tudo é pago de um único saldo, e imagens e vídeos ficam no mesmo histórico do estúdio web.
Pronto para conectar seu agente?
Crie uma chave, adicione uma linha de configuração — seu agente começará a gerar mídias de nível de estúdio em minutos.
Obtenha sua chave de API