Pour les agents IA & clients MCP
Nano Banana MCP Server pour Claude, Cursor et Gemini CLI
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.
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 / 2.1 / Pro (dès $0.03), vidéos Veo 3.1 / Fast / Lite et Gemini Omni Flash, Wan 3.0 avec son ($0.09–1.00). 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 : connexion via OAuth 2.1 (claude.ai et autres clients à connecteurs) ou clé API Bearer depuis votre profil
- 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.jsonet copiez-collez les exemples de clients depuis le dépôt GitHub bananabanana-mcp
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.ai, Claude Desktop, mobile (OAuth — rien à copier)
Settings → Connectors → Add custom connector, collez https://bananabanana.pro/api/mcp puis cliquez sur Connect. Claude s'enregistre tout seul, vous approuvez l'accès sur un écran BananaBanana, et les générations sont débitées du compte avec lequel vous vous êtes connecté.
Settings → Connectors → Add custom connector
URL: https://bananabanana.pro/api/mcp
→ Add → Connect → approve access on bananabanana.proLe même flux fonctionne dans tout client implémentant l'autorisation MCP : MCP Inspector, connecteurs web ChatGPT et Grok, Claude Code. Les applications connectées figurent dans votre profil, où vous pouvez les déconnecter à tout moment.
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
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"
}
}
}
}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
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"}Toutes les méthodes sauf ping et les listes de découverte (tools/list, prompts/list, resources/list) exigent des identifiants, initialize compris : une poignée de main non authentifiée répond 401 avec un défi WWW-Authenticate. Cette asymétrie est délibérée, pas un bug : c'est par ce défi qu'un client connecteur découvre que ce serveur utilise OAuth. Lire le catalogue d'outils sans clé fonctionne toujours.
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.
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 août 2026) :
| Client | Fonctionne aujourd'hui ? | Méthode |
|---|---|---|
| Claude Code | oui | claude mcp add --transport http … --header |
| Claude Desktop / claude.ai | oui | connecteur personnalisé : collez l'URL et connectez-vous via OAuth (une clé en en-tête fonctionne aussi, en bêta) |
| Cursor | oui | .cursor/mcp.json : url + headers, secrets via ${env:…} — voir l'extrait ci-dessus |
| VS Code / GitHub Copilot | oui | .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 / IDE | oui | ~/.codex/config.toml partagé : url + bearer_token_env_var (la clé dans la variable d'environnement). Les connecteurs ChatGPT web se connectent via OAuth plutôt qu'avec une clé collée |
| Gemini CLI | oui | httpUrl + headers dans settings.json |
| Windsurf | oui | serverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide |
| Cline | oui | type: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide |
| xAI API (Grok) | oui | outil MCP avec server_url et une valeur authorization envoyée au serveur Setup guide |
| grok.com (web) | partiellement | les connecteurs personnalisés acceptent une URL de serveur (Connectors → New Connector → Custom) ; la connexion passe par notre flux OAuth 2.1 |
| ZCode (GLM-5.2) | oui | Settings → 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 client | oui | JSON-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.
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.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
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.structuredContentpour une lecture par machine, et un bloc de texte dansresult.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_videorenvoie un devis sans rien débiter ; répétez l'appel avec le paramètreconfirm_costréglé sur le montant indiqué pour lancer la tâche. - Transmettez une clé d'idempotence
idempotency_keylors des appels de génération — les tentatives réseau ne seront jamais facturées deux fois. tools/listfonctionne 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é.
Dix outils orientés tâches
| Outil | Coût | Description |
|---|---|---|
| list_models | gratuit | Tous les modèles avec leurs prix unitaires en temps réel, résolutions et contraintes. |
| get_account | gratuit | Solde, plafond de dépenses de la clé et utilisation du jour. |
| top_up | gratuit | Crée un lien sécurisé pour recharger le solde. OAuth reçoit un accès limité au dépôt ; les clés API utilisent le profil. |
| generate_image | $0.03–$0.20 | Génération texte-vers-image sur Nano Banana 2 Lite / 2 / 2.1 / Pro, jusqu'à 4K. Renvoie un job_id. |
| edit_image | prix d'une image | Affinez une image générée avec une consigne textuelle (édition conversationnelle multi-étapes). |
| generate_video | $0.10–$6.00 | Gamme Veo 3.1 ou Omni Flash (toujours avec son), Wan 3.0, au besoin à partir d'une image de départ et d'images de référence. Renvoie toujours d'abord un devis avec le coût exact. |
| edit_video | $0.09–1.00 | Édition vidéo-à-vidéo avec Omni Flash : votre clip ou une URL publique — restylage, remplacement d'objets, ré-éclairage. 10 premières secondes, 720p avec son. |
| generate_speech | $0.01 / 200 caractères | Génère une voix WAV à un ou deux locuteurs. Facturé par tranche entamée de 200 caractères. |
| get_result | gratuit | Suivi 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_generations | gratuit | Historique des générations récentes — partagé avec le site web. |
Combien coûte une génération via MCP en 2026 ?
- 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_costpour démarrer. - Chaque résultat comprend les champs
cost_charged_usdetbalance_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_keygarantit que les tentatives réseau ne provoquent jamais de double facturation.
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}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_resultpour 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.
- Les connexions OAuth utilisent des jetons d'accès d'une heure avec rotation du refresh, stockés hachés et valables uniquement pour ce serveur ; déconnecter une application dans votre profil invalide ses jetons immédiatement.
- 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.
x402 : paiement à l'appel en USDC, sans compte
x402 est un protocole ouvert qui permet à un agent de payer une seule requête en stablecoin. C'est un endpoint distinct du serveur MCP : POST /api/x402. Ni compte, ni clé API, ni rechargement ne sont nécessaires.
- Envoyez le nom de l'outil et ses arguments. Le serveur répond
402avec le prix exact de cet appel. - Signez le paiement en USDC sur le réseau Base et renvoyez la requête avec l'en-tête
X-PAYMENT. - Les images et la voix arrivent dans la même réponse. La vidéo renvoie un
job_id; interrogez gratuitementGET /api/x402/result/{jobId}.
Outils disponibles : generate_image, generate_speech, generate_video. Les prix sont les mêmes que dans le studio web et via MCP ; un appel coûte le prix de la génération, sans rechargement minimum.
Si une vidéo payée échoue, le payeur reçoit un jeton de crédit du même montant, valable 90 jours. Transmettez-le comme refund_token lors d'un appel suivant. Les paiements ne sont pas remboursés on-chain. Le catalogue lisible par machine avec les prix actuels se trouve à GET /api/x402.
Questions sur le serveur MCP Nano Banana
Qu'est-ce que le serveur MCP Nano Banana ?
C'est un serveur MCP distant qui met les modèles d'image Nano Banana, ainsi que des modèles vidéo et voix, à la disposition de votre agent IA sous forme d'outils. L'agent appelle generate_image, le serveur lance la génération et renvoie un lien vers le fichier terminé. BananaBanana l'héberge à l'adresse https://bananabanana.pro/api/mcp : rien à installer ni à faire tourner en local, et chaque génération est débitée de votre solde BananaBanana aux mêmes tarifs que dans le studio web.
Comment l'ajouter à Gemini CLI ?
Gemini CLI se connecte aux serveurs MCP distants en HTTP, donc toute la configuration Gemini CLI MCP tient en une commande : gemini mcp add --transport http --scope user bananabanana https://bananabanana.pro/api/mcp -H "Authorization: Bearer YOUR_KEY". Quand la CLI demande si vous faites confiance au dossier, acceptez, puis lancez gemini mcp list et vérifiez que le serveur apparaît comme Connected. Avec --scope user, la clé va dans ~/.gemini/settings.json et non dans le .gemini/settings.json du projet : elle ne se retrouve jamais dans le dépôt.
Comment le connecter à Claude Desktop, Claude Code ou Cursor ?
Dans claude.ai et Claude Desktop, ouvrez Settings → Connectors → Add custom connector, collez https://bananabanana.pro/api/mcp et connectez-vous via OAuth : aucune clé à copier. Dans Claude Code, lancez claude mcp add --transport http bananabanana https://bananabanana.pro/api/mcp, puis tapez /mcp et choisissez Authenticate, ou passez une clé API avec --header. Dans Cursor, ajoutez l'URL et un en-tête Authorization à .cursor/mcp.json. Des configurations prêtes à coller pour ces clients et d'autres se trouvent dans le démarrage rapide plus haut.
Combien coûte un appel ?
Vous payez à la génération, pas pour la connexion : les images coûtent $0.03–$0.20, la vidéo $0.10–$6.00 selon le modèle, la durée, la résolution et le son, et la voix $0.01 par tranche de 200 caractères entamée. Les outils annexes comme list_models, get_result et get_account sont gratuits. Les appels vidéo et multi-images renvoient d'abord un devis exact et ne débitent rien tant que l'agent ne l'a pas confirmé ; les générations échouées ou filtrées sont remboursées automatiquement sur le solde.
Faut-il un compte Google ou un abonnement ?
Non. Il ne faut ni compte Google ni clé d'un fournisseur de modèles, seulement un compte BananaBanana (une adresse e-mail suffit) avec un solde prépayé. Pas d'abonnement, et le solde n'expire pas. Les clients à clé utilisent une clé API BananaBanana créée dans votre profil ; les clients de type connecteur se connectent via OAuth. Les agents qui paient avec x402 peuvent même se passer de compte : chaque appel est réglé en USDC sur Base.
Quels modèles mon agent peut-il utiliser ?
Images : Nano Banana 2 Lite (par défaut), Nano Banana 2 et Nano Banana Pro jusqu'en 4K, ainsi que GPT Image 2.5 et Qwen Image 3.0 Pro. Nano Banana 2.1 ajoute des formats panoramiques jusqu'à 8:1. Vidéo : Veo 3.1, Veo 3.1 Fast et Veo 3.1 Lite, Gemini Omni Flash, Wan 3.0 et Grok Imagine Video 1.5. Voix : Gemini 3.1 Flash TTS avec 30 voix. L'outil list_models renvoie la liste en direct avec prix, résolutions et limites : l'agent travaille toujours sur le catalogue actuel.
Ce serveur MCP de génération d'images fait-il aussi de la vidéo ?
Oui. C'est un serveur MCP de génération d'images (generate_image, edit_image) et de vidéo sur la même connexion : generate_video crée des clips à partir d'un texte, d'une image de départ ou d'images de référence, et edit_video change le style d'un clip existant ou le prolonge. Il y a aussi generate_speech pour des voix off à une ou deux voix. Tout se paie sur un seul solde, et images et vidéos arrivent dans le même historique que le studio 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