Skycloak
resmiSkycloak 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_upgradesileget_cluster_upgrade_patharacılığıyla önerilen ilerleme yolunu alın. -
Realm sağlama —
create_realmvecreate_identity_providerkullanarak, 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_usersilequery_eventskullanarak 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_destinationvetest_siem_destinationkullanın. -
Tema içerik değişimi — Özel bir temanın arşivini, atamalarını kaybetmeden yerinde güncelleyin;
update_theme_contentile 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_domainveverify_domainkullanın.
Dokümantasyon
skycloak-mcp
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.ioadresine başlık olmadan yönlendirin. Sunucu,/.well-known/oauth-protected-resourceadresindeki RFC 9728 meta verilerine işaret eden401ile 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>(veyaAPI-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ında401olarak 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,
403yanı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'den403olarak yüzeye çıkar. - Yerel stdio.
skycloak-mcp initkomutunu ç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 logoutsaklanan anahtarı kaldırır. - Başsız / CI. Tarayıcıyı tamamen atlamak için
SKYCLOAK_API_KEYortam 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.ioadresindeki 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=trueekleyin. Yerel ikili dosya tam tersi şekilde çalışır ve--allow-writesile 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 nedenleinitvarsayılan olarak bu kapsamı istemez. Bunu taşıyan bir anahtar kullanın: panoda bir tane oluşturun veya stdio üzerindenskycloak-mcp init --allow-credentialsile 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=truebağımsız değişkeni gerektirir. - İstekler Skycloak planınıza göre hız sınırına tabidir; bir
429yanıtında sunucuRetry-Afterdeğ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.
| Alan | Salt okunur | Yazma (--allow-writes) |
|---|---|---|
| Kümeler | list_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_window | create_cluster, update_cluster, delete_cluster, cancel_cluster_upgrade, restart_cluster_instances, set_cluster_maintenance_window, delete_cluster_maintenance_window |
| Uç güvenliği | get_cluster_security, list_cluster_captcha_domains | update_cluster_security, add_cluster_captcha_domain, remove_cluster_captcha_domain |
| Realm'ler | list_realms, get_realm | create_realm, update_realm, delete_realm |
| Uygulamalar | list_applications, get_application, list_application_roles, list_application_sessions | create_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_oidc | create_identity_provider (OIDC), update_identity_provider, delete_identity_provider, test_identity_provider |
| Kullanıcılar, roller ve gruplar | list_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_groups | create_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_route | create_domain, verify_domain, delete_domain, create_domain_route, update_domain_route, delete_domain_route |
| Marka ve temalar | list_themes, get_theme, get_theme_assignment, get_client_theme_assignment, get_login_branding, get_email_branding, download_theme_content, get_theme_settings | set_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ılar | list_extensions, list_cluster_extensions | install_extension, upgrade_extension, update_extension, uninstall_extension, delete_extension |
| SMTP | get_smtp | upsert_smtp, delete_smtp, test_smtp |
| Dışa aktarmalar ve günlükler | list_exports, get_export, get_logs, get_security_logs, query_events | create_export, delete_export, export_cluster_events |
| Realm içe ve dışa aktarma | get_realm_export, get_realm_import | create_realm_export, create_realm_import, create_realm_import_upload_url |
| SIEM | list_siem_destinations, get_siem_destination | create_siem_destination, update_siem_destination, delete_siem_destination, test_siem_destination |
| Webhook'lar | list_webhook_event_types, list_webhook_subscriptions, get_webhook_subscription | create_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.
| İstem | Ne yapar |
|---|---|
audit_self_registration | Bir küme veya tümü genelinde kendi kendine kaydolmaya hâlâ izin veren her realm'ı bulun |
review_upgrades | Keycloak sürümünde geride kalan kümeleri tespit edin ve yükseltme yolunu ortaya koyun |
triage_failed_logins | Bir realm için son başarısız girişleri çekin ve kaynak IP'ye göre gruplayın |
review_identity_providers | Bir realm'ın SSO bağlantılarını listeleyin ve belirli birinin etkin olup olmadığını kontrol edin |
review_admin_changes | Bir realm'da son zamanlarda kimin neyi değiştirdiğini, giriş ve güvenlik ayarlarına odaklanarak gösterin |
provision_environment | Bir 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_secret | Bir 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.
| Beceri | Ne 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-rollout | Kurumsal 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-doctor | Bir 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-readiness | Sü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şkeni | Varsayılan |
|---|---|
SKYCLOAK_API_KEY | yok (stdio için isteğe bağlı; HTTP istemcileri bunun yerine API-Key başlıkları sağlar) |
SKYCLOAK_ENDPOINT | https://api.skycloak.io |
SKYCLOAK_API_VERSION | geçerli API sürümü |
SKYCLOAK_ISSUER | https://login.app.skycloak.io/realms/skycloak (CLI oturum açma ve HTTP taşımasının belirteçleri doğruladığı yetkilendirme sunucusu) |
SKYCLOAK_CLIENT_ID | skycloak-mcp (yalnızca CLI cihaz akışı) |
SKYCLOAK_DASHBOARD_URL | https://app.skycloak.io (CLI anahtarlarını ve HTTP oturum anahtarlarını basar) |
SKYCLOAK_PUBLIC_URL | yok (her istekten türetilir; giriş Host değerini yeniden yazdığında ayarlayın) |
OPENAI_APPS_CHALLENGE_TOKEN | OpenAI'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.
| Bayrak | Varsayılan | Açıklama |
|---|---|---|
--transport | stdio | stdio veya http |
--http-addr | :8080 | HTTP taşıması için dinleme adresi |
--allow-writes | false | stdio 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.