Pour les agents IA & clients MCP

BananaBanana MCP Server

Générez des images et vidéos IA directement depuis Claude Desktop, Claude Code et tout autre client MCP — facturation par génération depuis votre solde BananaBanana. Sans abonnement.

Créer une clé APIImages dès $0.03 · vidéos dès $0.10
01PRÉSENTATION

Un seul endpoint, tous les modèles

Un serveur distant Model Context Protocol qui expose l'ensemble des capacités de génération de BananaBanana sous forme d'outils pour vos agents : images Google Nano Banana 2 Lite / 2 / Pro (dès $0.03), vidéos Veo 3.1 / Fast / Lite et Gemini Omni Flash avec son (1.00 forfaitaire). Votre agent consulte les prix en temps réel, valide les coûts avant les opérations onéreuses, et chaque génération est enregistrée dans le même historique et déduite du même solde que sur le site web.

  • Endpoint : https://bananabanana.pro/api/mcp (Streamable HTTP)
  • Authentification : clé API Bearer depuis votre profil (le support d'OAuth 2.1 est prévu)
  • Limite d'appels : 20 requêtes d'outils par minute par clé ; plafond de dépenses quotidien optionnel par clé
  • Pas de client MCP ? Le même endpoint fonctionne en JSON-RPC classique sur HTTPS — appelez-le via curl, Python ou TypeScript sans aucun SDK
  • Les générations ayant échoué ou bloquées par les filtres sont automatiquement remboursées
  • Consultez la documentation, le fichier server.json et copiez-collez les exemples de clients depuis le dépôt GitHub bananabanana-mcp
Client MCPClaude Code / Desktop, Cursor,VS Code, Codex, tout agentClé Bearer/api/mcpbananabanana.proStreamable HTTP · 7 outilsgénérerPool de modèlesNano Banana · Veo 3.1Omni Flashà l'unitéVotre soldepaiement par générationremboursement auto en cas d'échec
02DÉMARRAGE RAPIDE

Connecté en trois étapes

1. Créez un compte et approvisionnez votre solde. 2. Dans Profil → MCP API Keys, créez une clé (affichée une seule fois). 3. Ajoutez le serveur à votre client :

Claude Code

claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp \
  --header "Authorization: Bearer bb_live_YOUR_KEY"

Claude Desktop

Ajoutez au fichier claude_desktop_config.json (Settings → Developer → Edit Config) ; requiert Node.js pour le pont mcp-remote :

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

Cursor

Ajoutez au fichier ~/.cursor/mcp.json (global) ou .cursor/mcp.json dans le projet ; pour ne pas laisser la clé en clair dans le fichier, utilisez ${env:BB_API_KEY} au lieu de la valeur littérale :

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

Guide complet pour Cursor, incluant les particularités et une démo avec clé active : Générer des images dans Cursor.

VS Code / GitHub Copilot

Ajoutez au fichier .vscode/mcp.json dans l'espace de travail (ou à votre fichier utilisateur settings.json) ; VS Code demande la clé une fois et la stocke de manière chiffrée :

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

Guide complet pour VS Code / Copilot, incluant les particularités et une démo avec clé active : Générer des images dans VS Code : Guide d'installation de Copilot MCP.

Windsurf

Ajoutez au fichier ~/.codeium/windsurf/mcp_config.json :

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

Tout autre client MCP (JSON-RPC brut)

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

Vous préférez un guide pas à pas ? Le tutoriel Générer des images dans Claude Code couvre la configuration de Claude de bout en bout, with quatre cas d'usage réels et leurs coûts réels.

03COMPATIBLE AVEC

Compatibilité des clients

Le protocole MCP est ouvert : tout client compatible Streamable HTTP capable de transmettre un en-tête Authorization peut s'y connecter. État actuel, vérifié par rapport aux documentations officielles de chaque éditeur (dernière vérification en juillet 2026) :

ClientFonctionne aujourd'hui ?Méthode
Claude Codeouiclaude mcp add --transport http … --header
Claude Desktop / claude.aiouiconnecteur personnalisé avec un en-tête de requête (bêta, déploiement progressif) ou le pont mcp-remote
Cursoroui.cursor/mcp.json : url + headers, secrets via ${env:…} — voir l'extrait ci-dessus
VS Code / GitHub Copilotoui.vscode/mcp.json : type: "http" + url + headers ; stockez la clé comme une entrée promptString — VS Code la demande une fois et la conserve chiffrée
ChatGPT desktop / Codex CLI / IDEouifichier partagé ~/.codex/config.toml : url + bearer_token_env_var (déclarez la clé dans la variable d'environnement). Les connecteurs web de ChatGPT font exception — ils s'authentifient via OAuth, et non par des clés copiées-collées
Gemini CLIouihttpUrl + headers dans settings.json
xAI API (Grok)ouioutil MCP avec server_url et une valeur authorization envoyée au serveur
grok.com (web)partiellementles connecteurs personnalisés acceptent l'URL d'un serveur (Connecteurs → Nouveau connecteur → Personnalisé) ; la documentation ne précise pas si un en-tête de clé API collé est pris en charge, cette méthode pourrait donc nécessiter notre futur OAuth 2.1
ZCode (GLM-5.2)ouiSettings → MCP Servers → type HTTP + en-tête Authorization ; GLM-5.2 au sein de Claude Code hérite de la configuration de Claude Code
Tout autre clientouiJSON-RPC brut sur HTTPS — voir Appeler depuis votre code ci-dessous

Exemple pour Codex — ajoutez au fichier ~/.codex/config.toml et exportez BB_API_KEY=bb_live_… :

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

Guide complet pour Codex — CLI, extension d'IDE et ChatGPT desktop depuis une seule configuration, avec particularités et démo avec clé active : Configuration MCP de Codex : Images et vidéos depuis un seul config.toml.

04AUCUN SDK REQUIS

Appeler depuis votre code

Vous n'utilisez pas de client MCP ? Aucun problème, vous n'avez pas non plus besoin de SDK. Le serveur fonctionne en simple JSON-RPC 2.0 sur HTTPS : un seul endpoint POST, un en-tête Bearer et une réponse JSON unique. Il est sans état (stateless), il n'y a donc pas de négociation de session à gérer — tools/call fonctionne dès la toute première requête depuis curl, Python, TypeScript ou n'importe quel outil capable d'envoyer du 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

Uniquement requests — pas de bibliothèque 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

Zéro dépendance — fetch natif (Node 18+, Deno, Bun, navigateurs) :

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);

Quelques détails utiles pour vos scripts :

  • Chaque réponse d'outil contient deux fois le même JSON : result.structuredContent pour une lecture par machine, et un bloc de texte dans result.content — analysez celui qui vous arrange.
  • La génération de vidéos (et les lots multi-images) s'effectue en deux étapes : le premier appel generate_video renvoie un devis sans rien débiter ; répétez l'appel avec le paramètre confirm_cost réglé sur le montant indiqué pour lancer la tâche.
  • Transmettez une clé d'idempotence idempotency_key lors des appels de génération — les tentatives réseau ne seront jamais facturées deux fois.
  • tools/list fonctionne sans clé, vous permettant d'explorer la structure complète des schémas avant de créer un compte. Les appels d'outils sont limités à 20 par minute et par clé.
05OUTILS

Sept outils orientés tâches

OutilCoûtDescription
list_modelsgratuitTous les modèles avec leurs prix unitaires en temps réel, résolutions et contraintes.
get_accountgratuitSolde, plafond de dépenses de la clé et utilisation du jour.
generate_image$0.03–$0.20Génération texte-vers-image sur Nano Banana 2 Lite / 2 / Pro, jusqu'à 4K. Renvoie un job_id.
edit_imageprix d'une imageAffinez une image générée avec une consigne textuelle (édition conversationnelle multi-étapes).
generate_video$0.10–$4.40Gamme Veo 3.1 ou Omni Flash (toujours avec son). Renvoie toujours d'abord un devis avec le coût exact.
get_resultgratuitSuivi d'une tâche : URL des médias hébergés (liens valables 24 h), coût débité, solde restant, prévisualisation de l'image intégrée.
list_generationsgratuitHistorique des générations récentes — partagé avec le site web.
06TARIFICATION

La transparence des coûts, par défaut

  • Les tarifs sont fournis en temps réel par list_models — la même source que celle du site web.
  • Chaque appel pour de la vidéo (ou des lots d'images) renvoie d'abord un devis et ne débite rien ; l'agent réitère l'appel avec le paramètre confirm_cost pour démarrer.
  • Chaque résultat comprend les champs cost_charged_usd et balance_remaining_usd.
  • Les échecs serveurs amont et les rejets dus aux filtres de contenu sont remboursés automatiquement — la même politique que sur l'application web.
  • Une clé d'idempotence optionnelle idempotency_key garantit que les tentatives réseau ne provoquent jamais de double facturation.
07EXEMPLE

Une vraie conversation

→ 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}
08SÉCURITÉ

URL des médias & sécurité

  • Les URL de résultats sont signées et valides pendant 24 heures ; les médias eux-mêmes restent stockés sur votre compte — appelez à nouveau get_result pour obtenir de nouveaux liens, ou téléchargez-les depuis le site web.
  • Les clés API sont stockées sous forme de hachage et affichées une seule fois lors de leur création ; révoquez-les à tout moment depuis votre profil.
  • Le journal d'utilisation par clé (outil, modèle, coût, aperçu de la consigne) est visible dans Profil → MCP API Keys.
  • Les générations effectuées via MCP apparaissent dans le même historique et les mêmes analyses que les générations web.

Prêt à connecter votre agent ?

Créez une clé, ajoutez une seule ligne de configuration — votre agent génère des médias de qualité studio en quelques minutes.

Obtenir votre clé API