Compeller MCP Server

resmi

Şarkılardan MCP aracılığıyla AI müzik videoları ve sese tepki veren görseller oluşturun.

Dokümantasyon

Compeller MCP uç noktası (/api/mcp)

Compeller MCP uç noktası, mevcut v1 REST API'si üzerine ince bir JSON-RPC 2.0 sarmalayıcı olarak Model Context Protocol'ü uygular. Ham HTTP yerine MCP'yi doğal olarak konuşan ajan entegratörleri (Claude Desktop, Cursor, özel MCP istemcileri, DigiRAMP) için tasarlanmıştır.

  • Taşıma: Akışkan HTTP (HTTP POST başına tek JSON-RPC mesajı).
  • URL: POST https://compeller.ai/api/mcp
  • Protokol sürümü: 2024-11-05
  • Sunucu adı / sürümü: compeller-mcp / initialize sonucuna bakın.
  • Araç sözleşmesi: Aşağıdaki araç listesi genel entegrasyon sözleşmesidir. Dağıtılan sunucuda çalışma zamanında duyurulan set için tools/list kullanın.
  • Dizin listeleri: Resmi MCP Kaydı · Smithery · Glama

smithery badge

Kimlik Doğrulama

Anonim (keşif) yöntemler: initialize, tools/list, ping, notifications/initialized, artı anonim araçlar get_capabilities, get_pricing, list_styles.

Diğer tüm araçlar, JSON-RPC gövdesi içinde değil, HTTP isteğinin kendisinde iletilen bir Compeller API belirteci gerektirir. Her iki başlık da çalışır:

Authorization: Bearer <api-token>
X-API-Token: <api-token>

Belirteçler Compeller User başına verilir (/api/v1/* tarafından kullanılan belirteçlerle aynı). Ajanlar bir belirteci iki yoldan biriyle edinebilir:

  1. Kullanıcıdan oturum açmasını, Hesap → API Erişimi'ni açmasını, belirteci göstermesini ve ajanın gizli deposuna yapıştırmasını isteyin.
  2. Mevcut oturum açma uç noktasını kullanın ve access_token'i taşıyıcı belirteç olarak gönderin. Cookie başlığına gerek yoktur veya beklenmez:
curl -s -X POST https://compeller.ai/api/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"[email protected]","password":"..."}'

Normal kullanıcılar username ve access_token alır. roles yalnızca temel ROLE_COMPELLER ötesinde rollere sahip hesaplar için görünür; refresh_token ve expires_in yalnızca boş olmadığında görünür.

  1. Veya kalıcı API belirtecini döndüren v1 kimlik doğrulama yardımcısı aracılığıyla kimlik bilgilerini değiştirin:
curl -s -X POST https://compeller.ai/api/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","password":"..."}'

Eksik veya geçersiz bir belirteç, MCP istemcilerinin kullanıcıdan kimlik bilgilerini isteyebilmesi için bir JSON-RPC hatası olarak değil, "API token required." / "Invalid API token." mesajıyla bir araç hatası (isError: true) olarak yüzeye çıkar.

JSON-RPC yöntemleri

YöntemAmaçHTTP sonucu
initializeYetenek el sıkışması. protocolVersion, serverInfo, capabilities döndürür.200 JSON-RPC sonucu
notifications/initializedİstemci onayı. Yanıt gövdesi yok.204
tools/listHer aracı şema + açıklama ile listeler.200 JSON-RPC sonucu
tools/callBir aracı çağırır. params = {name, arguments}.200 JSON-RPC sonucu (araç hataları {isError: true, content: [...]} olarak geri döner)
pingİşlem yapmayan canlı tutma.200 JSON-RPC result: {}

Bilinmeyen yöntemler JSON-RPC hatası -32601 Method not found döndürür. Bilinmeyen araç adları -32602 Unknown tool döndürür. Hatalı biçimlendirilmiş bir JSON gövdesi -32700 Parse error döndürür. Eksik / yanlış jsonrpc veya eksik method, -32600 Invalid Request döndürür.

Araçlar

Tüm araçlar, text alanı JSON biçimli yapılandırılmış çıktı olan type: text türünde tek bir content girişi döndürür. Başarısızlık durumunda, aynı yanıt şekli isError: true ve content[0].text içinde insan tarafından okunabilir bir hata mesajıyla döndürülür — asla bir JSON-RPC error olarak değil.

Keşif (kimlik doğrulama yok)

AraçGirdilerDöndürdükleri
get_capabilitiesproductName, version, capabilities[], spec_url, enums (styles, target_platforms, aspect_ratios), auth, media_limits, rate_limits
get_pricingid, name, monthlyUsd, features[] ile plans[]
list_stylesid, name ile styles[] (id, create_compel / create_compel_from_music'ün style için kabul ettiği tam değerdir)

Medya ve müzik (aksi belirtilmedikçe kimlik doğrulama gerekli)

AraçGerekliİsteğe bağlıDöndürdükleri
search_musicquerylimitcreate_compel_from_music için uygun genel müzik arama sonuçları. Kimlik doğrulama gerekmez.
upload_medianame, mime_type, typePOST /api/v1/media'ü işaret eden yükleme talimatları
search_mediatype (audio/image/video/text), limit (≤100, varsayılan 20), offsetmedia[], paging

Zorlamalar (kimlik doğrulama gerekli)

AraçGerekliİsteğe bağlıDöndürdükleri
create_compel_from_musictrack_idtitle, style, target_platform, aspect_ratio, artist_contextcompel_id, status, next_action
create_compeltitle, primary_media_idstyle, target_platform, aspect_ratio, artist_contextcompel_id, status: QUEUED
get_compelcompel_idcompel_id, title, status, progress_percent, stage, rendering_id, created_at, human_url, next_action
start_rendercompel_idZorlama hazır olduğunda son işlemeyi başlatır; durumu ve sonraki eylemi döndürür.
cancel_compelcompel_idDevam eden bir zorlamayı iptal eder (idempotent — zaten İPTAL EDİLDİ başarılı olur); compel_id, status: CANCELLED, stage döndürür.
list_compelslimit (≤100), offsetcompels[], paging
search_compelsquerylimitcompels[], count

style, target_platform ve aspect_ratio, araç şemalarındaki enum ile kısıtlanmıştır (bkz. get_capabilities.enums); style değerleri doğrudan list_styles'den gelir.

Hesap (kimlik doğrulama gerekli)

AraçGirdilerDöndürdükleri
get_account_creditsplan, minutes_remaining, free_minutes_remaining, paid_minutes_remaining, minutes_total, quota_exceeded, api_eligible, billing_url — maliyet bilincine sahip kararlar vermek için pahalı bir işlemeden önce çağırın.

İşlemeler (kimlik doğrulama gerekli)

AraçGerekliDöndürdükleri
list_renderingscompel_idcompel_id, rendering_id, status, download_url ile renderings[]
get_renderingrendering_idrendering_id, compel_id, status, download_url

download_url, GET /api/v1/renderings/{id}/download'i işaret eder (HTTP Range'i destekler). Tamamlanan zorlama/işleme yanıtları ayrıca, ajanların kullanıcılara zorlamayı canlı bir performans sistemi olarak nasıl deneyimleyeceklerini söyleyebilmesi için ücretsiz REACT indirmesi (https://compeller.ai/download/desktop) ve daha fazla bilgi URL'si (https://compeller.ai/react) içeren bir react devri içerir.

Web kancaları (kimlik doğrulama gerekli)

Compeller ile entegre olan ajanlar, get_compel'i yoklamak yerine zorlama yaşam döngüsü olaylarının imzalı anlık bildirimleri için kendi kendine kaydolabilir. Bir zorlamanın işlenebilir olduğu anı öğrenmek (ardından start_render'i çağırın) için compel.ready'e abone olun; compel.completed / compel.failed terminal olaylardır.

AraçGerekliİsteğe bağlıDöndürdükleri
register_webhookurl (HTTPS, ≤2048 karakter)events[] — varsayılan ["*"]; bilinen değerler: *, compel.ready, compel.completed, compel.failedwebhook_id, url, events, secret (tam olarak bir kez döndürülür), active, created_at
list_webhookswebhooks[]webhook_id, url, events, active, created_at, updated_at. Sırlar bu araç tarafından asla döndürülmez.
update_webhookwebhook_idurl, events[], active — en az biriwebhook_id, url, events, active, created_at, updated_at. Sırlar asla döndürülmez; bunun için rotate_webhook_secret kullanın.
delete_webhookwebhook_idwebhook_id, deleted: true
test_webhook_deliverywebhook_idwebhook_id, event_id, event_type: "webhook.test", delivered, response_status?, response_body_preview?, latency_ms, error?. Senkron — araç, entegratörün uç noktasının yanıt vermesini bekler (maks 5sn). Sırlar asla döndürülmez.
rotate_webhook_secretwebhook_idwebhook_id, url, events, active, secret (yeni — tam olarak bir kez döndürülür), created_at, updated_at. Eski sır hemen geçersiz kılınır.

Bilinmeyen olay adları sessizce * joker karakterine daraltılır; bu, POST /api/v1/webhooks'i yansıtır, böylece bir ajan asla işlem yapmayan bir abonelik oluşturmaz.

Teslimat en az bir kezdir. Her olay hemen denenir ve uç noktanız erişilemezse veya 2xx olmayan bir yanıt döndürürse, geri çekilme ile yeniden denenir — toplamda 6 denemeye kadar (hemen, ardından 1dk, 5dk, 30dk, 2s, 6s sonra). Her deneme aynı X-Compeller-Event-Id ve bayt olarak aynı imzalı gövdeyi taşır, bu nedenle bu kimlik üzerinde tekilleştirme yapın. Tüm denemeler tükenirse olay düşürülür; get_compel aracılığıyla mutabakat sağlayın.

register_webhook, dahili altyapıyı işaret eden hedefleri bir araç hatasıyla reddeder: geri döngü, RFC1918 özel aralıkları, bağlantı yerel (169.254.169.254 gibi bulut meta veri IP'leri dahil), IPv6 ULA, CGNAT, çok noktaya yayın, belirtilmemiş adres ve .local / .internal / .localhost ile biten ana bilgisayar adları. Aynı kontrol, teslimat sırasında her denemede çözümlenen DNS'e karşı yeniden çalıştırılır, bu nedenle kayıttan sonra engellenen bir IP'ye yeniden bağlanan bir ana bilgisayar adı o deneme için atlanır (günlüğe kaydedilir); engellenmeye devam ederse yeniden deneme bütçesini tüketir ve ardından düşürülür.

test_webhook_delivery, bir HMAC-SHA256 imzasıyla sentetik bir webhook.test olayı gönderir ve uç noktanın yanıtını senkron olarak bekler. Uç noktanın abone olunan events'ini yok sayar (her zaman teslim edilir) ve gerçek teslimatlarla aynı URL güvenlik kontrolünü uygular. 2xx olmayan bir yanıt delivered: false olarak yüzeye çıkar ancak MCP çağrısının kendisi yine de başarıyla döner — sonuç yüktür.

update_webhook, url, events, active'ten herhangi birini kabul eder (en az biri). URL doğrulaması register_webhook'ü yansıtır. Sırlar bu araç tarafından asla döndürülmez.

rotate_webhook_secret, yeni bir 64 karakterlik onaltılık imzalama sırrı oluşturur, tam olarak bir kez döndürür ve önceki sırrı hemen geçersiz kılar. Bir sonraki gerçek teslimattan önce alındığında yeni sırrı saklayın.

Her teslimat, REST yoluyla tam olarak aynı şekilde imzalanır — tam zarf ve başlık sözleşmesi için openapi.yaml'nın Webhooks bölümüne bakın.

Örnek oturum

# 1. Handshake
curl -s https://compeller.ai/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'

# 2. List tools
curl -s https://compeller.ai/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. Register a webhook (auth required)
curl -s https://compeller.ai/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <api-token>' \
  -d '{
        "jsonrpc":"2.0",
        "id":3,
        "method":"tools/call",
        "params":{
          "name":"register_webhook",
          "arguments":{
            "url":"https://hooks.my-agent.io/compeller",
            "events":["compel.completed","compel.failed"]
          }
        }
      }'
  1. adıma verilen yanıt, webhook_id, secret vb. içeren bir JSON belgesi olan content[0].text'ü içeren bir JSON-RPC result'dir. secret'i hemen saklayın; sunucu onu bir daha döndürmez.

Hata kodları

KodAnlamıNedeni
-32700Ayrıştırma hatasıGövde geçerli JSON değil
-32600Geçersiz İstekEksik/yanlış jsonrpc, eksik method, boş gövde
-32601Yöntem bulunamadıBilinmeyen JSON-RPC yöntemi
-32602Geçersiz parametrelerBilinmeyen araç, eksik araç name, hatalı params şekli
-32603Dahili hataİşlenmeyen istisna (sunucu tarafında günlüğe kaydedilir)

Araç düzeyindeki hatalar (doğrulama, kimlik doğrulama, bulunamadı), başarılı bir JSON-RPC yanıtı içinde {result: {isError: true, content: [{type: "text", text: "..."}]}} olarak döndürülür. Bu MCP kuralı gereğidir — LLM'nin hatayı olduğu gibi görmesini ve yüzeye çıkarmasını sağlar. Ajan ses karar ağacı: kullanıcı MP3/WAV/FLAC sağlarsa, upload_media ardından create_compel kullanın; kullanıcı yalnızca bir şarkı/sanatçı dizesi sağlarsa, search_music ardından create_compel_from_music kullanın; açıkça oluşturulmuş test sesi istenmedikçe bir ton sentezlemeyin.