Bloga dön
BananaBanana Teamtutorialmcpapi

Grok MCP: xAI API'sinden görsel ve video

Uzak bir MCP sunucusunu xAI API'si ya da grok.com özel bağlayıcısı üzerinden Grok'a nasıl bağlarsınız; görsel, video ve konuşma üretimi. Gerçek yapılandırma, $0.03'ten başlayan fiyatlar.

Grok MCP: xAI API'sinden görsel ve video

Grok'taki uzak MCP araçları xAI API'sinin sunucu tarafı bir özelliğidir: isteğin tools dizisinde bir MCP sunucusu belirtirsiniz, bağlantıyı xAI'nin kendi çalışma zamanı açar, araç listesini okur ve Grok yanıtını yazarken araçları çağırır. Sizin bilgisayarınızda hiçbir şey çalışmaz. Cursor ya da Claude Code'dan tek farkı budur: orada MCP istemcisi önünüzdeki editörde durur ve ağda konuşan sizin makinenizdir.

Kısa yanıt: tools dizisine tek bir nesne ekleyin — {"type": "mcp", "server_url": "https://bananabanana.pro/api/mcp", "server_label": "bananabanana", "authorization": "Bearer bb_live_…"} — ve Grok on üretim aracı kazanır: Nano Banana ailesiyle görseller, Veo 3.1 ve Gemini Omni Flash ile video, Gemini TTS ile konuşma. Görseller $0.03'ten, video $0.10'dan başlar; yeni hesapta denemek için $0.20 bulunur. grok.com tarafında aynı URL Connectors → New Connector → Custom altına yapıştırılır, ama oturum açma kısmı daha belirsiz (aşağıda ayrı bir bölüm var).

Uzaktaki bir sunucu rafına fırça uzatan konuşma balonunun editoryal illüstrasyonu

Aşağıda kendi tarafımıza dair söylenen her şey 1 Eylül 2026'da canlı isteklerle ölçüldü. xAI tarafına dair her şey aynı gün okunduğu haliyle onların belgelerinden geliyor; başka sözcüklerle anlatmak yerine alıntılıyorum, çünkü API'nin bu bölümü değişiyor.

İki yüzey, tek sunucu

"Grok MCP destekliyor mu" aslında iki ayrı soru ve yanıtları farklı.

YüzeyxAI'nin belgelediğiMCP istemcisi nerede çalışır
xAI APIUzak MCP araçları şurada çalışır: "the xAI native SDK, the OpenAI compatible Responses API, and the Speech to Speech API"xAI sunucularında
grok.comConnectors → New Connector → Custom: "Enter the MCP server URL and complete any required authentication"xAI sunucularında
IDE içindeki Grokiki belge sayfasında da geçmiyorbilinmiyor

Aynı sayfadaki iki kısıt iki kez okunmayı hak ediyor. Taşıma katmanı: "Only Streaming HTTP and SSE transports are supported". OpenAI uyumlu yol ise iki parametreyi kaybediyor, require_approval ve connector_id; yani ücretli bir çağrı öncesinde onay ekranını xAI'den istemek orada mümkün değil. Ya kendiniz kurarsınız ya da araçlarınızı dikkatle seçersiniz.

Bizim uç noktamız durumsuz Streamable HTTP, yani tam da bu çıtayı geçen taşıma. Canlı tutulacak oturum başlığı yok, gözetilecek SSE akışı yok: her JSON-RPC isteğine tek bir JSON yanıtı.

BananaBanana'yı xAI API'sine bağlamak

Çalışan en küçük hâli, doğrudan Responses API'ye cURL:

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

Aynısı xAI'nin Python SDK'sında, iki parametrenin adı değişiyor:

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."))

bb_live_… anahtarını profilinizden, API Keys bölümünden alırsınız. Bir kez gösterilir.

İki ayrıntı insana birer akşam kaybettiriyor.

Bearer öneki. xAI, authorization alanını "a token that will be set in the Authorization header on requests to the MCP server" diye tanımlıyor; değeri sizin yerinize Bearer ile sarıp sarmadıkları açık değil. Bizim sunucumuz tahmin etmiyor. Çıplak bir jeton gönderirseniz yanıt gayet net:

{"error":{"code":-32001,"message":"Unsupported Authorization scheme. Use 'Authorization: Bearer <token>'."}}

Şemayı kendiniz yazın: "authorization": "Bearer bb_live_…". Bir gün xAI tarafında bu iki kez sarılırsa, hiç şüpheye yer bırakmayan yolu kullanın ve başlığı doğrudan verin: headers: {"Authorization": "Bearer bb_live_…"}.

allowed_tools yalnızca kâğıt üstünde isteğe bağlı. xAI'nin belgeleri açık: onsuz sunucunun sunduğu bütün araç tanımları modelin bağlamına giriyor, "if an MCP server exposes 10 different tools and you don't specify allowed_tools, all 10 tool definitions will be available". Bizde tam on tane var. Yarısı para harcıyor. Görsel üreten bir bot için list_models, generate_image ve get_result izni verir, gerisini kapatırdım; video gerçekten gerektiğinde listeyi genişletirsiniz.

Bir sunucunun yuvasına giren delikli kartın ve yanında asılı anahtarların editoryal illüstrasyonu

Grok kapıyı çaldığında ne görüyor

İşte bu yazı için çalıştırılmış el sıkışmamız. Araç keşfi hiçbir kimlik bilgisi istemiyor:

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

Gerçekten bir iş yapan her şey, siz jetonu göstermeden 401 döndürür ve yanıt, düzgün bir istemcinin ihtiyaç duyduğu işaretçiyi taşır:

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"

resource_metadata adresindeki protected resource metadata belgesi MCP yetkilendirme spesifikasyonundan gelir; OAuth yetenekli istemciler yetkilendirme sunucumuzu böyle kendi başlarına bulur. xAI API yolunda bu 401'i hiç görmezsiniz, çünkü anahtarınız her çağrıyla birlikte gider. Aşağıdaki bağlayıcı hikâyesi içinse önemli.

Açık bir alet dolabının önünde kâğıt fişi kontrol eden kapı görevlisinin editoryal illüstrasyonu

Bir uyumluluk notu daha, çünkü kendi istemcisini yazanları düzenli olarak ısırıyor: Accept: application/json, text/event-stream başlığını şart koşmuyoruz ve düz JSON yanıtlıyoruz. Ağ geçitlerinin arkasında esrarengiz biçimde patlayanlar tam da SSE tadındaki Accept başlığında ısrar eden sunuculardır.

Fiyat teklifi, iş, yoklama: ajanları şaşırtan akış

Görsel üretmek tek çağrı ve bir bekleme demek. Video öyle değil; "aracı çağır, yanıtı oku" mantığıyla yazılmış bir ajan döngüsü tam burada takılır.

Video ve çoklu görsel istekleri iş yerine fiyat teklifi döndürür. Model, herhangi bir ücret işlenmeden önce aracı ikinci kez, confirm_cost alanında tam o rakamla, kuruşuna kadar çağırmak zorundadır. Bu bilinçli bir kasistir: biri "daha sinematik yap" yazdı diye bir ajanın 4K Veo klibine $4.40 harcayabilmesi doğru olmaz.

Sonrasında üretim asenkrondur. generate_image ve generate_video anında bir job_id döndürür; get_result çağrı başına 30 saniyeye kadar uzun yoklama yapar ve durum oturana dek yeniden çağırırsınız. Görseller genellikle 10–60 saniyede gelir. Video, modele ve süreye göre 1 ila 10 dakika sürer.

Responses API için pratik sonuç: tek bir kullanıcı turu sunucu tarafında dört beş araç çağrısı gerektirebilir; entegrasyonunuz adım sayısını ikiyle sınırlıyorsa Grok bir job_id bildirip durur, siparişi alıp evine giden garson gibi. Ona alan tanıyın. Üretim çağrılarında idempotency_key da geçirin ki yeniden denenen bir istek ikinci bir ücret doğurmasın.

Başarısızlıklar parayı kendiliğinden iade eder. Google'ın içerik filtresi bir istemi reddederse ya da çağrı sağlayıcı tarafında ölürse bakiye otomatik geri döner ve get_result hangi aşamanın reddettiğini açıklar. Almadığınız bir video için hiçbir zaman ödeme yapmazsınız.

Tezgâhın üzerinde kâğıt fişin bitmiş bir fotoğrafla takas edilmesini gösteren editoryal illüstrasyon

grok.com da bunu yapabilir mi?

Kısmen, ve dürüst yanıtın içinde bir boşluk var.

xAI yolu açıkça belgeliyor: grok.com/connectors adresine gidin, New Connector'a tıklayın, Custom'ı seçin, ardından "Enter the MCP server URL and complete any required authentication". Sunucunun herkese açık internetten erişilebilir olması gerekiyor; bizimki elbette öyle. Yerleşik bağlayıcılar, aynı sayfanın dediğine göre, OAuth ile kimlik doğruluyor.

Perdenin arkasında yarı gizli bir prize uzatılan fişin editoryal illüstrasyonu

Sayfanın söylemediği şey, özel bir bağlayıcının hangi kimlik doğrulama yöntemlerini kabul ettiği. Tek bir cümle, "complete any required authentication", spesifikasyonun tamamı; sayfa en son 17 Temmuz 2026'da güncellenmiş.

Bizim durumumuz şöyle. Tam bir OAuth 2.1 yetkilendirme sunucusu işletiyoruz: dinamik istemci kaydı, S256 ile PKCE, protected resource metadata, resource indicators, MCP yetkilendirme spesifikasyonunun tamamı. Bu spesifikasyonu izleyen her istemci bizim tarafımızda tek satır iş çıkmadan bağlanır; Claude ve ChatGPT bağlayıcıları tam olarak böyle çalışıyor. Grok'un özel bağlayıcısı da aynı akışı yürütüyorsa iş kendiliğinden yürür ve hesabınızın adıyla normal bir oturum açma sayfası görürsünüz.

Yalnızca bir URL saklayıp hiçbir kimlik bilgisi göndermiyorsa, bağlayıcının araç listesinde on aracın hepsini görürsünüz ve her çağrı 401 ile döner. Bizde araç keşfi anonim olduğu için bir bağlayıcı sağlıklı görünürken hiçbir şey üretemiyor olabilir.

Burada daha kesin konuşabilmeyi çok isterdim. Denediyseniz sonuç bir e-postayı hak ediyor: [email protected]. MCP sayfamızdaki uyumluluk tablosu aynı gün güncelleniyor.

Maliyeti ne kadar

Fiyatlar üretim başınadır, ön ödemeli bakiyeden düşülür, abonelik yoktur.

NeModelFiyat
Görsel, 1KNano Banana 2 Lite$0.03
Görsel, 512–4KNano Banana 2$0.03–$0.13
Görsel, 1K–4KNano Banana Pro$0.11–$0.20
Video, 4 sn 720p sessizVeo 3.1 Lite$0.10
Video, başlangıçVeo 3.1 Fast$0.35
Video, başlangıçVeo 3.1$0.70
Sesli video, saniye başınaGemini Omni Flash$0.10 (3 sn'lik asgari için $0.30)
KonuşmaGemini 3.1 Flash TTSHer 200 karakter için $0.01

Yumuşak pencere ışığında buruşuk keten üzerindeki mat seramik fincanın ürün fotoğrafı, Nano Banana Pro ile üretildi

Bu fincan, yukarıdaki cURL örneğindeki istemin ta kendisi; yazı yazılırken gerçekten çalıştırıldı: Nano Banana Pro, 2K, $0.11 tahsil edildi, araç çağrısından 32 saniye sonra hazırdı.

Yeni hesap $0.20 ile başlar; bu altı Lite görsel ya da kısa bir Veo Lite klibi eder. Bağlantıyı denemeye yeter, iyi modelleri yargılamaya yetmez; bunu gizlemektense açıkça söylemeyi tercih ederim.

Bakiye yüklemelerinde hacim bonusu var: $50'den itibaren %5, $100'den itibaren %10. Etkin bir promosyon kodu, aynı temel üzerinden hesaplanan %10'u daha ekler; yani kodla yapılan $100'lük yükleme bakiyeye $120 yazar. Güncel rakamlar her zaman fiyat bölümünde.

Grok zaten görsel üretiyor. Neden başka yere gidesiniz?

Haklı soru ve yarısını xAI'nin kendi model listesi yanıtlıyor: grok-imagine-image-2.0 ve grok-imagine-video-1.5 mevcut. Sohbetin içinde hızlı bir görsel için onları kullanın. Bunun için kimsenin MCP sunucusuna ihtiyacı yok.

Biri anlık fotoğraf makinesine, diğeri uzaktaki bir film atölyesine açılan iki kapının editoryal illüstrasyonu

Üretimi bize yönlendirmenin gerekçeleri daha dar ve çoğunlukla hangi modeller ile faturanın nasıl okunduğuyla ilgili:

  • Belirli Google modelleri. Görsel içi metin ve ürün çekimi için Nano Banana Pro, doğal sesli video için Veo 3.1, aynı klip üzerinde ses ve sohbet tarzı düzenleme istediğinizde Omni Flash.
  • Ücretten önce fiyat. list_models birim fiyatları canlı döndürür, video harcamadan önce teklif verir. Bir ajana bütçe verilebilir ve ajan buna gerçekten uyar.
  • Tüm istemciler için tek bakiye. Aynı anahtar Grok'ta, Gemini CLI'da, Codex'te ve web stüdyosunda çalışır, bütün sonuçlar tek bir geçmişe düşer.
  • Başarısızlıkta iade, ki döngüde bir içerik filtresi olduğunda kulağa geldiğinden çok daha önemlidir.

Bu rotanın dürüst bedeli: fazladan bir ağ sıçraması ve bir yoklama döngüsü, onay adımı isteyen video, 720p ile sınırlı Omni Flash ve istemcilerin bağlanma anında önbelleğe aldığı araç şemaları — yani bizde yeni bir parametre çıktığında Grok onu iletebilsin diye yeniden bağlanmanız gerekir. Bunların hiçbiri ölümcül değil. Hepsi gerçek.

FAQ

Grok MCP sunucularını destekliyor mu?

Evet, API tarafında. xAI'nin Remote MCP Tools özelliği yerel SDK'da, OpenAI uyumlu Responses API'de ve Speech to Speech API'de çalışıyor; server_url ve server_label zorunlu, authorization, headers ve allowed_tools isteğe bağlı. grok.com tarafında özel MCP bağlayıcıları Connectors → New Connector → Custom altında.

OAuth şart mı, API anahtarı yeter mi?

xAI API'si için bb_live_… anahtarı yeter ve daha basittir: Bearer önekiyle birlikte authorization alanında geçirin. OAuth, kullanıcıyı kendisi oturuma sokan bağlayıcı tipi istemciler için önemlidir. Sunucumuz her ikisini de aynı uç noktada destekler.

Hangi Grok modelini kullanmalıyım?

xAI'nin MCP örneklerinde grok-4.6 geçiyor, şu anki varsayılan önerileri. Sunucu tarafı araçları destekleyen herhangi bir model iş görür; araçların sözleşmesi modele göre değişmez.

Bu yolla sesli video üretilebilir mi?

Evet: sesli Veo 3.1 ya da her zaman ses üreten Gemini Omni Flash ile. İki adımlı onayı ve bir dakikayı aşan yoklamayı hesaba katın. Omni 720p ile sınırlı, dolayısıyla tam ekran bir açılış klibi için doğru seçim değil.

Bir üretim başarısız olursa ne olur?

Ücret otomatik olarak geri döner ve get_result sağlayıcı tarafındaki nedeni ve önerilen bir sonraki adımı verir. İçerik filtresi redlerini farklı bir ifadeyle yeniden denemek mantıklıdır: aynı istem ikinci denemede geçebilir, çünkü filtre yalnızca isteği değil üretilen pikselleri yargılar.

tutorialmcpapi