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.
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 con sonido (tarifa plana de $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 и saldo del sitio web.
- Endpoint:
https://bananabanana.pro/api/mcp(HTTP compatible con streaming) - Autenticación: clave API Bearer desde tu perfil (soporte para OAuth 2.1 planeado)
- 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.jsony copia ejemplos de clientes listos para usar en el repositorio de GitHub bananabanana-mcp
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 Code
claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
--header "Authorization: Bearer bb_live_YOUR_KEY"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"
}
}
}
}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"}¿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.
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 julio de 2026):
| Cliente | ¿Funciona hoy? | Cómo |
|---|---|---|
| Claude Code | sí | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | sí | conector personalizado con un encabezado de solicitud (beta, en despliegue) o el puente mcp-remote |
| Cursor | sí | .cursor/mcp.json: url + headers, secretos mediante ${env:…}; consulta el fragmento de arriba |
| VS Code / GitHub Copilot | sí | .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 | sí | archivo compartido ~/.codex/config.toml: url + bearer_token_env_var (coloca la clave en la variable de entorno). Los conectores web de ChatGPT son la excepción: se autentican mediante OAuth, no con claves copiadas |
| Gemini CLI | sí | httpUrl + headers en settings.json |
| xAI API (Grok) | sí | herramienta MCP con server_url and un valor de authorization enviado al servidor |
| grok.com (web) | parcialmente | los conectores personalizados requieren una URL de servidor (Connectors → New Connector → Custom); la documentación no especifica si se admite un encabezado con clave API copiada, por lo что esta opción podría requerir nuestra futura integración con OAuth 2.1 |
| ZCode (GLM-5.2) | sí | Settings → MCP Servers → tipo HTTP + encabezado Authorization; GLM-5.2 dentro de Claude Code hereda la configuración de Claude Code |
| Cualquier otra cosa | sí | JSON-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.
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.06 on the default 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.structuredContentlegible por máquina y un bloque de texto enresult.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_videodevuelve una cotización y no realiza cargos; repite la llamada conconfirm_costconfigurado con el monto cotizado para comenzar. - Pasa una
idempotency_keyen las llamadas de generación: los reintentos de red nunca generarán cargos duplicados. tools/listfunciona 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.
Siete herramientas orientadas a tareas
| Herramienta | Costo | Qué hace |
|---|---|---|
| list_models | gratis | Todos los modelos con precios por unidad en vivo, resoluciones y restricciones. |
| get_account | gratis | Saldo, límite de gasto de la clave y uso del día de hoy. |
| generate_image | $0.03–$0.20 | Texto a imagen en Nano Banana 2 Lite / 2 / Pro, hasta 4K. Devuelve un job_id. |
| edit_image | precio de una imagen | Perfecciona una imagen terminada mediante instrucciones de texto (edición multiturno). |
| generate_video | $0.10–$4.40 | Familia Veo 3.1 u Omni Flash (siempre con sonido). Siempre proporciona una cotización con el costo exacto primero. |
| get_result | gratis | Consulta 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_generations | gratis | Historial de generaciones recientes, compartido con el sitio web. |
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_costpara comenzar. - Cada resultado incluye
cost_charged_usdybalance_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_keyopcional garantiza que los reintentos nunca generen cobros duplicados.
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}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_resultpara 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.
- 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