Bilder in Cursor generieren: MCP-Server einrichten
Verbinde Cursor mit einem Remote-MCP-Server und generiere Bilder direkt ins Repo: mcp.json-Config, Secrets per Umgebungsvariable, Eigenheiten, Kosten ab $0.03.

Ein MCP-Server für Cursor ist ein externer Werkzeugkasten, den der Agent des Editors aus dem Chat heraus aufrufen kann: Du fügst einen JSON-Block in mcp.json ein, und Cursor bekommt Fähigkeiten, die seine Basismodelle nicht haben – Bildgenerierung eingeschlossen. Der Agent in Cursor bearbeitet den ganzen Tag Dateien und führt Terminalbefehle aus, aber keines der Modelle dahinter kann eine Bilddatei erzeugen. Hängst du einen Generierungsserver an, wird „mach mir ein 16:9-Hero-Bild für diese Landingpage“ zu einer ganz normalen Chat-Anweisung, an deren Ende eine echte Datei in deinem Repo liegt.
Hier das komplette Setup, falls du nur deswegen hier bist. Erstelle einen API-Schlüssel in deinem BananaBanana-Profil und füge Folgendes in ~/.cursor/mcp.json (global) oder .cursor/mcp.json im Projekt ein:
{
"mcpServers": {
"bananabanana": {
"url": "https://bananabanana.pro/api/mcp",
"headers": {
"Authorization": "Bearer ${env:BB_API_KEY}"
}
}
}
}
Exportiere BB_API_KEY=bb_live_YOUR_KEY in deiner Umgebung, und das war's. Kein lokaler Serverprozess, kein Google-Cloud-Konto, kein Abo. Bilder kosten ab $0.03 vom Prepaid-Guthaben, Video ab $0.10. Beide Demobilder in dieser Anleitung habe ich genau über diese Config mit einem echten Schlüssel generiert, während ich den Text geschrieben habe; die Traces und die Medienrechnung von $0.55 findest du weiter unten.
Warum einen Bildgenerator an Cursor anschließen?
Weil Frontend-Arbeit genau dann Bilder braucht, wenn deine Hände gerade im Code stecken. Ein Hero-Bild für die Landingpage. Platzhalter für Produktkarten, damit das Grid nicht mit grauen Kästen live geht. Ein OG-Bild für den Blogpost, den du gerade eingebunden hast. Nichts davon ist schwer, aber früher bedeutete jedes davon denselben Umweg: Generator im Browser-Tab öffnen, Prompt tippen, herunterladen, umbenennen, nach public/ ziehen, zurückkommen, das <img>-Tag schreiben. Zehn Minuten Kleinkram pro Asset, und du hast den Faden in der Komponente verloren.
Mit einem MCP-Server erledigt der Agent diese ganze Schleife. Er schreibt den Prompt (meist besser als mein fauler erster Entwurf), ruft generate_image auf, lädt das Ergebnis in den richtigen Ordner und schreibt das Markup samt Alt-Text. Du prüfst einen Diff, statt Routinearbeit zu machen.
Die andere Hälfte des Arguments ist das, was du nicht installieren musst. Lokale MCP-Server für Bildgenerierung gibt es, und sie funktionieren – aber dafür betreibst du einen eigenen Node- oder Python-Prozess und bringst deinen eigenen Google-API-Schlüssel mit, mit Quoten und Abrechnung auf deinem Google-Konto. Ein Remote-Server spart dir all das: Der Endpunkt läuft bereits bei uns, auf derselben Pipeline wie der BananaBanana-Generator, und deine einzige Zugangsinformation ist ein bb_live_-Schlüssel.

Wie fügst du einen MCP-Server zu Cursor hinzu?
Drei Schritte, etwa zwei Minuten. Die Config-Details unten sind mit der offiziellen Cursor-MCP-Dokumentation abgeglichen, Stand 11. Juli 2026.
Erstens: Registriere dich und öffne Profil → MCP-API-Schlüssel. Erstelle einen Schlüssel. Er wird nur einmal angezeigt, beginnt mit bb_live_ und wird bei uns gehasht gespeichert – kopiere ihn also sofort. Neue Konten starten mit $0.20 Guthaben, genug für sechs Testbilder mit dem günstigsten Modell.
Zweitens: Entscheide, wo die Config liegt. Cursor liest zwei Orte:
~/.cursor/mcp.json– global, der Server begleitet dich in jedes Projekt;.cursor/mcp.jsonim Root des Repos – projektbezogen und gefahrlos committbar, sofern der Schlüssel nicht drinsteht.
Genau dieses „sofern“ löst die Interpolation ${env:BB_API_KEY} im Snippet oben: Cursor setzt beim Laden Umgebungsvariablen in die Werte von mcp.json ein, die Datei selbst enthält also kein Secret. Laut Doku unterstützt dieselbe Syntax auch ${workspaceFolder} und ein paar weitere Variablen.
Drittens: Starte Cursor neu oder lade es neu und öffne Cursor Settings → MCP. Der Server sollte mit grüner Anzeige und einer Liste von zehn Tools erscheinen, von list_models bis list_generations. Auf unserer MCP-Server-Seite steht dasselbe Snippet plus eine Kompatibilitätstabelle für alle anderen Clients, die wir geprüft haben:

Taucht der Server nicht auf, spring zum Abschnitt über die Eigenheiten. Die Ursache ist fast immer die Umgebungsvariable, nicht die Config.
Anwendungsfall: Landing-Hero und Produktbilder, ohne den Chat zu verlassen
Das Szenario, um das dieser Artikel gebaut ist: Du bist Frontend-Entwickler, baust eine Landingpage für eine Outdoor-Marke, und das Design verlangt ein vollbreites Hero-Bild mit Camping im Morgengrauen. Im Cursor-Chat bittest du darum, der Agent formuliert einen Prompt im Fotografie-Stil und ruft das Tool auf. Das ist der echte Trace aus meiner Session, inklusive echter Job-ID:
→ generate_image {"prompt": "A photorealistic wide hero shot for an outdoor
gear brand landing page: a lone orange tent glowing softly on the shore of
a still alpine lake at dawn, mist over the water, sharp granite peaks
catching the first pink light, generous empty sky for headline text, low
angle, 35mm lens, no text", "model": "nano-banana-pro", "aspect_ratio": "16:9"}
← {"job_id": "cmrgox3xj000s…", "status": "processing",
"cost_charged_usd": 0.11, "balance_remaining_usd": 1554.40}
→ get_result {"job_id": "cmrgox3xj000s…"}
← {"status": "completed", "files": [{"url": "https://bananabanana.pro/api/files/…"}]}
Achtzehn Sekunden vom Aufruf bis zur fertigen Datei. Hier genau dieses Ergebnis, erster Versuch, ohne Neugenerierung:

Danach holt der Agent die Datei über die signierte URL nach public/ und schreibt die Komponente. Die Links bleiben 24 Stunden gültig; danach stellt ein neuer get_result-Aufruf sie neu aus.
Produkt-Platzhalter funktionieren genauso, nur mit einem quadratischeren Briefing. Für das Karten-Grid habe ich eine Trinkflasche so beschrieben, wie man einen Fotografen brieft: Motiv, Untergrund, Licht, Objektiv. Ein Aufruf, $0.11, zwanzig Sekunden:

Beide Demos liefen auf Nano Banana Pro, weil sie auf dieser Seite veröffentlicht werden. Für Wegwerf-Füller im Grid würde ich ehrlich gesagt nano-banana-2-lite für $0.03 nehmen und nur die Bilder hochstufen, die das Design-Review überleben; unser Lite-Leitfaden zeigt, wo das günstige Modell ausreicht. Und wenn du dasselbe Maskottchen über eine ganze Bildserie brauchst, zählt die Prompt-Technik mehr als der Client – siehe den Praxisleitfaden zu Charakterkonsistenz.
Video geht aus demselben Chat. generate_video berechnet beim ersten Aufruf nie etwas: Es liefert ein Angebot, und der Agent muss den Aufruf mit confirm_cost wiederholen und damit genau diesen Betrag akzeptieren. Ein 720p-Clip ohne Ton auf Veo 3.1 Lite beginnt bei $0.10; Omni Flash mit Ton kostet je nach Auflösung $0.03–$0.30 pro Sekunde, also $0.30 für einen drei Sekunden langen Take in 720p.
Cursor-Eigenheiten, die du vor dem Livegang kennen solltest
Jeder Client hat seine scharfen Kanten. Das hier sind die, vor denen ich eine Kollegin wirklich warnen würde – gesammelt beim Testen des Setups oben.

1. ${env:…} funktioniert nur, wenn Cursor die Variable sieht. Ein Export in deiner .zshrc ist sichtbar, wenn du Cursor aus dem Terminal startest. Eine GUI-App, die über das Dock oder einen Desktop-Launcher startet, liest dein Shell-Profil aber nicht, und dieselbe Config scheitert dort stillschweigend. Meiner Erfahrung nach ist das auf macOS Ursache Nummer eins für „Server verbindet sich nicht“. Lösungen: Setz die Variable auf Betriebssystemebene (launchctl setenv auf macOS oder die Systemumgebungsvariablen unter Windows), oder starte Cursor einmal aus dem Terminal, um zu prüfen, ob die Config ansonsten stimmt.
2. Die Projekt-Config ist ein Team-Feature, ein Schlüssel pro Person. Committe .cursor/mcp.json mit dem Platzhalter ${env:BB_API_KEY}, und jedes Teammitglied hat den Server direkt nach dem Klonen – jeder mit dem eigenen Schlüssel. Diese Trennung ist wichtiger, als sie aussieht: Schlüssel sind kostenlos, und jeder bekommt ein eigenes Nutzungsprotokoll (Tool, Modell, Kosten, Prompt-Vorschau) sowie optional ein tägliches USD-Limit unter Profil → MCP-API-Schlüssel. Verlässt jemand das Team, widerrufst du einen Schlüssel, und sonst merkt niemand etwas. In den Business-Tarifen von Cursor lassen sich MCP-Server auch über das Team-Dashboard verteilen, aber die committete Datei funktioniert in jedem Tarif.
3. Cursor fragt vor jedem Tool-Aufruf nach, und das solltest du wahrscheinlich so lassen. Standardmäßig wartet jeder MCP-Aufruf auf deine Freigabe; die Argumente siehst du unter einem kleinen Pfeil neben dem Tool-Namen. In Auto-Run-Modi laufen freigegebene Tools sofort. Zwanzigmal auf „Approve“ zu klicken nervt bei einem Batch, ich weiß. Aber bei Tools, die pro Aufruf echtes Geld ausgeben, würde ich die Freigabe anlassen und nur die kostenlosen (list_models, get_result) automatisch laufen lassen. Für Video gibt es bei uns ohnehin einen zweiten Sicherheitsgurt: Ohne confirm_cost wird nichts über ein Angebot hinaus berechnet.
4. Du siehst das Ergebnis direkt im Chat. Laut Cursor-Doku werden Bilder, die MCP-Tools zurückgeben, an die Unterhaltung angehängt, und Modelle mit Bildverständnis analysieren sie. Unser get_result liefert neben der URL eine kleine WebP-Vorschau, sodass der Agent (und du) ein Ergebnis beurteilen kann, ohne einen Browser zu öffnen. Das heißt auch: Der Agent kann sich selbst korrigieren. Bitte ihn, das Bild zu prüfen und neu zu generieren, falls etwa das Zelt mitten im Bereich für die Überschrift gelandet ist.
5. Es gibt Ein-Klick-Installationslinks, aber pack keine Schlüssel hinein. Cursor unterstützt cursor://-Deeplinks, die einen MCP-Server aus einer base64-kodierten Config installieren, siehe Doku zu Installationslinks. Praktisch für offene Server, falsch für authentifizierte: Die kodierte Config würde deinen Schlüssel im Klartext enthalten, und wer den Link bekommt, bekommt dein Guthaben. Deshalb ist der Button auf unserer Website ein Copy-Paste-Snippet mit Platzhalter für die Umgebungsvariable statt eines „Add to Cursor“-Deeplinks. Einfügen, Variable exportieren, fertig.
Noch etwas Wissenswertes von der Produktseite: Das MCP-Tool generate_image nimmt inzwischen auch Eingabebilder an (Job-ID, URL oder Data-URI), sodass Generierung mit Referenzbild ebenfalls über MCP läuft. generate_video nimmt auf dieselbe Weise ein Startbild an, für Bild-zu-Video brauchst du also auch den Web-Generator nicht mehr.
Was haben die Demo-Medien dieses Artikels gekostet?
Normale Preise pro Generierung, dieselben Zahlen, die list_models dem Agenten meldet, kein Mitarbeiterrabatt:
| Asset | Modell | Preis |
|---|---|---|
| Landing-Hero-Demo, per MCP mit echtem Schlüssel | Nano Banana Pro, 1K | $0.11 |
| Produkt-Platzhalter-Demo, per MCP | Nano Banana Pro, 1K | $0.11 |
| Cover + 2 Editorial-Illustrationen | Nano Banana Pro, 1K | $0.33 |
| Screenshot der Dokuseite | Browser, keine Generierung | $0.00 |
| Gesamt | $0.55 |
Diesmal hat jede Generierung beim ersten Versuch geklappt, was nicht immer so sein wird. Plane bei Produktbildern ein, zwei Neugenerierungen ein und zoom vor dem Livegang hinein, denn die Geometrie von Objekten ist immer noch die Stelle, an der fotorealistische Modelle am häufigsten patzen.
Wenn du diesen Server schon in Claude nutzt, ist die Cursor-Config oben das einzig Neue: gleicher Schlüssel, gleiches Guthaben, gleicher Verlauf. Fängst du bei null an, zeigt die Anleitung für Claude Code vier weitere Anwendungsfälle, die fast wortgleich auf Cursor passen. Bereit zum Ausprobieren? Erstelle einen Schlüssel und bitte Cursor um dein erstes Hero-Bild.
FAQ
Unterstützt Cursor Remote-MCP-Server mit Authorization-Header?
Ja, nativ. Seit Cursor den Streamable-HTTP-Transport unterstützt, ist ein Remote-Server nur noch eine url plus ein optionales headers-Objekt in mcp.json, ohne lokalen Bridge-Prozess, und die Interpolation ${env:VAR} hält das Secret aus der Datei heraus. Genau diese Config nutzt diese Anleitung, geprüft gegen die offizielle Cursor-MCP-Dokumentation am 11. Juli 2026. Cursor unterstützt für Remote-Server auch OAuth; unser Endpunkt authentifiziert inzwischen sowohl per Bearer-Schlüssel als auch per OAuth 2.1.
Brauche ich einen Google-API-Schlüssel, um in Cursor Bilder zu generieren?
Nein. Lokal laufende Bild-MCP-Server rufen die Gemini API direkt auf und brauchen deshalb deinen eigenen Google-Schlüssel mit eigenen Quoten und eigener Abrechnung. Beim Remote-Server läuft die Generierung über BananaBananas eigenen verwalteten Pool an API-Schlüsseln, und deine einzige Zugangsinformation ist der bb_live_-Schlüssel aus deinem Profil. Du tauschst direkten Zugriff auf Googles rohe API gegen Preise pro Generierung ohne Mindestumsatz, ein einziges Prepaid-Guthaben und einen Schlüssel, den du mit einem Klick widerrufen kannst.
Sollte die MCP-Config global oder pro Projekt liegen?
Beides funktioniert; der Unterschied liegt in Reichweite und Teilen. ~/.cursor/mcp.json begleitet dich in jedes Repo, das passt zu einem persönlichen Setup. .cursor/mcp.json im Projekt-Root reist mit dem Repo, sodass das ganze Team den Server nach dem Klonen hat; halte den Schlüssel als ${env:…}-Referenz, dann ist die Datei gefahrlos committbar. Mein Standard ist projektbezogen für alles, woran ein Team arbeitet, denn eine committete Config plus Schlüssel pro Entwickler liefert Nutzungsprotokolle und Widerruf pro Person.
Kann Cursor über denselben Server auch Videos generieren?
Ja, mit einem Schritt zur Kostenbestätigung. Das Tool generate_video liefert immer zuerst ein Angebot, und der Agent muss den Aufruf mit confirm_cost auf exakt diesen Betrag wiederholen, bevor etwas berechnet wird. Die Preise reichen von $0.10 für einen 4-Sekunden-Clip ohne Ton in 720p auf Veo 3.1 Lite bis $4.40 für ein Top-Rendering auf Veo 3.1 mit Ton, und Omni Flash mit Ton kostet je nach Auflösung $0.03–$0.30 pro Sekunde ($0.09–$3.00 pro Clip). Clips brauchen eine bis zehn Minuten, der Agent fragt also get_result ab, während er an deinem Code weiterarbeitet.
Warum erscheint mein Server nach dem Bearbeiten von mcp.json nicht in Cursor?
Drei übliche Verdächtige, nach Wahrscheinlichkeit sortiert. Die Umgebungsvariable ist für den Cursor-Prozess nicht sichtbar: Per GUI gestartete Apps lesen dein Shell-Profil nicht, also setz die Variable auf Betriebssystemebene oder starte Cursor aus dem Terminal. Die Config wurde nicht neu geladen: Starte Cursor komplett neu oder nutze den Aktualisieren-Button in den MCP-Einstellungen. Oder das JSON ist subtil ungültig – das klassische Beispiel ist ein Komma am Ende. Erscheint der Server, aber Tool-Aufrufe scheitern mit 401, ist der Schlüssel selbst falsch oder widerrufen; teste ihn mit einer direkten Anfrage aus dem Snippet auf der MCP-Server-Seite.