Skycloak

resmi

Skycloak yönetilen Keycloak için Model Context Protocol sunucusu. Kümeleri, realm'leri, uygulamaları, SSO'yu ve kullanıcıları herhangi bir MCP istemcisinden yönetin.

Skycloak MCP ile neler yapabilirsiniz?

  • Küme yükseltme incelemesi — Hangi Keycloak kümelerinin yükseltmelerde geride kaldığını sorun ve list_cluster_upgrades ile get_cluster_upgrade_path aracılığıyla önerilen ilerleme yolunu alın.

  • Realm sağlama — create_realm ve create_identity_provider kullanarak, yapılandırılmış kimlik sağlayıcılarıyla belirli bir kümede bir staging realm oluşturun.

  • Kullanıcı etkinlik denetimi — Bir realm'e yakın zamanda kimin eklendiğini bulun ve list_realm_users ile query_events kullanarak yönetici değişikliklerini inceleyin.

  • SIEM entegrasyon kurulumu — Yönetici olaylarını harici bir webhook'a ileten bir hedef yapılandırın; create_siem_destination ve test_siem_destination kullanın.

  • Tema içerik değişimi — Özel bir temanın arşivini, atamalarını kaybetmeden yerinde güncelleyin; update_theme_content ile onay alarak.

  • Özel alan adı yönlendirmesi — Özel bir alan adı ekleyin, oluşturulacak DNS kayıtlarını alın, doğrulayın ve trafiği bir realm'e yönlendirin; create_domain ve verify_domain kullanın.

Dokümantasyon

skycloak-mcp

Smithery

Skycloak (yönetilen Keycloak) için resmi Model Context Protocol sunucusu: kümelerinizi, realm'lerinizi, uygulamalarınızı ve SSO'nuzu herhangi bir MCP istemcisinden (Claude Desktop, Claude Code, Cursor) yönetin.

Durum: erken sürüm. Araç kapsamı büyüyor; nelerin mevcut olduğu için değişiklik günlüğüne bakın.

Hızlı başlangıç

claude mcp add --transport http skycloak https://mcp.skycloak.io

API anahtarı yok, istemci kimliği yok, yapılandırma yok. Tarayıcınız açılır, Skycloak'a giriş yaparsınız ve araçlar görünür. Streamable HTTP konuşan herhangi bir MCP istemcisi aynı şekilde çalışır: yalnızca URL'yi verin, başka bir şey vermeyin.

Sonra bir şey isteyin:

  • "Keycloak kümelerimden hangileri yükseltmelerde geride?"
  • "AB kümesinde Google ve GitHub girişi olan bir staging realm oluştur."
  • "Geçen hafta production realm'ına kim eklendi?"
  • "Yönetici olaylarını Datadog webhook'umuza ileten bir SIEM hedefi kur."

Kimlik doğrulama ve güvenlik

  • Barındırılan HTTP, OAuth ile (yapılandırılacak kimlik bilgisi yok). İstemcinizi https://mcp.skycloak.io adresine başlık olmadan yönlendirin. Sunucu, /.well-known/oauth-protected-resource adresindeki RFC 9728 meta verilerine işaret eden 401 ile yanıt verir; istemci, Skycloak giriş realm'ına karşı tarayıcı yetkilendirme kodu akışını çalıştırır ve geri aldığı erişim token'ı, oturumun üzerinde çalıştığı kısa ömürlü, çalışma alanı kapsamlı bir API anahtarıyla değiştirilir. Anahtar bir saat sürer ve otomatik olarak yenilenir. İstemci yapılandırmanızda hiçbir şey saklanmaz.
  • Barındırılan HTTP, API anahtarı ile. Skycloak panosunda bir anahtar oluşturun ve bunu Authorization: Bearer <key> (veya API-Key: <key>) olarak gönderin. Her istek kendi kimlik bilgisini taşır ve yalnızca o kimlik bilgisinin çalışma alanı olarak hareket eder. Sunucu oturum durumu tutmaz, bu nedenle bir istek asla başka bir arayanın durumunu devralmaz. Anahtarlar kullanımdan önce doğrulanmaz: Skycloak API'si yetkilidir, bu nedenle geçersiz bir anahtar, bağlantı zamanında değil, ilk araç çağrısında 401 olarak yüzeye çıkar.
  • Araçlar rolünüzle eşleşir. OAuth üzerinden araç listesi, oturumun kapsamlarının izin verdiği şekilde kırpılır; böylece salt okunur bir çalışma alanı üyesine, 403 yanıtını verecek yazma araçları gösterilmez. API anahtarıyla tüm yüzey kaydedilir, çünkü bir anahtarın kapsamları sunucu tarafından görünmez ve yetkisiz bir çağrı, API'den 403 olarak yüzeye çıkar.
  • Yerel stdio. skycloak-mcp init komutunu çalıştırın ve tarayıcınızda onaylayın (OAuth 2.0 cihaz yetkilendirme akışı). Çalışma alanı kapsamlı bir API anahtarı üretir, bunu işletim sistemi anahtarlığınızda saklar ve varsayılan çalışma alanınızı otomatik olarak algılar (başka birini seçmek için --workspace <id> komutunu iletin). skycloak-mcp logout saklanan anahtarı kaldırır.
  • Başsız / CI. Tarayıcıyı tamamen atlamak için SKYCLOAK_API_KEY ortam değişkenini ayarlayın (Skycloak panosunda bir anahtar oluşturun). Her zaman anahtarlığa göre önceliklidir.
  • Yazmalar, bir bayrakla değil, kimlik bilginizle sınırlandırılır. https://mcp.skycloak.io adresindeki barındırılan sunucu yazma özellikli çalışır ve gerçekte değiştirebilecekleriniz, anahtarınızın kapsamları ve çalışma alanı rolünüzle sınırlıdır: salt okunur bir üye, araç listesi ne derse desin hiçbir şeyi değiştiremez. Bir oturum için salt okunur bir araç yüzeyini zorlamak üzere URL'ye ?readonly=true ekleyin. Yerel ikili dosya tam tersi şekilde çalışır ve --allow-writes ile başlatılmadıkça yazma araçlarını kaydetmez.
  • Küme kimlik bilgileri isteğe bağlıdır. get_cluster_credentials, bir kümenin Keycloak yönetici kimlik bilgilerini döndürür; anahtarı elinde tutan bir asistan bunları görür, bu nedenle init varsayılan olarak bu kapsamı istemez. Bunu taşıyan bir anahtar kullanın: panoda bir tane oluşturun veya stdio üzerinden skycloak-mcp init --allow-credentials ile giriş yapın. Bu olmadan araç, her iki yolu da açıklayan bir 403 döndürür.
  • Yıkıcı araçlar onay gerektirir: örneğin bir realm'ı silmek, açık bir confirm=true bağımsız değişkeni gerektirir.
  • İstekler Skycloak planınıza göre hız sınırına tabidir; bir 429 yanıtında sunucu Retry-After değerini yüzeye çıkarır.

Araçlar

137 araç: 60 salt okunur ve 77 yazma. Salt okunur araçlar her zaman kullanılabilir. Barındırılan sunucuda yazma araçları da kaydedilir ve kimlik bilginizin kapsamlarıyla sınırlandırılır; yerel ikili dosya bunları yalnızca --allow-writes ile başlatıldığında kaydeder.

Araç adları, aşağıdaki tablonun atladığı bir skycloak_ öneki taşır; bu nedenle list_clusters, istemcinizde skycloak_list_clusters olarak görünür.

AlanSalt okunurYazma (--allow-writes)
Kümelerlist_clusters, get_cluster, list_cluster_locations, list_cluster_types, list_cluster_features, list_cluster_versions, list_cluster_upgrades, get_cluster_upgrade_path, get_cluster_credentials, get_cluster_insights, get_cluster_maintenance_windowcreate_cluster, update_cluster, delete_cluster, cancel_cluster_upgrade, restart_cluster_instances, set_cluster_maintenance_window, delete_cluster_maintenance_window
Uç güvenliğiget_cluster_security, list_cluster_captcha_domainsupdate_cluster_security, add_cluster_captcha_domain, remove_cluster_captcha_domain
Realm'lerlist_realms, get_realmcreate_realm, update_realm, delete_realm
Uygulamalarlist_applications, get_application, list_application_roles, list_application_sessionscreate_application, update_application, delete_application, assign_application_role, remove_application_role, rotate_application_secret
Kimlik sağlayıcılarılist_identity_providers, get_identity_provider, list_identity_provider_templates, discover_oidccreate_identity_provider (OIDC), update_identity_provider, delete_identity_provider, test_identity_provider
Kullanıcılar, roller ve gruplarlist_realm_users, get_realm_user, list_realm_roles, get_realm_role, list_realm_groups, get_realm_group, list_realm_group_members, list_user_roles, list_user_groupscreate_realm_user, update_realm_user, delete_realm_user, create_realm_role, update_realm_role, delete_realm_role, create_realm_group, update_realm_group, delete_realm_group, assign_realm_user_role, remove_realm_user_role, add_realm_user_to_group, remove_realm_user_from_group
Özel alan adlarılist_domains, get_domain, list_domain_routes, get_domain_routecreate_domain, verify_domain, delete_domain, create_domain_route, update_domain_route, delete_domain_route
Marka ve temalarlist_themes, get_theme, get_theme_assignment, get_client_theme_assignment, get_login_branding, get_email_branding, download_theme_content, get_theme_settingsset_theme_assignment, set_client_theme_assignment, update_theme, update_theme_content, update_theme_settings, delete_theme, upsert_login_branding, delete_login_branding, upsert_email_branding, delete_email_branding
Uzantılarlist_extensions, list_cluster_extensionsinstall_extension, upgrade_extension, update_extension, uninstall_extension, delete_extension
SMTPget_smtpupsert_smtp, delete_smtp, test_smtp
Dışa aktarmalar ve günlüklerlist_exports, get_export, get_logs, get_security_logs, query_eventscreate_export, delete_export, export_cluster_events
Realm içe ve dışa aktarmaget_realm_export, get_realm_importcreate_realm_export, create_realm_import, create_realm_import_upload_url
SIEMlist_siem_destinations, get_siem_destinationcreate_siem_destination, update_siem_destination, delete_siem_destination, test_siem_destination
Webhook'larlist_webhook_event_types, list_webhook_subscriptions, get_webhook_subscriptioncreate_webhook_subscription, update_webhook_subscription, delete_webhook_subscription, test_webhook_subscription

Kurallar: yıkıcı araçlar (delete_*, uninstall_extension, cancel_cluster_upgrade, update_theme_content, update_theme_settings, restart_cluster_instances) confirm=true gerektirir. update_theme_settings, çalışma alanı için exact_theme_names özelliğini açar veya kapatır; arayanın API anahtarı bir çalışma alanı sahibi veya yöneticisi için üretilmiş olmalıdır, aksi takdirde themes:write ile bile 403 alır. Açmak, mevcut temaları arka planda tam olarak sunulan adlarına taşır; içeriği tam adı altında değiştirilen bir tema, restart_cluster_instances o kümenin Keycloak örneklerini yenileyene kadar get_theme/list_themes/update_theme_content öğelerinden restart_required: true bildirir. Yeniden başlatma, hemen uygulanmak yerine kümenin bakım penceresine ertelenebilir; bu, deferred: true ve bilindiğinde next_window olarak bildirilir. create_cluster eşzamansızdır: küme available durumuna gelene kadar get_cluster öğesini yoklayın. create_domain, müşterinin oluşturması gereken DNS kayıtlarını döndürür; verify_domain bir DNS kontrolünü tetikler. set_theme_assignment, Keycloak tema türü başına özel bir temayı etkinleştirir (boş dize, yerleşik varsayılana sıfırlar). update_theme_content, bir temanın arşivini yerinde değiştirir (content_base64 içinde base64 ZIP veya Keycloakify JAR), temanın kimliğini, adını ve realm ile uygulama atamalarını korur; böylece bir temayı düzenlemek artık silip yeniden yüklemek anlamına gelmez; confirm=true gerektirir çünkü üzerine yazılan arşiv kurtarılamaz ve update_theme yalnızca adı, açıklamayı ve sürümü değiştirir. Bu çağrının nasıl yapıldığı için docs/theme-content-update.md bölümüne bakın. update_cluster_security, CAPTCHA ayarlarına dokunmaz. Realm içe/dışa aktarma, bir realm'ın yapılandırmasını taşır ve tüm kümenin veritabanını döken create_export öğesinden ayrıdır: her ikisi de eşzamansızdır ve realm arşivi her zaman şifrelenir, bu nedenle dışa aktarmak için kullanılan parola, tekrar içe aktarmak için gereklidir. Bir realm, mevcut bir dışa aktarmadan (source_export_id) veya yüklenmiş bir arşivden (create_realm_import_upload_url, PUT, ardından upload_s3_key) doğrudan içe aktarılabilir; içe aktarma bir realm oluşturur ve üzerine yazmak yerine ad çakışmasını reddeder ve kullanıcıları ve kimlik bilgilerini beraberinde getirdiği için confirm=true gerektirir.

İstemler

Sekiz istem, bu araç yüzeyine bir başlangıç noktası verir. İstemciler bunları eğik çizgi komutları veya önerilen eylemler olarak yüzeye çıkarır; her biri bağımsız değişkenler (realm, küme, zaman penceresi) alır ve modeli doğru araçlardan doğru sırayla geçirir.

İstemNe yapar
audit_self_registrationBir küme veya tümü genelinde kendi kendine kaydolmaya hâlâ izin veren her realm'ı bulun
review_upgradesKeycloak sürümünde geride kalan kümeleri tespit edin ve yükseltme yolunu ortaya koyun
triage_failed_loginsBir realm için son başarısız girişleri çekin ve kaynak IP'ye göre gruplayın
review_identity_providersBir realm'ın SSO bağlantılarını listeleyin ve belirli birinin etkin olup olmadığını kontrol edin
review_admin_changesBir realm'da son zamanlarda kimin neyi değiştirdiğini, giriş ve güvenlik ayarlarına odaklanarak gösterin
provision_environmentBir küme oluşturun, bir realm ekleyin ve bir kimlik sağlayıcı bağlayın; her adımı onaylayın
set_up_custom_domainÖzel bir alan adı ekleyin, tam DNS kayıtlarını geri verin, doğrulayın ve bir realm'a yönlendirin
rotate_client_secretBir uygulamanın istemci sırrını, etki alanı önceden açıklanmış şekilde yeniden oluşturun

İstemler, adlandırdıkları araçlarla aynı şekilde sınırlandırılır: değişiklik yapan üçü, yalnızca başvurdukları yazma araçlarını çağırabilecek oturumlara sunulur ve talimatları, modelin herhangi bir şeyi değiştirmeden önce sizinle onay almasını söyler. Yıkıcı araçlardaki confirm=true gereksinimi yine de üstüne eklenir.

Beceriler

Bir istem bir başlangıç noktasıyken, bir beceri modelin istek üzerine yüklediği tam bir operasyonel oyun kitabıdır. Sunucu, taslak SEP-2640 Beceriler uzantısı üzerinden sunulan dört beceriyle birlikte gelir: yeteneklerinde io.modelcontextprotocol/skills bildirir, skills/list ve skills/get yanıtlarını verir ve her SKILL.md öğesini, liste girişinde sha256 özetiyle birlikte skill://<name>/SKILL.md adresinde sıradan bir kaynak olarak sunar. OpenAI'nin eklenti dizini, becerileri tam olarak bu biçimde içe aktarır.

BeceriNe kodladığı
auth-incident-triage"Kullanıcılar giriş yapamıyor" triyajı: platform kesintilerini saldırılardan ve yapılandırma değişikliklerinden ayırın; olayları, WAF günlüklerini ve küme sağlığını kullanın. Salt okunur
enterprise-sso-rolloutKurumsal bir IdP'yi uçtan uca bir realm'e bağlayın: veren doğrulaması, yukarı akış uygulama kaydı, broker yapılandırması, bağlantı testi ve gerçek giriş olaylarına karşı doğrulama
keycloak-migration-doctorBir Keycloak dışa aktarma, içe aktarma veya geçişini, desteğin gerçekte gördüğü engellere karşı ön kontrol edin (script politikaları, eski /auth yolu, kısmi dışa aktarma beklentileri) ve başarısız bir işi genel gösterge paneli bildirimi yerine gerçek error_message değerini okuyarak teşhis edin
keycloak-upgrade-readinessSürüm sapmasını değerlendirin, yeni Keycloak sürümünün neyi bozduğunu (uzantılar, temalar) belirleyin ve geri alma planı olarak bir dışa aktarma ile ortamlar arasında dağıtımı sıralayın

Beceriler, adlandırdıkları araçlarla aynı kapıya tabidir: yazma araçları etrafında oluşturulan üç iş akışı salt okunur oturumlardan alıkonur ve kapsamlı bir oturuma yalnızca gerçekte sahip olduğu araçların becerisi sunulur. Kaynaklar internal/tools/skills/ içinde, beceri başına bir dizin, standart Agent Skills biçiminde yaşar; böylece doğrudan yerel bir beceri dizinine kopyalanarak da çalışırlar.

Bağlanma

Barındırılan HTTP için en basit yol, hiç kimlik bilgisi gerektirmeyen OAuth'tur:

claude mcp add --transport http skycloak https://mcp.skycloak.io

İlk çağrı tarayıcınızı açar, Skycloak giriş sayfasında onaylarsınız ve araçlar görünür. Birden fazla çalışma alanına aitseniz, istediğinizi adlandırın:

claude mcp add --transport http skycloak "https://mcp.skycloak.io?workspace=<workspace-id>"

Aksi takdirde, Skycloak panosunda bir API anahtarı oluşturun ve MCP istemcinizi bunu bir taşıyıcı belirteci olarak gönderecek şekilde yapılandırın:

claude mcp add --transport http skycloak https://mcp.skycloak.io --header "Authorization: Bearer sk_sc_XXX"

Bu, .claude.json öğesine aşağıdakileri ekler:

{
  "mcpServers": {
    "skycloak": {
      "type": "http",
      "url": "https://mcp.skycloak.io",
      "headers": {
        "Authorization": "Bearer sk_sc_XXX"
      }
    }
  }
}

Yerel stdio için bir kez oturum açın, ardından istemcinizi skycloak-mcp run adresine yönlendirin:

skycloak-mcp init        # one-time browser sign-in; stores a key in your keychain

Claude Desktop / Cursor (yerel, stdio):

{
  "mcpServers": {
    "skycloak": {
      "command": "skycloak-mcp",
      "args": ["run", "--transport", "stdio"]
    }
  }
}

Claude Code:

claude mcp add skycloak -- skycloak-mcp run --transport stdio

Başsız / CI (tarayıcı yok) için init öğesini atlayın ve anahtarı bunun yerine iletin: yapılandırmaya "env": { "SKYCLOAK_API_KEY": "sk_sc_..." } ekleyin veya claude mcp add skycloak --env SKYCLOAK_API_KEY=sk_sc_... -- skycloak-mcp run --transport stdio.

Yalnızca değişiklik yapmayı düşündüğünüzde --allow-writes ekleyin (skycloak-mcp init --allow-writes ile oturum açın veya yazma kapsamlı bir anahtar kullanın).

Barındırılan bir HTTP URL'sine ?readonly=true ekleyerek yalnızca o HTTP oturumu için salt okunur araçları açığa çıkarın veya yazma özellikli araç yüzeyini istemek için ?readonly=false ekleyin. Sorgu parametresi varsayılan olarak false değerindedir, ancak yazma araçları yalnızca sunucu --allow-writes ile başlatıldığında kaydedilir.

Bir OAuth oturumunun hangi çalışma alanı üzerinde çalışacağını seçmek için ?workspace=<uuid> ekleyin. Yalnızca birden fazlasına aitseniz gereklidir; tek bir çalışma alanıyla sunucu sizin için onu seçer ve birkaçına aitseniz ve hiçbirini adlandırmazsanız, bağlantı bunları listeleyen bir mesajla başarısız olur.

HTTP taşımasını çalıştırma

skycloak-mcp run --transport http --http-addr :8080

Kendi kimlik bilgisine ihtiyaç duymaz: çağıranlar bunu istek başına sağlar, bu nedenle dağıtım sırasında hiçbir şey enjekte edilmez. GET /healthz ve GET /readyz kimlik doğrulamasız değildir ve yalnızca sürecin çalıştığını bildirir; Skycloak API'sini kasıtlı olarak yoklamazlar, bu nedenle yukarı akıştaki bir aksaklık her kopyanın yoklamasını aynı anda başarısız edemez. Sunucu oturum durumu tutmaz, bu nedenle kopyalar oturum yakınlığına ihtiyaç duymaz ve serbestçe ölçeklenebilir veya döndürülebilir. SIGTERM yeni bağlantıları durdurur ve devam eden çağrıları boşaltır.

OAuth yolu, varsayılan olarak ayarlanan SKYCLOAK_ISSUER ve SKYCLOAK_DASHBOARD_URL ayarlandığında her zaman açıktır. GET /.well-known/oauth-protected-resource daha sonra kimlik doğrulamasız olarak sunulur ve realm'i yetkilendirme sunucusu olarak adlandırır. resource değeri, ayarlandığında SKYCLOAK_PUBLIC_URL değerinden alınır ve aksi takdirde isteğin kendi Host ve şemasından alınır; bu nedenle bir girişin arkasındaki tek ana bilgisayarlı bir dağıtım ek yapılandırma gerektirmez. Şema, mevcut olduğunda X-Forwarded-Proto değerinden gelir ve aksi takdirde TLS yukarı akışta sonlandığı ve bir http:// tanımlayıcısı yayınlamak istemcinin bağlandığı URL ile eşleşmeyeceği için döngü geri ana bilgisayarı dışında her şey için https değerine varsayılan olarak ayarlanır. Girişiniz Host değerini yeniden yazıyorsa SKYCLOAK_PUBLIC_URL ayarlayın. Belge ayrıca openid profile email değerini scopes_supported olarak listeler ve WWW-Authenticate sorgusu bunları bir scope parametresi olarak tekrarlar; böylece bunlardan birini okuyan bir istemci realm'den bunları ister: openid gereklidir, çünkü belirteç değişimi panonun Keycloak'ın userinfo uç noktasını çağırmasını sağlar ve Keycloak, onsuz verilen bir belirteci reddeder. Onsuz gelen bir belirteç, başarılı olamayacak bir değişime taşınmak yerine doğrulamada bir 401 ve sorgu ile reddedilir; böylece daha önce bir yetki tutan bir istemci yeniden denemeyi bırakır ve tekrar oturum açar. Veren veya pano değişkenlerinden herhangi birini boşaltmak OAuth'u tamamen kapatır ve sunucu yalnızca bir API anahtarı için sorgu yapmaya geri döner.

OPENAI_APPS_CHALLENGE_TOKEN, OpenAI'nin eklenti dizini alan doğrulama belirtecini /.well-known/openai-apps-challenge adresinde düz metin olarak ve başka hiçbir şey olarak sunar. Ayarlanmazsa, yol kaydedilmez ve 404 döndürür.

Başlangıç, çözdüğü kablolamayı tek satırda günlüğe kaydeder (oauth=, issuer=, dashboard=, public_url=, endpoint=, allow_writes=), böylece yanlış yapılandırılmış bir dağıtım yeniden dağıtım olmadan fark edilebilir. OAuth yolunda reddedilen her istek, başarısız olan aşamayı (verify, exchange veya scopes), çağıranın aldığı durumu ve temel hatayı adlandıran tek bir satır günlüğe kaydeder. Bir doğrulama hatası, belirteci reddeden kontrolü ekler (expired, wrong_issuer, bad_signature, unknown_key_id, wrong_token_type, no_openid_scope vb.); bir değişim hatası, panonun durumunu ve çağrılan ana bilgisayarı ekler. Çağıran, doğrulandıktan sonra belirtecin konusu olarak görünür ve asla bir kimlik bilgisi olarak görünmez: erişim belirteci, Authorization başlığı ve basılan API anahtarı asla günlüğe kaydedilmez.

Yapılandırma

Ortam değişkeniVarsayılan
SKYCLOAK_API_KEYyok (stdio için isteğe bağlı; HTTP istemcileri bunun yerine API-Key başlıkları sağlar)
SKYCLOAK_ENDPOINThttps://api.skycloak.io
SKYCLOAK_API_VERSIONgeçerli API sürümü
SKYCLOAK_ISSUERhttps://login.app.skycloak.io/realms/skycloak (CLI oturum açma ve HTTP taşımasının belirteçleri doğruladığı yetkilendirme sunucusu)
SKYCLOAK_CLIENT_IDskycloak-mcp (yalnızca CLI cihaz akışı)
SKYCLOAK_DASHBOARD_URLhttps://app.skycloak.io (CLI anahtarlarını ve HTTP oturum anahtarlarını basar)
SKYCLOAK_PUBLIC_URLyok (her istekten türetilir; giriş Host değerini yeniden yazdığında ayarlayın)
OPENAI_APPS_CHALLENGE_TOKENOpenAI'nin eklenti dizini doğrulama belirtecini /.well-known/openai-apps-challenge adresinde sunar. Ayarlanmazsa, bu yol 404 döndürür.

Komutlar: init (tarayıcı oturum açma), run (sunma), logout (depolanan anahtarı kaldırma). init, --workspace <id>, --allow-writes, --allow-credentials ve --ttl-days (varsayılan 90) kabul eder.

BayrakVarsayılanAçıklama
--transportstdiostdio veya http
--http-addr:8080HTTP taşıması için dinleme adresi
--allow-writesfalsestdio için değiştiren araçları etkinleştirir ve readonly=false ile HTTP oturumlarının yazma araçlarını kaydetmesine izin verir

Geliştirme

make build      # build the server binary
make test       # unit tests
make run        # run on stdio for local testing
make inspector  # MCP Inspector against the local binary
make lint       # golangci-lint
make generate   # regenerate the API client from the OpenAPI spec

internal/apiclient altındaki API istemcisi, Skycloak OpenAPI belirtiminden oapi-codegen ile üretilir.

API ile senkronize kalma

internal/apiclient içindeki istemci, oapi-codegen ile internal/apiclient/openapi.yaml değerinden üretilir; yenilemek için make generate çalıştırın. Taahhüt edilen üretilen kod belirtimden saparsa CI başarısız olur. İstekler, Retry-After farkında geri tepme ile 429/5xx üzerinde yeniden denenir.

Dağıtım

Her etikette GitHub ikili dosyaları ve bir ghcr.io/sky-cloak/skycloak-mcp kapsayıcı görüntüsü olarak yayınlanır ve MCP Registry üzerinde io.skycloak/skycloak-mcp olarak yayınlanır. Çoğu kişinin ikisine de ihtiyacı yoktur: barındırılan sunucu kurulum gerektirmez.

Güvenlik

Lütfen güvenlik açıklarını özel olarak bildirin. SECURITY.md dosyasına bakın.

Katkıda Bulunanlar

Skycloak bünyesinde Guilliano Molaire, Neville Omangi ve Aphilas tarafından oluşturulmuştur. Depo geçmişi açıldığında sıkıştırıldığından, taahhüt günlüğü kimin ne yazdığını yansıtmaz.

Lisans

Apache-2.0. internal/apiclient/openapi.yaml içindeki OpenAPI açıklaması Skycloak platform API'sinden üretilmiştir ve (c) Skycloak'a aittir; istemcinin üretilebilmesi ve doğrulanabilmesi için buraya dahil edilmiştir. NOTICE dosyasına bakın.