Para agentes de IA y clientes MCP

BananaBanana MCP Server

Genera imágenes y videos con IA directamente desde Claude Desktop, Claude Code y cualquier otro cliente MCP, con cobro por generación desde tu saldo de BananaBanana. Sin suscripción.

Crear una clave APIImágenes desde $0.03 · video desde $0.10
01QUÉ ES

Un único endpoint, todos los modelos

Un servidor remoto de Model Context Protocol que expone toda la infraestructura de generación de BananaBanana como herramientas para agentes: imágenes de Google Nano Banana 2 Lite / 2 / Pro (desde $0.03), videos de Veo 3.1 / Fast / Lite y Gemini Omni Flash, Wan 3.0, MiniMax H3 con sonido ($0.09–1.00). Tu agente ve los precios en tiempo real, confirma los costos antes de ejecuciones costosas y cada generación se registra en el mismo historial y saldo del sitio web.

  • Endpoint: https://bananabanana.pro/api/mcp (HTTP compatible con streaming)
  • Autenticación: inicia sesión con OAuth 2.1 (claude.ai y otros clientes con conectores) o una clave API Bearer de tu perfil
  • Límite de velocidad: 20 llamadas a herramientas por minuto por clave; límite de gasto diario opcional por clave
  • ¿No tienes un cliente MCP? El mismo endpoint es JSON-RPC puro sobre HTTPS: llámalo desde curl, Python o TypeScript sin necesidad de ningún SDK
  • Las generaciones fallidas o filtradas se reembolsan automáticamente
  • Consulta la documentación, server.json y copia ejemplos de clientes listos para usar en el repositorio de GitHub bananabanana-mcp
Cliente MCPClaude Code / Desktop, Cursor,VS Code, Codex, cualquier agenteOAuth / clave API/api/mcpbananabanana.proHTTP compatible con streaming · 10 herramientasgenerarPool de modelosNano Banana · Veo 3.1Omni Flashpor unidadTu saldopago por generaciónreembolso automático si falla
02INICIO RÁPIDO

Conectado en tres pasos

1. Crea una cuenta y recarga el saldo. 2. En Perfil → Claves API de MCP crea una clave (se muestra solo una vez). 3. Añade el servidor a tu cliente:

claude.ai, Claude Desktop, móvil (OAuth: nada que copiar)

Settings → Connectors → Add custom connector, pega https://bananabanana.pro/api/mcp y pulsa Connect. Claude se registra solo, tú apruebas el acceso en una pantalla de BananaBanana y las generaciones se cobran a la cuenta con la que iniciaste sesión.

Settings → Connectors → Add custom connector
URL: https://bananabanana.pro/api/mcp
→ Add → Connect → approve access on bananabanana.pro

El mismo flujo funciona en cualquier cliente que implemente la autorización MCP: MCP Inspector, conectores web de ChatGPT y Grok, Claude Code. Las apps conectadas aparecen en tu perfil y puedes desconectarlas cuando quieras.

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

Añádelo a claude_desktop_config.json (Settings → Developer → Edit Config); requiere Node.js para el puente mcp-remote:

{
  "mcpServers": {
    "bananabanana": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://bananabanana.pro/api/mcp",
        "--header", "Authorization: Bearer bb_live_YOUR_KEY"
      ]
    }
  }
}

Cursor

Añádelo a ~/.cursor/mcp.json (global) o .cursor/mcp.json en el proyecto; para evitar guardar la clave en el archivo, usa ${env:BB_API_KEY} en lugar de escribir el valor literal:

{
  "mcpServers": {
    "bananabanana": {
      "url": "https://bananabanana.pro/api/mcp",
      "headers": {
        "Authorization": "Bearer bb_live_YOUR_KEY"
      }
    }
  }
}

Guía completa para Cursor, incluyendo peculiaridades y una demostración con clave en vivo: Generar imágenes en Cursor.

VS Code / GitHub Copilot

Añádelo a .vscode/mcp.json en el espacio de trabajo (o en tu settings.json de usuario); VS Code te solicitará la clave una vez y la guardará encriptada:

{
  "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
    }
  ]
}

Guía completa para VS Code / Copilot, incluyendo peculiaridades y una demostración con clave en vivo: Generar imágenes en VS Code: Guía de configuración de Copilot MCP.

Windsurf

Añádelo a ~/.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

Cualquier otro 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 los métodos salvo ping y las listas de discovery (tools/list, prompts/list, resources/list) exigen credenciales, incluido initialize: un handshake sin autenticar responde 401 con un desafío WWW-Authenticate. La asimetría es deliberada, no un fallo: ese desafío es lo que permite a un cliente conector descubrir que este servidor usa OAuth. Leer el catálogo de herramientas sin clave sigue funcionando.

¿Prefieres un tutorial? El tutorial Generar imágenes en Claude Code cubre la configuración de Claude de extremo a extremo, con cuatro casos de uso reales и sus costos reales.

03COMPATIBLE CON

Compatibilidad de clientes

MCP es un protocolo abierto: cualquier cliente que admita HTTP compatible con streaming y pueda adjuntar un encabezado Authorization se conecta. Estado actual, verificado con la documentación oficial de cada proveedor (última revisión en agosto de 2026):

Cliente¿Funciona hoy?Cómo
Claude Codeclaude mcp add --transport http … --header
Claude Desktop / claude.aiconector personalizado: pega la URL e inicia sesión con OAuth (también funciona una clave en cabecera, en beta)
Cursor.cursor/mcp.json: url + headers, secretos mediante ${env:…}; consulta el fragmento de arriba
VS Code / GitHub Copilot.vscode/mcp.json: type: "http" + url + headers; guarda la clave como una entrada de promptString: VS Code la solicitará una vez y la mantendrá encriptada
ChatGPT desktop / Codex CLI / IDE~/.codex/config.toml compartido: url + bearer_token_env_var (la clave en la variable de entorno). Los conectores web de ChatGPT inician sesión con OAuth en vez de pegar una clave
Gemini CLIhttpUrl + headers en settings.json
WindsurfserverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide
Clinetype: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide
xAI API (Grok)herramienta MCP con server_url and un valor de authorization enviado al servidor Setup guide
grok.com (web)parcialmentelos conectores personalizados aceptan una URL de servidor (Connectors → New Connector → Custom); el inicio de sesión usa nuestro flujo OAuth 2.1
ZCode (GLM-5.2)Settings → MCP Servers → tipo HTTP + encabezado Authorization; GLM-5.2 dentro de Claude Code hereda la configuración de Claude Code
Cualquier otra cosaJSON-RPC puro sobre HTTPS: consulta Llámalo desde el código abajo

Ejemplo de Codex: añádelo a ~/.codex/config.toml y exporta BB_API_KEY=bb_live_…:

[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"

Guía detallada de Codex: CLI, extensión de IDE y ChatGPT Desktop desde una sola configuración, con peculiaridades y una demostración con clave en vivo: Configuración de Codex MCP: imágenes y videos desde un solo config.toml.

04SIN NECESIDAD DE SDK

Llámalo desde tu código

¿No usas un cliente MCP? No lo necesitas, y tampoco te hace falta un SDK. El servidor es JSON-RPC 2.0 puro sobre HTTPS: un único endpoint POST, un encabezado Bearer y una sola respuesta JSON. Al no tener estado, no hay un protocolo de enlace de sesión que gestionar: tools/call funciona como la primera solicitud desde curl, Python, TypeScript o cualquier otra herramienta que pueda enviar peticiones 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

Solo requests, sin librería 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

Cero dependencias: 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);

Detalles importantes al escribir tus scripts:

  • Cada respuesta de la herramienta incluye el mismo JSON dos veces: result.structuredContent legible por máquina y un bloque de texto en result.content; procesa el que te resulte más fácil.
  • Los videos (y los lotes de varias imágenes) requieren una llamada en dos pasos: el primer generate_video devuelve una cotización y no realiza cargos; repite la llamada con confirm_cost configurado con el monto cotizado para comenzar.
  • Pasa una idempotency_key en las llamadas de generación: los reintentos de red nunca generarán cargos duplicados.
  • tools/list funciona sin clave, lo que te permite explorar los esquemas completos antes de crear una cuenta. Las llamadas a herramientas están limitadas a 20 por minuto por clave.
05HERRAMIENTAS

Diez herramientas orientadas a tareas

HerramientaCostoQué hace
list_modelsgratisTodos los modelos con precios por unidad en vivo, resoluciones y restricciones.
get_accountgratisSaldo, límite de gasto de la clave y uso del día de hoy.
top_upgratisCrea un enlace seguro para recargar saldo. OAuth obtiene acceso solo para depósitos; las claves API usan el perfil.
generate_image$0.03–$0.20Texto a imagen en Nano Banana 2 Lite / 2 / Pro, hasta 4K. Devuelve un job_id.
edit_imageprecio de una imagenPerfecciona una imagen terminada mediante instrucciones de texto (edición multiturno).
generate_video$0.10–$6.00Familia Veo 3.1 u Omni Flash (siempre con sonido), Wan 3.0, MiniMax H3, opcionalmente a partir de un fotograma inicial e imágenes de referencia. Siempre proporciona una cotización con el costo exacto primero.
edit_video$0.09–1.00Edición vídeo a vídeo con Omni Flash: tu propio clip o una URL pública — cambia el estilo, sustituye objetos, reilumina. Primeros 10 s, 720p con sonido.
generate_speech$0.01 / 200 caracteresGenera voz WAV de uno o dos hablantes. Se cobra por cada bloque iniciado de 200 caracteres.
get_resultgratisConsulta el estado de una tarea: URL de archivos multimedia alojados (enlaces válidos por 24 horas), costo cobrado, saldo restante y vista previa de imagen integrada.
list_generationsgratisHistorial de generaciones recientes, compartido con el sitio web.
06PRECIOS

Transparencia de costos integrada

  • Los precios son proporcionados en tiempo real por list_models, la misma fuente que utiliza el sitio web.
  • Cada llamada de video (y de lotes de varias imágenes) devuelve primero una cotización y no realiza cargos; el agente repite la llamada con confirm_cost para comenzar.
  • Cada resultado incluye cost_charged_usd y balance_remaining_usd.
  • Los fallos del proveedor y los rechazos por filtros de contenido se reembolsan automáticamente, aplicando la misma política que la aplicación web.
  • La clave idempotency_key opcional garantiza que los reintentos nunca generen cobros duplicados.
07EJEMPLO

Una conversación 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}
08SEGURIDAD

URL de archivos multimedia y seguridad

  • Las URL de los resultados están firmadas и son válidas por 24 horas; el archivo multimedia permanece en tu cuenta (vuelve a llamar a get_result para obtener enlaces nuevos o descárgalo desde el sitio web).
  • Las claves API se almacenan de forma encriptada (con hash) y solo se muestran una vez al crearlas; puedes revocarlas en cualquier momento desde tu perfil.
  • Las conexiones OAuth usan tokens de acceso de una hora con refresh rotativo, guardados como hash y válidos solo para este servidor; desconectar una app en tu perfil invalida sus tokens al instante.
  • El registro de uso por clave (herramienta, modelo, costo, vista previa de la instrucción) es visible en Perfil → Claves API de MCP.
  • Las generaciones de MCP aparecen en el mismo historial de generación y analíticas que las generaciones web.

¿Listo para conectar a tu agente?

Crea una clave, añade una línea de configuración y tu agente generará contenido multimedia de calidad de estudio en cuestión de minutos.

Obtén tu clave API