Grok MCP: Bild- und Video-Tools für die xAI-API
Verbinde einen Remote-MCP-Server über die xAI-API oder einen eigenen grok.com-Connector mit Grok und lass Grok Bilder, Videos und Sprache generieren. Echte Config, 401-Traces, ab $0.03.

Remote-MCP-Tools in Grok sind eine serverseitige Funktion der xAI-API: Du gibst im tools-Array einer Anfrage einen MCP-Server an, und die Laufzeitumgebung von xAI baut selbst die Verbindung auf, liest die Tool-Liste und ruft Tools auf, während Grok seine Antwort schreibt. Auf deinem Laptop läuft nichts. Das ist der ganze Unterschied zu Cursor oder Claude Code, wo der MCP-Client im Editor vor dir sitzt und dein Rechner die Kommunikation übernimmt.
Kurze Antwort: Füg ein Objekt zu tools hinzu – {"type": "mcp", "server_url": "https://bananabanana.pro/api/mcp", "server_label": "bananabanana", "authorization": "Bearer bb_live_…"} – und Grok bekommt zehn Tools zum Generieren: Bilder mit der Nano-Banana-Familie, Video mit Veo 3.1 und Gemini Omni Flash, Sprache mit Gemini TTS. Bilder gibt es ab $0.03, Video ab $0.10, und ein neues Konto bringt $0.20 zum Ausprobieren mit. Auf grok.com kommt dieselbe URL unter Connectors → New Connector → Custom rein, allerdings ist die Anmelde-Hälfte dieses Wegs weniger geklärt (dazu unten ein eigener Abschnitt).

Alles, was unsere Seite der Leitung betrifft, wurde am 1. September 2026 mit echten Anfragen gemessen. Alles zur Seite von xAI stammt aus deren Dokumentation, so wie sie an diesem Tag aussah, und ich zitiere sie, statt sie nachzuerzählen, weil sich dieser Teil ihrer API bewegt.
Zwei Oberflächen, ein Server
„Unterstützt Grok MCP“ sind eigentlich zwei Fragen, und sie haben unterschiedliche Antworten.
| Oberfläche | Was xAI dokumentiert | Wo der MCP-Client läuft |
|---|---|---|
| xAI-API | Remote-MCP-Tools funktionieren in „the xAI native SDK, the OpenAI compatible Responses API, and the Speech to Speech API“ | Server von xAI |
| grok.com | Connectors → New Connector → Custom: „Enter the MCP server URL and complete any required authentication“ | Server von xAI |
| Grok in einer IDE | auf keiner der beiden Doku-Seiten behandelt | unbekannt |
Zwei Einschränkungen auf derselben Seite solltest du zweimal lesen. Transporte: „Only Streaming HTTP and SSE transports are supported.“ Und der OpenAI-kompatible Weg lässt zwei Parameter weg, require_approval und connector_id. Eine Freigabe vor einem kostenpflichtigen Tool-Aufruf kannst du dort also nicht bei xAI bestellen. Du baust sie selbst oder wählst deine Tools mit Bedacht.
Unser Endpunkt ist zustandsloses Streamable HTTP, also genau der Transport, der diese Hürde nimmt. Kein Session-Header, den man am Leben halten muss, kein SSE-Stream, den man babysitten muss, eine JSON-Antwort pro JSON-RPC-Anfrage.
BananaBanana mit der xAI-API verbinden
Das Kleinste, was funktioniert, als schlichter cURL-Aufruf gegen die Responses API:
curl https://api.x.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $XAI_API_KEY" \
-d '{
"model": "grok-4.6",
"input": [
{ "role": "user",
"content": "Generate a 16:9 product photo of a ceramic cup on linen, soft morning light. Use nano-banana-pro, then give me the URL." }
],
"tools": [
{
"type": "mcp",
"server_url": "https://bananabanana.pro/api/mcp",
"server_label": "bananabanana",
"server_description": "Image, video and speech generation on Google models",
"authorization": "Bearer bb_live_your_key_here",
"allowed_tools": ["list_models", "generate_image", "get_result"]
}
]
}'
Dasselbe im Python-SDK von xAI, wo sich zwei Parameternamen ändern:
from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.tools import mcp
client = Client(api_key=os.environ["XAI_API_KEY"])
chat = client.chat.create(
model="grok-4.6",
tools=[
mcp(
server_url="https://bananabanana.pro/api/mcp",
server_label="bananabanana",
authorization=os.environ["BB_KEY"], # extra_headers=… also works
allowed_tool_names=["list_models", "generate_image", "get_result"],
)
],
)
chat.append(user("Make me a 16:9 hero image of a ceramic cup on linen."))
Einen bb_live_…-Schlüssel holst du dir in deinem Profil unter MCP-API-Schlüssel. Er wird nur einmal angezeigt.
Zwei Details kosten Leute jeweils einen Nachmittag.
Das Präfix Bearer. xAI beschreibt authorization als „a token that will be set in the Authorization header on requests to the MCP server“. Damit bleibt offen, ob sie den Wert für dich in Bearer verpacken. Unser Server rät nicht. Schickst du einen nackten Token, bekommst du eine konkrete Beschwerde zurück:
{"error":{"code":-32001,"message":"Unsupported Authorization scheme. Use 'Authorization: Bearer <token>'."}}
Schreib das Schema also selbst hinein: "authorization": "Bearer bb_live_…". Falls xAI es irgendwann doppelt verpackt, nimm die eindeutige Variante und setz den Header direkt mit headers: {"Authorization": "Bearer bb_live_…"}.
allowed_tools ist dem Sinn nach nicht optional. Die xAI-Doku sagt unverblümt, dass ohne diesen Parameter jede Tool-Definition, die der Server anbietet, im Kontext des Modells landet: „if an MCP server exposes 10 different tools and you don't specify allowed_tools, all 10 tool definitions will be available.“ Wir bieten genau zehn an. Die Hälfte davon gibt Geld aus. Für einen Bild-Bot würde ich list_models, generate_image und get_result erlauben und sonst nichts – und erst erweitern, wenn du wirklich Video willst.

Was Grok sieht, wenn es anklopft
Hier unser Handshake, für diesen Artikel ausgeführt. Die Tool-Erkennung braucht überhaupt keine Zugangsdaten:
curl -s -X POST https://bananabanana.pro/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
list_models, get_account, top_up, generate_image, edit_image,
generate_video, edit_video, generate_speech, get_result, list_generations
Alles, was tatsächlich etwas tut, antwortet mit 401, bis du einen Token vorlegst, und die Antwort enthält den Hinweis, den ein ordentlicher Client braucht:
HTTP/2 401
www-authenticate: Bearer realm="bananabanana",
error_description="Authentication required. Connect this server with OAuth,
or create an API key at https://bananabanana.pro/profile",
resource_metadata="https://bananabanana.pro/.well-known/oauth-protected-resource/api/mcp",
scope="mcp"
Diese resource_metadata-URL liefert das Dokument mit den Protected Resource Metadata aus der MCP-Autorisierungsspezifikation – so finden OAuth-fähige Clients unseren Autorisierungsserver selbst. Auf dem Weg über die xAI-API begegnet dir der 401 nie, weil dein Schlüssel bei jedem Aufruf mitfährt. Wichtig wird er bei der Connector-Geschichte weiter unten.

Noch ein Kompatibilitätshinweis, weil er Leute mit selbstgebauten Clients erwischt: Wir verlangen keinen Header Accept: application/json, text/event-stream und antworten mit einfachem JSON. Server, die auf dem SSE-lastigen Accept-Header bestehen, sind genau die, die hinter Gateways rätselhaft scheitern.
Angebot, Job, Abfrage: der Ablauf, der Agenten überrascht
Bildgenerierung ist ein Aufruf und etwas Warten. Video nicht, und genau hier bleibt eine Agenten-Schleife hängen, die für „Tool aufrufen, Antwort lesen“ geschrieben wurde.
Anfragen für Video und mehrere Bilder kommen mit einem Preisangebot statt mit einem Job zurück. Das Modell muss das Tool ein zweites Mal aufrufen, mit confirm_cost auf genau diesen Betrag gesetzt, centgenau, bevor irgendetwas berechnet wird. Das ist eine bewusste Bremsschwelle: Ein Agent soll nicht $4.40 für einen 4K-Clip mit Veo ausgeben können, nur weil jemand „mach es cinematisch“ getippt hat.
Danach läuft die Generierung asynchron. generate_image und generate_video liefern sofort eine job_id; get_result wartet per Long-Polling bis zu 30 Sekunden pro Aufruf, und du rufst es erneut auf, bis sich der Status nicht mehr ändert. Bilder sind meist nach 10 bis 60 Sekunden da. Video braucht je nach Modell und Länge 1 bis 10 Minuten.
Praktische Folge für die Responses API: Ein einziger Nutzer-Turn kann vier oder fünf serverseitige Tool-Aufrufe brauchen. Begrenzt deine Integration die Tool-Schritte auf zwei, meldet Grok eine job_id und hört auf – wie ein Kellner, der die Bestellung aufnimmt und nach Hause geht. Gib ihm Spielraum. Übergib bei Generierungsaufrufen außerdem einen idempotency_key, damit eine wiederholte Anfrage keine zweite Abbuchung erzeugt.
Fehlschläge erstatten sich selbst. Lehnt Googles Inhaltsfilter einen Prompt ab oder bricht ein Upstream-Aufruf ab, geht das Guthaben automatisch zurück, und get_result erklärt, in welcher Phase abgelehnt wurde. Für ein Video, das du nicht bekommen hast, zahlst du nie.

Geht das auch auf grok.com?
Teilweise, und die ehrliche Antwort hat ein Loch.
xAI dokumentiert den Weg klar: Auf grok.com/connectors gehen, New Connector klicken, Custom wählen, dann „Enter the MCP server URL and complete any required authentication.“ Der Server muss aus dem öffentlichen Internet erreichbar sein, was unserer natürlich ist. Die eingebauten Connectors authentifizieren sich laut der Seite jeweils per OAuth.

Was die Seite nicht sagt: welche Authentifizierungsmethoden ein benutzerdefinierter Connector akzeptiert. Dieser eine Satz, „complete any required authentication“, ist die gesamte Spezifikation, und er wurde zuletzt am 17. Juli 2026 aktualisiert.
Unser Stand: Wir betreiben einen vollständigen OAuth-2.1-Autorisierungsserver – dynamische Client-Registrierung, PKCE mit S256, Protected Resource Metadata, Resource Indicators, die komplette MCP-Autorisierungsspezifikation. Jeder Client, der dieser Spezifikation folgt, verbindet sich mit uns, ohne dass wir dafür eine einzige Zeile schreiben müssen, und genau so machen es die Connectors von Claude und ChatGPT. Wenn der Custom Connector von Grok denselben Ablauf geht, funktioniert es einfach, und du bekommst eine normale Anmeldeseite mit deinem Kontonamen.
Speichert er nur eine URL und schickt keine Zugangsdaten mit, siehst du alle zehn Tools in der Tool-Liste des Connectors – und jeder einzelne Aufruf kommt mit 401 zurück. Die Tool-Erkennung ist auf unserem Server anonym, ein Connector kann also gesund aussehen und trotzdem nichts generieren können.
Ich wäre hier gern eindeutiger. Wenn du es ausprobiert hast, ist das Ergebnis eine E-Mail an [email protected] wert, und die Kompatibilitätstabelle auf unserer MCP-Seite wird noch am selben Tag aktualisiert.
Was es kostet
Die Preise gelten pro Generierung, abgebucht vom vorausbezahlten Guthaben, ohne Abo.
| 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, 4s 720p ohne Ton | Veo 3.1 Lite | $0.10 |
| Video, ab | Veo 3.1 Fast | $0.35 |
| Video, ab | Veo 3.1 | $0.70 |
| Video mit Ton, pro Sekunde | Gemini Omni Flash | $0.10 ($0.30 für das Minimum von 3s) |
| Sprache | Gemini 3.1 Flash TTS | $0.01 pro 200 Zeichen |

Diese Tasse ist der Prompt aus dem cURL-Beispiel weiter oben, beim Schreiben wirklich ausgeführt: Nano Banana Pro in 2K, abgebucht wurden $0.11, fertig 32 Sekunden nach dem Tool-Aufruf.
Ein neues Konto startet mit $0.20, das reicht für sechs Lite-Bilder oder einen kurzen Clip mit Veo Lite. Genug, um die Verkabelung zu prüfen, nicht genug, um die guten Modelle zu beurteilen – und das sage ich lieber offen, als etwas anderes vorzugeben.
Aufladungen bringen einen Mengenbonus: 5 % ab $50, 10 % ab $100. Ein aktiver Promo-Code legt noch einmal 10 % der Einzahlung obendrauf, berechnet von derselben Basis, $100 mit Code ergeben also $120 Guthaben. Die aktuellen Zahlen stehen immer im Preisabschnitt.
Grok macht doch schon Bilder. Warum der Umweg?
Berechtigte Frage, und die eigene Modellliste von xAI beantwortet die Hälfte davon: Sie bieten grok-imagine-image-2.0 und grok-imagine-video-1.5 an. Für ein schnelles Bild im Chat nimm die. Dafür braucht niemand einen MCP-Server.

Die Gründe, die Generierung an uns auszulagern, sind enger gefasst und drehen sich vor allem darum, welche Modelle es sind und wie die Abrechnung aussieht:
- Bestimmte Google-Modelle. Nano Banana Pro für Text im Bild und Produktarbeit, Veo 3.1 für Video mit nativem Ton, Omni Flash, wenn du Ton und eine Bearbeitungsrunde im Dialog am selben Clip willst.
- Ein Preis vor der Abbuchung.
list_modelsliefert aktuelle Preise pro Einheit, und Video nennt ein Angebot, bevor es Geld ausgibt. Einem Agenten kann man ein Budget vorgeben, und er hält sich tatsächlich daran. - Ein Guthaben für alle Clients. Derselbe Schlüssel funktioniert in Grok, Gemini CLI, Codex und im Web-Studio, und jedes Ergebnis landet in einem gemeinsamen Verlauf.
- Rückerstattung bei Fehlschlägen – wichtiger, als es klingt, sobald ein Inhaltsfilter im Spiel ist.
Die ehrlichen Kosten dieses Wegs: ein zusätzlicher Netzwerk-Hop und eine Abfrageschleife, Video, das einen Bestätigungsschritt braucht, 1080p und 4K bei Omni Flash per Upscale statt nativem Rendering, und Tool-Schemas, die Clients beim Verbinden zwischenspeichern – ein neuer Parameter auf unserer Seite verlangt also eine neue Verbindung, bevor Grok ihn übergeben kann. Nichts davon ist fatal. Alles davon ist real.
FAQ
Unterstützt Grok MCP-Server?
Ja, auf der API-Seite. Die Remote-MCP-Tools von xAI funktionieren im nativen SDK, in der OpenAI-kompatiblen Responses API und in der Speech to Speech API; server_url und server_label sind Pflicht, authorization, headers und allowed_tools optional. Auf grok.com gibt es benutzerdefinierte MCP-Connectors unter Connectors → New Connector → Custom.
Brauche ich OAuth, oder reicht ein API-Schlüssel?
Für die xAI-API reicht ein bb_live_…-Schlüssel, und er ist einfacher: Übergib ihn als authorization, inklusive Präfix Bearer. OAuth ist für Clients im Connector-Stil wichtig, die Nutzer selbst anmelden. Unser Server unterstützt beides am selben Endpunkt.
Welches Grok-Modell sollte ich verwenden?
Die MCP-Beispiele von xAI nutzen grok-4.6, derzeit ihre Standardempfehlung. Jedes Modell, das serverseitige Tools unterstützt, eignet sich; der Tool-Vertrag ändert sich zwischen ihnen nicht.
Kann Grok darüber Videos mit Ton generieren?
Ja, über Veo 3.1 mit Ton oder Gemini Omni Flash, das immer Ton erzeugt. Rechne mit der zweistufigen Bestätigung und einer Abfrage von einer Minute oder länger. Die native Auflösung von Omni ist 720p, 1080p und 4K entstehen per Upscale – ein bildschirmfüllender Hero-Clip sieht aus Veo also womöglich trotzdem schärfer aus.
Was passiert, wenn eine Generierung fehlschlägt?
Die Abbuchung wird automatisch rückgängig gemacht, und get_result liefert den Grund vom Upstream plus einen Vorschlag für den nächsten Schritt. Bei Ablehnungen durch den Inhaltsfilter lohnt sich ein neuer Versuch mit anderer Formulierung; derselbe Prompt kann beim zweiten Durchlauf durchgehen, weil der Filter die erzeugten Pixel bewertet und nicht nur die Anfrage.