Für KI-Agenten & MCP-Clients

BananaBanana MCP Server

Generiere KI-Bilder und -Videos direkt aus Claude Desktop, Claude Code und jedem anderen MCP-Client – abgerechnet pro Generierung aus deinem BananaBanana-Guthaben. Ohne Abo.

API-Schlüssel erstellenBilder ab $0.03 · Video ab $0.10
01WAS ES IST

Ein Endpunkt, alle Modelle

Ein Remote-Server für das Model Context Protocol, der den kompletten Generierungs-Stack von BananaBanana als Agenten-Tools bereitstellt: Bilder mit Google Nano Banana 2 Lite / 2 / Pro (ab $0.03), Videos mit Veo 3.1 / Fast / Lite sowie Gemini Omni Flash und Wan 3.0 mit Ton ($0.09–1.00). Dein Agent sieht die aktuellen Preise, bestätigt die Kosten vor teuren Läufen, und jede Generierung landet im selben Verlauf und Guthaben wie auf der Website.

  • Endpunkt: https://bananabanana.pro/api/mcp (Streamable HTTP)
  • Authentifizierung: Anmeldung per OAuth 2.1 (claude.ai und andere Connector-Clients) oder ein Bearer-API-Schlüssel aus deinem Profil
  • Rate-Limit: 20 Tool-Aufrufe pro Minute und Schlüssel; optional ein Tageslimit für Ausgaben pro Schlüssel
  • Kein MCP-Client? Derselbe Endpunkt spricht schlichtes JSON-RPC über HTTPS – ruf ihn aus curl, Python oder TypeScript auf, ganz ohne SDK
  • Fehlgeschlagene oder vom Filter blockierte Generierungen werden automatisch erstattet
  • Offene Doku, server.json und Client-Beispiele zum Kopieren im GitHub-Repository bananabanana-mcp
MCP-ClientClaude Code / Desktop, Cursor,VS Code, Codex, jeder AgentOAuth / API-Schlüssel/api/mcpbananabanana.proStreamable HTTP · 10 ToolsgenerierenModell-PoolNano Banana · Veo 3.1Omni Flashpro EinheitDein GuthabenZahlung pro Generierungautomatische Erstattung bei Fehler
02SCHNELLSTART

In drei Schritten verbunden

1. Konto erstellen und Guthaben aufladen. 2. Unter Profil → MCP-API-Schlüssel einen Schlüssel erstellen (wird nur einmal angezeigt). 3. Den Server im Client hinzufügen:

claude.ai, Claude Desktop, mobil (OAuth – nichts zu kopieren)

Settings → Connectors → Add custom connector, https://bananabanana.pro/api/mcp einfügen, dann auf Connect klicken. Claude registriert sich selbst, du bestätigst den Zugriff auf einer BananaBanana-Seite, und die Generierungen werden dem Konto belastet, mit dem du dich angemeldet hast.

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

Derselbe Ablauf funktioniert in jedem Client, der MCP-Autorisierung unterstützt – MCP Inspector, die Web-Connectoren von ChatGPT und Grok, Claude Code. Verbundene Apps stehen in deinem Profil und lassen sich dort jederzeit trennen.

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

In claude_desktop_config.json eintragen (Settings → Developer → Edit Config); für die mcp-remote-Brücke wird Node.js benötigt:

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

Cursor

In ~/.cursor/mcp.json (global) oder .cursor/mcp.json im Projekt eintragen; damit der Schlüssel nicht in der Datei steht, nutze ${env:BB_API_KEY} statt des Klartextwerts:

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

Die komplette Anleitung für Cursor, inklusive Eigenheiten und Demo mit echtem Schlüssel: Generate Images in Cursor.

VS Code / GitHub Copilot

In .vscode/mcp.json im Workspace eintragen (oder in deiner Benutzer-settings.json); VS Code fragt den Schlüssel einmal ab und speichert ihn verschlüsselt:

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

Die komplette Anleitung für VS Code / Copilot, inklusive Eigenheiten und Demo mit echtem Schlüssel: Generate Images in VS Code: Copilot MCP Setup Guide.

Windsurf

In ~/.codeium/windsurf/mcp_config.json eintragen:

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

Jeder andere MCP-Client (reines JSON-RPC)

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

Jede Methode außer ping und den Discovery-Listen (tools/list, prompts/list, resources/list) braucht Zugangsdaten – initialize eingeschlossen: Ein Handshake ohne Authentifizierung wird mit 401 und einer WWW-Authenticate-Challenge beantwortet. Diese Asymmetrie ist Absicht, kein Bug: Über genau diese Challenge erkennt ein Connector-Client, dass der Server OAuth nutzt. Den Tool-Katalog kannst du auch ohne Schlüssel lesen.

Lieber Schritt für Schritt? Das Tutorial Generate Images in Claude Code deckt die Einrichtung in Claude komplett ab, mit vier echten Anwendungsfällen und ihren tatsächlichen Kosten.

03FUNKTIONIERT MIT

Kompatible Clients

MCP ist ein offenes Protokoll: Jeder Client, der Streamable HTTP spricht und einen Authorization-Header mitsenden kann, verbindet sich. Aktueller Stand, geprüft anhand der offiziellen Doku jedes Anbieters (zuletzt im August 2026):

ClientFunktioniert?Wie
Claude Codejaclaude mcp add --transport http … --header
Claude Desktop / claude.aijaCustom Connector: URL einfügen und per OAuth anmelden (ein Schlüssel im Request-Header geht auch, Beta)
Cursorja.cursor/mcp.json: url + headers, Secrets über ${env:…} – siehe Snippet oben
VS Code / GitHub Copilotja.vscode/mcp.json: type: "http" + url + headers; den Schlüssel als promptString-Input ablegen – VS Code fragt einmal und speichert ihn verschlüsselt
ChatGPT desktop / Codex CLI / IDEjagemeinsame ~/.codex/config.toml: url + bearer_token_env_var (Schlüssel in die Umgebungsvariable). Die Web-Connectoren von ChatGPT melden sich stattdessen per OAuth an, ohne eingefügten Schlüssel
Gemini CLIjaurl + type: "http" + headers in settings.json (httpUrl geht auch). Einrichtungsanleitung
WindsurfjaserverUrl + headers in mcp_config.json (Devin Local agent: url + transport: "http"). Setup guide
Clinejatype: "streamableHttp" + url + headers in the MCP settings JSON. Setup guide
xAI API (Grok)jaMCP-Tool mit server_url und einem authorization-Wert, der an den Server gesendet wird Setup guide
grok.com (web)teilweiseCustom Connectors nehmen eine Server-URL (Connectors → New Connector → Custom); die Anmeldung läuft über unseren OAuth-2.1-Flow
ZCode (GLM-5.2)jaSettings → MCP Servers → Typ HTTP + Authorization-Header; GLM-5.2 innerhalb von Claude Code übernimmt die Claude-Code-Konfiguration
Alles anderejareines JSON-RPC über HTTPS – siehe Aufruf aus dem Code weiter unten

Beispiel für Codex – in ~/.codex/config.toml eintragen und BB_API_KEY=bb_live_… exportieren:

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

Die komplette Anleitung für Codex – CLI, IDE-Erweiterung und ChatGPT Desktop aus einer Konfiguration, mit Eigenheiten und Demo mit echtem Schlüssel: Codex MCP Setup: Images and Video from One config.toml.

04KEIN SDK NÖTIG

Aufruf aus dem Code

Du nutzt keinen MCP-Client? Brauchst du auch nicht – und ein SDK ebenso wenig. Der Server spricht schlichtes JSON-RPC 2.0 über HTTPS: ein POST-Endpunkt, ein Bearer-Header, eine einzige JSON-Antwort. Er ist zustandslos, es gibt also keinen Session-Handshake zu verwalten – tools/call funktioniert schon als allererste Anfrage, aus curl, Python, TypeScript oder allem anderen, das HTTP senden kann.

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

Nur requests – keine MCP-Bibliothek:

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

Null Abhängigkeiten – eingebautes fetch (Node 18+, Deno, Bun, Browser):

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

Worauf es beim Skripten ankommt:

  • Jede Tool-Antwort enthält dasselbe JSON zweimal: maschinenlesbar in result.structuredContent und als Textblock in result.content – parse, was dir leichter fällt.
  • Video (und Bild-Batches) laufen zweistufig: Der erste Aufruf von generate_video liefert einen Kostenvoranschlag und berechnet nichts; zum Starten wiederholst du ihn mit confirm_cost, gesetzt auf den genannten Betrag.
  • Gib bei Generierungsaufrufen einen idempotency_key mit – dann führen Netzwerk-Wiederholungen nie zu doppelter Abbuchung.
  • tools/list funktioniert ohne Schlüssel, du kannst dir also alle Schemas ansehen, bevor du ein Konto anlegst. Tool-Aufrufe sind auf 20 pro Minute und Schlüssel begrenzt.
05TOOLS

Zehn Tools, zugeschnitten auf Aufgaben

ToolKostenWas es macht
list_modelskostenlosAlle Modelle mit aktuellen Preisen pro Einheit, Auflösungen und Einschränkungen.
get_accountkostenlosGuthaben, Ausgabenlimit des Schlüssels und heutiger Verbrauch.
top_upkostenlosSicheren Link zum Aufladen des Guthabens erstellen. OAuth erhält nur Zugriff zum Einzahlen; API-Schlüssel nutzen das Profil.
generate_image$0.03–$0.20Text-zu-Bild mit Nano Banana 2 Lite / 2 / Pro, bis 4K. Liefert eine job_id.
edit_imagePreis eines BildesEin fertiges Bild per Textanweisung verfeinern (Bearbeitung über mehrere Runden).
generate_video$0.10–$6.00Veo-3.1-Familie oder Omni Flash (immer mit Ton), Wan 3.0, optional mit Startbild und Referenzbildern. Nennt immer zuerst die exakten Kosten.
edit_video$0.09–1.00Video-zu-Video-Bearbeitung mit Omni Flash: dein eigener Clip oder eine öffentliche URL – neuer Stil, Objekte ersetzen, neues Licht. Die ersten 10 s, 720p mit Ton.
generate_speech$0.01 / 200 ZeichenSprache mit einer oder zwei Stimmen als WAV generieren. Abgerechnet pro angefangenen 200 Zeichen.
get_resultkostenlosJob abfragen: gehostete Medien-URLs (24-h-Links), berechnete Kosten, Restguthaben, Inline-Vorschau des Bildes.
list_generationskostenlosLetzte Generierungen – derselbe Verlauf wie auf der Website.
06PREISE

Was kostet eine Generierung über MCP 2026?

  • Die Preise liefert list_models live – dieselbe Quelle, die auch die Website nutzt.
  • Jeder Video-Aufruf (und jeder Bild-Batch) liefert zuerst einen Kostenvoranschlag und berechnet nichts; der Agent wiederholt den Aufruf mit confirm_cost, um zu starten.
  • Jedes Ergebnis enthält cost_charged_usd und balance_remaining_usd.
  • Fehler beim Anbieter und Ablehnungen durch den Inhaltsfilter werden automatisch erstattet – dieselbe Regel wie in der Web-App.
  • Ein optionaler idempotency_key garantiert, dass Wiederholungen nie doppelt abbuchen.
07BEISPIEL

Ein echter Dialog

→ 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}
08SICHERHEIT

Medien-URLs & Sicherheit

  • Ergebnis-URLs sind signiert und 24 Stunden gültig; die Medien selbst bleiben in deinem Konto – ruf get_result erneut auf, um frische Links zu bekommen, oder lade sie auf der Website herunter.
  • API-Schlüssel werden gehasht gespeichert und nur einmal beim Erstellen angezeigt; widerrufen kannst du sie jederzeit in deinem Profil.
  • OAuth-Verbindungen nutzen Access-Tokens mit einer Stunde Laufzeit und rotierende Refresh-Tokens, gehasht gespeichert und nur für diesen Server gültig; trennst du eine App in deinem Profil, sind ihre Tokens sofort ungültig.
  • Das Nutzungsprotokoll pro Schlüssel (Tool, Modell, Kosten, Prompt-Vorschau) siehst du unter Profil → MCP-API-Schlüssel.
  • MCP-Generierungen erscheinen im selben Verlauf und in derselben Statistik wie Generierungen im Web.
09ZAHLUNG PRO AUFRUF

x402: Zahlung pro Aufruf in USDC, ohne Konto

x402 ist ein offenes Protokoll, mit dem ein Agent eine einzelne Anfrage mit einem Stablecoin bezahlt. Es ist ein vom MCP-Server getrennter Endpunkt: POST /api/x402. Kein Konto, kein API-Schlüssel und keine Aufladung nötig.

  1. Schick den Tool-Namen und seine Argumente. Der Server antwortet mit 402 und dem exakten Preis für diesen Aufruf.
  2. Signiere die Zahlung in USDC im Base-Netzwerk und wiederhole die Anfrage mit dem Header X-PAYMENT.
  3. Bilder und Sprache kommen in derselben Antwort zurück. Video liefert eine job_id; frag GET /api/x402/result/{jobId} kostenlos ab.

Verfügbare Tools: generate_image, generate_speech, generate_video. Die Preise sind dieselben wie im Web-Studio und über MCP; ein Aufruf kostet, was die Generierung kostet, ohne Mindestaufladung.

Schlägt ein bezahltes Video fehl, erhält der Zahlende einen Gutschrift-Token über denselben Betrag, 90 Tage gültig. Gib ihn in einem späteren Aufruf als refund_token mit. Zahlungen werden nicht on-chain zurückerstattet. Den maschinenlesbaren Katalog mit aktuellen Preisen findest du unter GET /api/x402.

Bereit, deinen Agenten anzuschließen?

Schlüssel erstellen, eine Zeile Konfiguration ergänzen – dein Agent generiert Medien in Studioqualität in wenigen Minuten.

API-Schlüssel holen