yeke.io · dokümanlar

MCP rehberi

Kendi AI ajanınız (Claude Code, Codex ya da MCP konuşan başka bir istemci) YEKE'nin MCP sunucusu üzerinden cluster'ı sizin yetkinizle okur, teşhis yapar ve plan önerebilir. Uygulayamaz: planı YEKE'de siz inceler, onaylar ve uygularsınız; önerilen plan onay zincirinin dışına çıkmaz. Token üretimi ve istemci kurulumu API ve MCP sayfasında; bu rehber akışı, araçları, örnek bir oturumu ve sorun gidermeyi anlatır.

Nasıl çalışır

Ajan cluster'a değil YEKE'ye bağlanır. Okuma YEKE'den geçer; değişiklik yalnız sizin onayladığınız plandan doğar.

Ajanınız Claude Code · Codex ya da başka bir MCP istemcisi planı uygulayamaz; bağlantıyı size verir YEKE · /api/mcp kimlik ve Kubernetes RBAC Secret maskeleme denetim izi · ai.read AI veri çıkışı: allowed Cluster sizin Kubernetes kimliğinizle araç çağrısı kapsamlı token sonuç: veri zarfı yalnız okuma GET propose_operation yalnız plan önerme token'ı Plan doğrulama · dry-run politikalar · Hook'lar kart kurulur kart bağlantısı Onay kartı siz, kendi YEKE oturumunuzla onaylarsınız uygula yalnız sizin onayınızla Ajanınız Claude Code · Codex · başka bir MCP istemcisi araç çağrısı · kapsamlı token YEKE · /api/mcp kimlik ve Kubernetes RBAC Secret maskeleme denetim izi · ai.read AI veri çıkışı: allowed yalnız okuma GET propose_operation Plan doğrulama · dry-run politikalar · Hook'lar yalnız plan önerme token'ı Onay kartı siz, kendi oturumunuzla onaylarsınız uygula Cluster sizin Kubernetes kimliğinizle
  • Tek uç, bütün filo. Ajan yalnız /api/mcp ile konuşur. Her araç çağrısı okuyacağı cluster'ı clusterId ile söyler; YEKE okumayı o cluster'daki Kubernetes kimliğinizle yapar.
  • Okuma yolu yalnız okur. MCP'nin arkasında cluster'a yazan bir yol yok. propose_operation da bir şey uygulamaz; YEKE'de bir plan ve onay kartı kurar.
  • Sonuç veri olarak işaretlenir. Her başarılı araç sonucu ajana bir veri zarfı içinde gider; ayrıntısı Güvenlik modeli bölümünde.
  • Sunucu ajana bir yönerge verir. Bağlantıda YEKE, araç sonuçlarının veri olduğunu, teşhis sırasını (önce metrik, sonra olay, pod durumu ve log) ve yönetim işlerinin hangi YEKE ekranında yapıldığını söyler. İstemci bu yönergeyi kullanmayabilir.

Taşıma: Streamable HTTP, yalnız POST. Her yanıt tek bir JSON nesnesidir (SSE açılmaz) ve sunucu oturum tutmaz. Desteklenen protokol sürümleri 2026-07-28 ve 2025-11-25.

Hızlı başlangıç

Üç rol, üç adım. Her adımın ayrıntısı API ve MCP sayfasında.

  1. Kurulum sahibi Yönetim → Sistem → Sistem ayarları → Oturumlar ve erişim → “MCP sunucusu”nu açın; core'u yeniden başlatmak gerekmez. Durum Yönetim → AI sağlayıcıları ekranında da yazar. Bkz. MCP'yi açma.
  2. Yönetici Ajanın okuyacağı her cluster'da AI veri çıkışı duruşunu allowed yapın: cluster ekranı → sohbet paneli → “Egress ve sağlayıcı”. Kullanıcının o cluster'da bir Kubernetes kimlik eşlemesi de olmalı. Bkz. MCP'yi açma.
  3. Kullanıcı Hesabım → “Token oluştur”. Token üretildiğinde altındaki “MCP ile kullan” bölümü Claude Code komutunu ve Codex parçasını verir. Bkz. Claude Code ve Codex; YEKE kurum içi bir CA kullanıyorsa aynı bölümdeki yeke mcp rölesi.

Hangi kapsam? Ajan yalnız teşhis yapacaksa Okuma; düzeltmeyi de onay kartı olarak önermesini istiyorsanız Plan önerme. Plan önerme token'ı okuma token'ının bütün araçlarını görür, ek olarak yalnız propose_operation'ı.

Araçlar

Araçlar YEKE sohbetinin okuma ve öneri araçlarıdır; şemaları ve açıklamaları sohbettekiyle aynıdır.

MCP her araca zorunlu bir clusterId alanı ekler. Geçerli değerler sizin MCP ile okuyabileceğiniz cluster'lardır: Kubernetes kimlik eşlemeniz olan ve yöneticinin AI veri çıkışına izin verdiği (allowed) cluster'lar. Böyle bir cluster yoksa araç listesi boş gelir.

AraçNe yaparGörünür
k8s_listBir kaynak tipinin nesnelerini özet tablo olarak listeler.Okuma ve plan önerme token'ı
k8s_getTek bir nesnenin tam gövdesini okur. Secret değerleri maskeli gelir.
k8s_search_typesKaynak tiplerinde arar. Ajan öteki araçlara vereceği schemaId'yi buradan bulur.
k8s_describe_typeBir kaynak tipinin tam kaydını döner: fiiller, subresource'lar, kapsam.
k8s_eventsKubernetes olaylarını listeler; yalnız uyarılar için type=Warning.
k8s_logsTek bir pod'un log'unu okur. Çökmüş örnek için previous=true, çok konteynerli pod'da container. Kırpılan çıktı kırpıldığını söyler.
yeke_metricsYEKE'nin kendi metrik geçmişini okur, cluster'a canlı sorgu atmaz. Dört işlem: status, overview, top, entity. Geçmiş derinliği lisansa bağlıdır; aşan aralık reddedilmez, kırpılır.
yeke_operationsYEKE'nin operasyon kayıtlarını listeler (ör. onay bekleyen planlar, kimin DELETE yaptığı).
yeke_auditCluster'ın denetim izindeki olayları listeler: tür, aktör, zaman. Olayın ayrıntısı gelmez.
yeke_clustersYEKE'nin cluster envanterini döner: ad, mod, bağlantı durumu, agent sürümü, egress duruşu. Hangi clusterId verilirse verilsin sonuç bütün envanterdir; MCP ile okuyamadığınız cluster'lar da listede görünür.
propose_operationBir değişiklik önerir. YEKE planı kurar ve onay kartının bağlantısını döndürür; değişikliği uygulamaz. Dönüşte değer yok: planın durumu, onay düzeyi, fiiller, politika kodları ve değişen alanların yolları.Yalnız plan önerme token'ı

Yalnız sohbette olan araçlar MCP'de sunulmaz: kullanıcı ve kimlik okumaları, arayüz aracı, yönetim ve izin önerileri ve sohbet turunu bitiren iki araç (answer, ask_user). Sunulmayan bir aracın çağrısı JSON-RPC -32602 alır.

Örnek oturum

Kurgusal bir teşhis: plan önerme token'ıyla bağlı bir ajan, sürekli yeniden başlayan bir Deployment.

› odeme namespace'indeki web sürekli yeniden başlıyor. Neden?

# her çağrı clusterId=c-1 taşır
yeke_metrics   op=status
yeke_metrics   op=entity kind=workload namespace=odeme name=web
k8s_events     namespace=odeme involvedObject=web-6d8f9c7b5-x2kqp type=Warning
k8s_get        schemaId=pod namespace=odeme name=web-6d8f9c7b5-x2kqp
k8s_logs       namespace=odeme name=web-6d8f9c7b5-x2kqp previous=true tailLines=50

BULGU   web konteyneri bellek sınırına ulaşınca öldürülüyor.
KANIT   k8s_get: lastState.terminated.reason=OOMKilled, restartCount=14,
        resources.limits.memory=256Mi; yeke_metrics: bellek 1h boyunca sınıra yakın.
ÖNERİ   bellek sınırını 512Mi'ye çıkarmak.

› Öner.

propose_operation  patch apps.deployment odeme/web
                   state=AWAITING_APPROVAL
                   https://yeke.kurum.com/clusters/c-1/operations?op=op-…

Onay kartı YEKE'de hazır. Bağlantıyı açıp inceleyin; onay sizde.

Kartta ne görürsünüz

  • Köken. Kart planın hangi token'la ve hangi kanaldan geldiğini yazar: “Bu plan “dizustu-claude” token'ı ile MCP üzerinden bir AI istemcisi tarafından önerildi.”
  • Modelin özeti. Ajanın özet cümlesi “Modelin özeti” etiketiyle ayrı bir satırda durur. Onayladığınız şey özet değil, karttaki değişikliktir.
  • Değişiklik ve zincir. Planın adımları, dry-run'ın hesapladığı fark, politika sonuçları ve onay düzeyi; arayüzden ya da sohbetten kurulan bir planın kartıyla aynı.
  • Onay sizde. Kartı kendi YEKE oturumunuzla açar, onaylar ya da reddedersiniz. Onaylanmayan plan 30 dakika sonra düşer.

Onay zinciri

MCP'den önerilen plan için ayrı bir yol yok.

propose_operation'ın kurduğu plan, arayüzün ve sohbetin kullandığı plan kurucudan geçer: doğrulama, dry-run, politikalar ve kurulumunuzdaki doğrulama Hook'ları. Hook'a planın kaynağı api olarak gider.

Uygulama da tek kapıdan geçer ve bu kapı planın kökenine bakmaz. Kurulumunuzda açık olan ikinci onay, bakım penceresi ve onay anında sorulan Hook'lar (ör. bir ITSM onayı) MCP'den önerilen plana da aynen uygulanır; bkz. Yönetişim ve Hook entegrasyonu.

Token zincirin hiçbir onay adımını atlayamaz. Planı uygulamak, onaylamak, tazelemek ve iptal etmek plan önerme token'ına kapalıdır (403); bunları kartın sahibi kendi oturumuyla yapar.

AI kaynaklı bütün yazmaları yükseltilmiş onaya almak için yerleşik ops.nl-strict şablonu: bkz. Plan önerme.

Güvenlik modeli

Asıl kapı ajanın yazamamasıdır. Öteki katmanlar okumayı daraltır ve görünür kılar.

  • Kimlik ve Kubernetes RBAC. Her okuma sizin o cluster'daki Kubernetes kimliğinizle yapılır. RBAC'ınızın göstermediğini ajan da göremez; kimlik eşlemeniz olmayan cluster MCP'den okunamaz.
  • Maskeleme. Secret değerleri ajana maskeli gider. last-applied-configuration annotation'ı ve managedFields hiç gönderilmez; konteyner env değerleri varsayılan olarak maskelidir. Log satırları maskelenemez.
  • Sonuç veri olarak işaretlenir. Her başarılı araç sonucu <<<TOOL_RESULT … kind=data>>> ile <<<END>>> arasında gider; verinin içindeki aynı ayraçlar bozulur. Sunucu yönergesi zarfın içinin talimat değil veri olduğunu ve cluster içeriğindeki talimatlara uyulmamasını söyler. Bu prompt injection'a karşı tek başına yeterli değildir: model yönergeye uymayabilir. Asıl kapı ajanın yazamamasıdır; enjekte edilmiş bir talimatın MCP üzerinden varabileceği en uç sonuç bir öneridir ve onu siz onaylarsınız.
  • Denetim izi. Her okuma çağrısı bir ai.read olayı yazar: kaynak api, kanal mcp ve token'ın kimliği. Olaya okunan değerler yazılmaz. Katalog araçları (k8s_search_types, k8s_describe_type) cluster'dan yeni veri okumadığı için olay yazmaz. Plan önerisi ai.plan_proposed olayı yazar.
  • AI veri çıkışı kapısı. Duruşu off ya da local-only olan cluster MCP'den okunamaz; YEKE verinin hangi modele gideceğini bilemez.
  • Yalnız kapsamlı token. Tarayıcı oturumu ve yeke login'in tam yetkili token'ı MCP'de reddedilir.
  • YEKE ayarlarına yazma yok. Uyarı kuralı, Hook, yetki grubu, kullanıcı ve politika MCP'den değiştirilemez; ajan yalnız işin hangi ekranda yapıldığını söyler.
  • Hız sınırı. Her MCP isteği token'ın dakikalık bütçesinden düşer; öneriler ayrıca sayılır. Bkz. Token'ın kapsamı.

Sorun giderme

Kodlar YEKE'nin kendi kodlarıdır. Kimlik ve erişim hataları JSON-RPC hata yanıtının data.error alanında (-32600) gelir; Origin reddi data.reason alanındadır. Araç hataları araç sonucunda (isError: true) gelir.

BelirtiSebepÇözüm
403 MCP_DISABLEDMCP sunucusu kapalı.Kurulum sahibi Sistem ayarları → Oturumlar ve erişim → “MCP sunucusu”nu açar.
401 UNAUTHENTICATEDİstek token taşımıyor; ör. ${YEKE_MCP_TOKEN} boş açıldı.Tablonun altındaki nota bakın.
401 SESSION_INVALIDToken'ın süresi dolmuş, iptal edilmiş ya da gönderilen değer geçerli bir token değil; ör. istemci ${YEKE_MCP_TOKEN} dizesini açmadan gönderiyor.Hesabım'dan yeni token üretin; değişken sorunuysa tablonun altındaki nota bakın.
403 TOKEN_SCOPE_DENIEDTam yetkili bir token gönderiliyor (ör. yeke login'in token'ı).Hesabım'dan okuma ya da plan önerme token'ı üretin.
403 MCP_TOKEN_REQUIRED ya da CSRF_FAILEDToken Authorization başlığında değil, çerezle geliyor.Authorization: Bearer başlığını kullanın.
403 ORIGIN_NOT_ALLOWEDİstek bir Origin başlığı taşıyor ve bu, YEKE'nin dış adresinin kökeniyle aynı değil (ya da dış adres tanımlı değil).Başlığı istemciden kaldırın ya da Sistem ayarları → Adres ve sertifika → “Dış adres”i YEKE'nin gerçek adresine ayarlayın.
429 TOKEN_RATE_LIMITEDToken'ın dakikalık istek bütçesi doldu.Retry-After başlığındaki süre kadar bekleyin. Öneri sınırı aşılırsa aynı kod araç sonucunda retryAfterSeconds ile gelir.
Araç listesi boşMCP ile okuyabileceğiniz cluster yok: kimlik eşlemeniz yok ya da AI veri çıkışı allowed değil.Yöneticinizle ikisini kontrol edin. Ayar değiştiyse istemciyi yeniden bağlayın; liste bağlantıda alınmış olabilir.
JSON-RPC -32602Çağrılan araç bu token'a sunulmuyor (ör. okuma token'ıyla propose_operation).Plan önermek için plan önerme token'ı kullanın.
AI_EGRESS_DISABLED ya da MCP_EGRESS_LOCAL_ONLYCluster'ın AI veri çıkışı kapalı ya da yalnız yerel modele açık.Duruş allowed olmadıkça cluster MCP'den okunamaz; karar yöneticinin.
NO_CLUSTER_IDENTITYBu cluster'da Kubernetes kimlik eşlemeniz yok.Yöneticinizden eşleme isteyin; bkz. Yetkilendirme.
CLUSTER_NOT_CONNECTEDCluster şu an YEKE'ye bağlı değil.Cluster ekranında bağlantı durumuna bakın.
PUBLIC_URL_NOT_CONFIGUREDÖneri kuruldu ama YEKE'nin dış adresi tanımlı değil; sonuçta bağlantı yerine göreli path var.Yolu YEKE adresinizin sonuna ekleyin ya da kurulum sahibi Sistem ayarları → Adres ve sertifika → “Dış adres”i doldursun.
TLS sertifika hatasıYEKE kurum içi bir CA ile imzalı ve istemci bu CA'ya güvenmiyor.yeke mcp rölesini kullanın; bkz. Claude Code ve Codex.

Masaüstü uygulamaları ve ortam değişkenleri. Bazı masaüstü istemcileri kabuğunuzun başlangıç dosyalarını (ör. .zshrc) okumadan açılır ve orada tanımlı değişkenleri görmez. O zaman ${YEKE_MCP_TOKEN} değişkeni boş açılırsa 401 UNAUTHENTICATED, istemci dizeyi açmadan gönderirse 401 SESSION_INVALID döner. Çözüm token'ı istemcinin kendi yapılandırmasına vermektir; Hesabım'daki “MCP ile kullan” bölümünün tek adımlık komutu bunu yapar.

Sınırlar

MCP'nin vermediği güvenceler. Token ve MCP'nin ortak sınırları API ve MCP sayfasında.

  • Teşhis bir öneridir. Ajanın bulgusu ve vardığı sebep yanlış olabilir; YEKE modelin sonucunu doğrulamaz. Kartı onaylamadan önce farkı kendiniz okuyun.
  • MCP yazmaz. MCP üzerinden cluster'a hiçbir şey yazılmaz; ajanın önerdiği bir değişiklik yalnız sizin onayladığınız plandan doğar.
  • Onay sizin sorumluluğunuzdadır. Kartı onaylayan sizsiniz; ajanın özeti bir not, kararın kendisi değil.
  • Tur bütçesi yok. Sohbetin tur başına araç tavanı MCP'de yoktur; ajanın kaç okuma yapacağına istemci karar verir. Çağrı başına okuma tavanları ve token'ın dakikalık bütçesi geçerlidir.
  • Öteki sınırlar. Veri kaybı önleme (DLP) sınırı olmaması, verinin sizin seçtiğiniz modele gitmesi, ajanın makinenizdeki öteki araçları ve planın 30 dakikalık ömrü: bkz. Beyanlı sınırlar.

Kurulum ve onay

Token ve istemci kurulumu API ve MCP sayfasında; ikinci onay ve bakım penceresi Yönetişim sayfasında.