Skip to main content
Bir uygulama, tuval olmadan tek tıklık çalıştırmalar için paketlenmiş bir iş akışıdır. Donanımınızda dört şey tutan bir dizindir: Paketler ComfyUI’nin kullanıcı dizini altında <user>/comfyui-mcp-panel/apps/<app-id>/ adresinde yaşar — kasıtlı olarak iş akışları dizini değildir; böylece gizli bir uygulama iş akışı tarayıcısında hiç görünmez.
Uygulamaların kendi katmanı olarak var olmasının nedeni: tuval, zaten güvendiğiniz bir iş akışını çalıştırmak için yanlış arayüzdür. Beş etiketli alanlı bir form doğrusudur ve bir telefonun ya da bir ajanın sürebildiği tek arayüzdür.
Tek bir depolama ve çalıştırma uygulaması vardır — panel paketinin HTTP rotaları (/comfyui_mcp_panel/apps/*). Masaüstü paneli, mobil Uygulamalar sekmesi ve apps_* MCP araçlarının hepsi onun istemcisidir; böylece bir uygulama nereden başlatırsanız başlatın özdeş davranır.

Gereksinimler

Uygulamaları panel paketi (comfyui-mcp-panel) sunar, tek başına MCP sunucusu değil. ComfyUI’nizdeki paket özellikten önceyse apps with action:"list" açık bir “the panel pack on this ComfyUI predates the Apps feature” ile başarısız olur — paketi güncelleyin ve ComfyUI’yi yeniden başlatın.

Bir iş akışını uygulamaya dönüştürmek

Panelde Uygulamalar araç çubuğu düğmesi (Civitai’nin yanında) uygulama ızgarasını açar. Açık iş akışını dönüştürmek üç şey yapar:
  1. İş akışı zaten bir tane taşıyorsa ComfyUI APP kipi yapılandırmasını içe aktarır, aksi halde girişleri ve çıkışları sezgisel seçer (istem widget’ları, seed’ler, örnekleyici ayarları; çıkış olarak SaveImage sınıfı düğümler). İçe aktarılan APP kipi girişleri her düğüm türünde onurlandırılır; böylece özel düğüm uç noktaları dönüşümden sağ çıkar.
  2. Bağımlılıkları tarar — grafiğin ihtiyaç duyduğu modeller ve özel düğüm paketleri — manifest.deps içine.
  3. İstemi API biçiminde anlık görüntüler. Dönüşüm anındaki widget değerleri her girişin form default değeri olur.
appMode.inputs içindeki her giriş nodeId, widget, label ve text, number, combo, toggle, image ya da model türünde bir kind taşır; combo’lar ayrıca choices taşır. Çalıştırma formunun masaüstünde ve mobilde bundan çizdiği şey budur.

İş akışını gizlemek

hideWorkflow workflow.json’u paketten tamamen düşürür; böylece grafik, uygulamayı çalıştırana ya da kurana verilmez.
hideWorkflow gizlemedir, asla güvenlik değildir. API istemi uygulamayı ComfyUI’nin kendi /history yolu üzerinden çalıştıran herkese hâlâ görünürdür ve uygulamanın kurduğu modeller ile özel düğümler grafiğin bağımlılıklarını açığa vurur. Bunu “iş akışı tarayıcımı kalabalıklaştırma” olarak görün, sızdırmayı göze alamayacağınız bir grafik için koruma olarak değil.

Bir uygulamayı çalıştırmak

Bir çalıştırma form değerlerinizi saklanan anlık görüntüye yamalar ve sonucu kuyruğa alır. Yama anahtarları "<nodeId>.<widget>" biçimindedir — örneğin {"6.text": "a cat", "3.seed": 42}. Anahtar yalnızca ilk noktada bölünür; böylece kendilerinde nokta bulunan widget adları (LoRA yığınları, lora_1.model) bozulmadan kalır. Yamalama katıdır: anlık görüntüde var olmayan bir düğümü ya da girişi adresleyen bir anahtar sessiz bir atlama değil kesin bir hatadır. Bir ıskalama, bildirgenin anlık görüntüden saptığı anlamına gelir ve yüksek sesle başarısız olmak bayat değerlerle çalışmaktan iyidir. Atladığınız girişler dönüşüm anındaki varsayılanlarını korur. Çalıştırma bir prompt_id döndürür; durumu yoklayın (pendingrunningdone ya da ComfyUI ondan hiç haberdar olmadıysa unknown) ve her çıkış düğümü altında gruplanan çıktılar için yoklayın.

Bir RunPod podunda çalıştırmak

Panelin RunPod’da çalıştır yolu aynı yama motorunu kuru kipte yeniden kullanır: panel yamalanmış istemi yerelde kuyruğa almadan ister, sabitlenmiş bağımlılıkları poda iter ve istemi orada kuyruğa alır.
Bir görsel girişi olan uygulamalar bir poda çalıştırmayı reddeder. Yüklemeler yerel ComfyUI’ye iner, pod oraya ulaşamaz — bu yüzden panel eksik bir dosyada başarısız olacak bir çalıştırmayı kuyruğa almak yerine dürüstçe geri çevirir.

Yayımla ve Keşfet

Panelin Keşfet sekmesi herkese açık bir kayıt defteridir (D1 + R2 destekli bir Cloudflare Worker) yükselen / yeni / en çok yıldızlı listeler ve aramayla. Yükselen, 7 günlük stars * 3 + runs’tır. Yayımlamak paketi — bildirge, istem, gizli değilse iş akışı, küçük resim — sha256 anahtarlı bir üretici kimliği altına yükler. Keşfet’ten kurmak önce bir bağımlılık onayı iletişim kutusu gösterir: bir uygulamanın deps değerleri bildirilir, asla sessizce kurulmaz. Bir karta dokundunuz diye donanımınıza hiçbir şey bir model ya da özel düğüm paketi kurmaz.
pricing_json ve hosted_only bildirge şemasında vardır ve değişmeden geçirilir, ama hiçbir şey onları okumaz. Yalnızca tasarım aşamasındaki bir ticarileştirme evresi için yer ayırırlar — bugün ücretli uygulama davranışı yoktur.

apps MCP aracı

Beş eylemli bir araç, hepsi panelin Apps API’si üzerinde ince vekillerdir. Tuvalsiz yüzeydir: mobil uygulamanın ve doğrudan sürülen bir ajanın kullandığı. Orkestratörün call_tool izin listesindedir — list/get/ run_status salt okunurdur ve run, enqueue_workflow ile aynı risk duruşunu taşır (kullanıcının açıkça dokunduğu bir işi kuyruğa alır).

Parametreler

action şemada gereken tek parametredir — her eylem farklı bir alt kümeye ihtiyaç duyar, bu yüzden geri kalanı şemada isteğe bağlıdır ve varlıkları eksik alanı adlandıran işleyici tarafından zorlanır. prompt_id biçim kısıtı iki kez zorlanır — şema sınırında ve yine işleyicinin içinde — çünkü kimlik bir URL yoluna yerleştirilir. Dolaşma biçimli bir “prompt id” bir çağıran şemayı atlatırsa bile URL kurucusuna asla ulaşmamalıdır. Üretilen araç başına şema başvurusu için bkz. Uygulama araçları.

Kayıt defterinden içe aktarmak

action:"import" kayıt defteri paketini sunucu tarafında getirir ve onu yerel bir uygulama olarak oluşturur. Kayıt defteri kimliği yerel kimlik olur; böylece zaten sahip olduğunuz bir uygulamayı yeniden içe aktarmak onu çoğaltmak yerine bir kimlik çatışması bildirir. Küçük resim ayrı bir kayıt defteri uç noktasında yaşar ve ayrı ayrı getirilip iletilir; böylece kurulan bir uygulama kart görselini korur. Bağımlılıklar kurulmaz. Araç bildirgenin deps değerini döndürür; böylece çağıran onları bildirebilir ve kullanıcının onları kasıtlı kurmasına izin verebilir.
registry_url bir izin listesidir, serbest bir URL değil. Getirme sunucuda olur; bu yüzden rastgele bir URL bir SSRF ilkel öğesi olurdu — loopback ya da LAN adresleri ya da birine yönlendiren herkese açık bir URL. İşleten COMFYUI_MCP_REGISTRY_URLS (virgülle ayrılmış, geliştirme/ön üretim için) ile ekstra kökenleri izin listesine almadıkça yalnızca varsayılan herkese açık kayıt defteri kabul edilir. Yönlendirmeler izlenmek yerine açıkça reddedilir.

Sınırlar ve doğrulama

Gerçekten çarpabileceğiniz şeyler: Fark edeceğiniz doğrulama:
  • Uygulama kimlikleri uuid olmalıdır. Başka her şey bir yol kurulmadan reddedilir ve çözümlenen paket yolu uygulamalar kökü altında kapsama için yeniden denetlenir.
  • Bir istem API biçiminde olmalıdır — sayısal düğüm kimliği anahtarları, her düğüm bir {class_type, inputs} nesnesi. UI biçimli grafikler reddedilir.
  • hideWorkflow ayarlı değilse bir UI iş akışı gerekir.
  • Zaten var olan bir uygulama oluşturmak üzerine yazma değil bir çatışmadır.
  • Kısmi bildirge güncellemeleri gerçekten kısmidir. Bir uygulamayı yayımlamak ya da gizlemek yalnızca kendi alanlarını gönderir ve adınızı, açıklamanızı ya da appMode’unuzu silmez.
  • Bilinmeyen bildirge anahtarları düşürülür, ayrılmış geçiş alanları dışında; böylece daha eski bir donanım anlamadığı alanlarda başarısız olmak yerine onları yok sayar.
Uygulamalar kökü COMFYUI_MCP_APPS_DIR ile geçersiz kılınabilir (öncelikle testler için); varsayılan olarak ComfyUI’nin kendi kullanıcı dizininden türetilir, böylece taşınabilir kurulumlardan sağ çıkar.

Telefonda

Mobil uygulama gerçek bir Uygulamalar sekmesi taşır — bir önizleme değil. İki yarısı vardır:
  • Uygulamalarım — donanımınıza kurulu uygulamalar, köprü üzerinden action:"list" ile listelenir. Birine dokunmak üretilmiş bir çalıştırma formu açar, action:"run" ile kuyruğa alır ve çıktılar çizilene kadar her 2 sn’de (30 dakikada sınırlı) action:"run_status" yoklar.
  • Keşfet — herkese açık kayıt defteri, telefondan doğrudan HTTPS üzerinden vurulur (köprü sıçraması yok, böylece eşleştirmeden önce göz atma çalışır). Kurmak diğer yönden gider: donanım paketi kendisi action:"import" ile getirir.
Bu, telefonun sohbetin yapamayacağı en net şeydir — gerçek girişlerle, hiçbir yerde tuval olmadan gerçek bir iş akışı çalıştırmak.

Ayrıca bakın