Bilder in Gemini CLI generieren: MCP-Server einrichten
Verbinde Gemini CLI mit einem Remote-MCP-Server und generiere Nano-Banana-Bilder und Veo-Videos im Terminal. Echte Config, fünf Macken, ab $0.03.

Gemini CLI ist Googles Open-Source-Agent fürs Terminal, und MCP ist das Protokoll, mit dem er Tools außerhalb seiner selbst erreicht. Richte ihn auf einen Remote-MCP-Server, und dieselbe Chat-Sitzung, die deinen Code bearbeitet, erzeugt auch Bilder, Videos und Sprache – und schreibt die Dateien direkt in dein Arbeitsverzeichnis.
Kurze Antwort: Führe gemini mcp add --transport http --scope user bananabanana https://bananabanana.pro/api/mcp -H "Authorization: Bearer $BB_KEY" aus, vertraue dem Ordner, wenn die CLI fragt, und prüfe dann mit gemini mcp list, ob ein grünes Connected erscheint. Bilder kosten ab $0.03 pro Stück, abgerechnet pro Generierung von deinem Guthaben.

Alles Folgende lief am 17. August 2026 mit Gemini CLI 0.55.1 und einem echten bb_live_…-Schlüssel. Wo sich offizielle Doku und tatsächliche CLI widersprechen, sage ich es.
Einrichtung, ehrlich
Zwei Befehle. Der erste registriert den Server:
export BB_KEY=bb_live_… # create one at https://bananabanana.pro/profile
gemini mcp add --transport http --scope user \
bananabanana https://bananabanana.pro/api/mcp \
-H "Authorization: Bearer $BB_KEY"
Der zweite prüft ihn:
gemini mcp list
# ✓ bananabanana: https://bananabanana.pro/api/mcp (http) - Connected
Wenn statt Connected ein Disabled kommt, lies den nächsten Abschnitt, bevor du irgendetwas anderes anfasst. Mich hat das gut fünf Minuten gekostet.
Fünf Macken, die die Doku verschweigt
Fehlendes Ordner-Vertrauen schaltet stillschweigend alles ab. Führ gemini mcp list in einem Verzeichnis aus, dem die CLI nicht vertraut, und du bekommst das hier:
Warning: MCP servers are configured but disabled because this folder is untrusted.
User-level servers are also suppressed in untrusted folders to prevent accidental side-effects.
○ bananabanana: https://bananabanana.pro/api/mcp (http) - Disabled
Achte auf die zweite Zeile. Selbst ein Server mit --scope user bleibt aus. Beim ersten interaktiven Start fragt die CLI, ob du dem Ordner vertraust; wenn du skriptest, steht diese Entscheidung in ~/.gemini/trustedFolders.json als simple Zuordnung von Pfad zu TRUST_FOLDER. Vernünftiger Standard, miserables Fehlerbild, denn nichts an „Disabled“ deutet auf den Ordner hin.
gemini mcp add schreibt url, nicht httpUrl. Die Doku beschreibt httpUrl für Streamable HTTP. Was CLI 0.55.1 bei mir tatsächlich erzeugt hat, war:
{
"mcpServers": {
"bananabanana": {
"url": "https://bananabanana.pro/api/mcp",
"type": "http",
"headers": { "Authorization": "Bearer $BB_KEY" }
}
}
}
Beide Varianten verbinden sich. Aber wenn du eine Config aus der Doku kopierst und mit dem vergleichst, was die CLI generiert hat, hältst du eine davon für kaputt. Kaputt ist keine.
Standard-Scope ist project, und genau da landet dein Schlüssel. Lässt du --scope user weg, landet der Schlüssel in .gemini/settings.json in deinem Repository. Ein git add . später steht er in deiner History. Nimm --scope user oder lass den Header als Variablenreferenz stehen, wie im Block oben.
Die Interpolation von $BB_KEY funktioniert – und scheitert leise. Mit exportierter Variable: Connected. Öffnest du eine neue Shell, ohne sie zu exportieren, meldet dieselbe Config Disconnected statt irgendetwas zur Authentifizierung. Eine Zeile in deinem Shell-Profil lohnt sich.
Gemini CLI tastet nach SSE und bekommt ein 405. In den Serverlogs sah die Abfolge beim Verbinden so aus: POST initialize (200), POST notification (202), GET /api/mcp (405), POST tools/list (200). Der GET ist die CLI, die auf einem zustandslosen Server einen Server-Sent-Events-Kanal öffnen will. Das scheitert, die CLI zuckt mit den Schultern, alles läuft. Wenn du einen eigenen MCP-Server betreibst: Jag diesem 405 nicht hinterher.

Was du bekommst und was es kostet
Zehn Tools landen in der Sitzung, dieselben, die jeder andere Client in der Tool-Referenz sieht. Fünf davon sind kostenlos: list_models, get_account, top_up, get_result, list_generations. Der Rest wird pro Generierung von deinem Kontoguthaben abgerechnet.
| Was | Modell | Preis |
|---|---|---|
| Bild, 1K | Nano Banana 2 Lite | $0.03 |
| Bild, 512 → 4K | Nano Banana 2 | $0.03 – $0.13 |
| Bild, 1K → 4K | Nano Banana Pro | $0.11 – $0.20 |
| Video, 3–10 s mit Ton | Gemini Omni Flash | $0.10 pro Sekunde |
| Video, 4–8 s | Veo-3.1-Familie | bis zu $4.40 pro Clip |
| Sprache | Gemini Flash TTS | $0.01 pro 200 Zeichen |
Video- und Mehrbild-Aufrufe liefern immer zuerst ein Angebot. Der Agent bekommt einen Preis zurück, nichts wird belastet, und die Generierung startet erst, wenn er genau diese Zahl bestätigt. Ablehnungen durch den Inhaltsfilter und Fehler beim Anbieter werden automatisch erstattet – das zählt mehr, als es klingt, wenn du Prompts unbeaufsichtigt im Stapel laufen lässt.
Aufladungen bringen Boni: 5 % ab $50, 10 % ab $100, und ein aktiver Promo-Code legt weitere 10 % der Einzahlung drauf. Eine Einzahlung von $100 mit Code ergibt $120 Guthaben.

Ja, Gemini, das Nano-Banana-Bilder generiert, ist witzig

Gemini CLI, das über einen dritten Server mit einem Gemini-Bildmodell spricht, sieht tatsächlich nach Umweg aus. Es gibt einen direkteren Weg: ein Cloud-Abrechnungskonto einrichten, für die Modell-APIs freigeschaltet werden, Zugangsdaten verdrahten, Kontingente pro Region verwalten. Ein ordentlicher Nachmittag, wenn du Infrastruktur baust.
Das hier ist der andere Deal. Ein Bearer-Token, ein Prepaid-Guthaben, kein Abrechnungskonto, keine Kontingent-Tickets, keine Festlegung auf eine Region. Dazu bekommst du die Videomodelle Veo und Omni sowie TTS über dieselbe Verbindung, abgerechnet pro Generierung statt pro Projekt. Wenn deine Arbeit darin besteht, Dinge zu machen, und nicht darin, eine Plattform zu betreiben, passt das meistens besser.
Ich würde lügen, wenn ich behaupte, das sei in großem Maßstab günstiger. Ist es ab einem gewissen Volumen nicht. Es ist nur schneller gestartet und kann unmöglich versehentlich weiterlaufen.
Wenn dein Editor ein anderer ist: Derselbe Server lässt sich mit einer anderen Config-Datei und demselben Schlüssel in Claude Code, Cursor und Codex einbinden.
Ein Anwendungsfall, der sich lohnt: Illustrationen für die Doku
Wofür ich das tatsächlich nutze: ein Repository mit einem docs/-Ordner, zwölf Seiten, jede braucht ein Headerbild im selben Stil.
In der Sitzung:
Lies jede Überschrift in docs/*.md. Generiere für jede Datei eine 16:9-Illustration zum Thema der Seite, in diesem Stil: redaktionelle Illustration, pastellfarbener Papierhintergrund, dunkle Tuschedetails, violette und bernsteinfarbene Akzente, kein Text. Nutze nano-banana-pro. Speichere jede als docs/img/.png und füge den Bildverweis unter dem Seitentitel ein.
Der Agent liest die Dateien, ruft pro Seite generate_image auf, fragt get_result ab, lädt herunter und schreibt das Markdown. Zwölf Bilder zu $0.11 machen $1.32, und das Ganze läuft, während du dir einen Kaffee holst. Jede Illustration in diesem Artikel stammt aus derselben Pipeline, Nano Banana Pro, derselbe Stil-Absatz.
Zwei Dinge, bevor du es ausprobierst. Lass dir zuerst ein einziges Bild erzeugen und prüf den Stil, denn ein falscher Stil-Absatz mal zwölf sind $1.32 für nichts. Und lass --trust aus: Bestätigungsabfragen pro Tool-Aufruf nerven ein bisschen, sind aber viel besser als ein Agent, der in einer Schleife ein kostenpflichtiges Tool aufruft.

Funktioniert OAuth statt eines Schlüssels?
Gemini CLI dokumentiert OAuth-2.0-Unterstützung für Remote-MCP-Server, mit Discovery und einem Befehl /mcp auth. Unser Server ist ein vollwertiger OAuth-2.1-Autorisierungsserver (Dynamic Client Registration, PKCE S256, Discovery nach RFC 9728), und Clients wie Claude Code und claude.ai melden sich so ganz ohne Schlüssel an.
Den Weg über den API-Schlüssel habe ich von Anfang bis Ende getestet, er funktioniert. Den OAuth-Weg über Gemini CLI habe ich in dieser Sitzung nicht verifiziert, betrachte ihn also als „sollte funktionieren, unbestätigt“ und nicht als Versprechen. Der Schlüssel ist in zehn Sekunden erstellt und läuft nie ab, solange du ihn nicht widerrufst.
FAQ
Wo liegt die Einstellungsdatei?
~/.gemini/settings.json für den User-Scope, .gemini/settings.json für den Project-Scope. gemini mcp add --scope user schreibt in die erste.
Warum zeigt der Server Disabled an?
Dem Ordner wird nicht vertraut. Vertraue ihm interaktiv beim Start oder trag den Pfad mit dem Wert TRUST_FOLDER in ~/.gemini/trustedFolders.json ein. Server im User-Scope werden ebenfalls unterdrückt, der Scope rettet dich hier also nicht.
Kann ich einschränken, welche Tools das Modell sieht?
Ja. Mit --include-tools und --exclude-tools bei gemini mcp add oder mit includeTools / excludeTools in den Einstellungen. Ausschließen schlägt Einschließen. Praktisch, wenn Bilder verfügbar sein sollen, Video aber tabu.
Funktioniert das in einem Projekt, das sich mein Team teilt?
Leg den Server in den Project-Scope und den Schlüssel in eine Umgebungsvariable, niemals direkt in die Config. Jeder führt export BB_KEY=… mit seinem eigenen Schlüssel aus, und die committete Config bleibt sauber.
Was, wenn eine Generierung fehlschlägt?
Du bekommst das Geld automatisch zurück, auch bei Ablehnungen durch den Inhaltsfilter. Einen grenzwertigen Prompt noch einmal zu versuchen lohnt sich wirklich – die Sicherheitsprüfung an der fertigen Datei bewertet Pixel, und ein zweiter Durchlauf zeichnet ein anderes Bild.
Lieber klicken als tippen? Der Generator im Browser nutzt dieselben Modelle mit demselben Guthaben. Ansonsten fang nach dem Verbinden mit list_models an. Das ist kostenlos, zeigt die aktuellen Preise und bestätigt, dass die ganze Kette funktioniert, bevor du drei Cent ausgibst.