ieaslan

← Yazılarım

MCP, skill, plugin, hook: AI kod asistanını genişletirken neyi nereye koymalı?

  • AI ajanlar
  • Claude Code
  • Güvenlik

Bir AI kod asistanını ilk kez kurduğunuzda, "şunu da bağlayayım, bunu da ekleyeyim" demek çok kolay. Birkaç hafta sonra her mesajın binlerce token'lık araç tanımıyla başladığını, asistanın da hangi aracı seçeceğini şaşırmaya başladığını fark ediyorsunuz.

Bu yazıda Claude Code ekosistemi üzerinden, ama Codex ve Gemini CLI için de büyük ölçüde geçerli olan kavramları sadeleştirmeye çalışıyorum.

Beş kavram, beş ayrı iş

  • MCP sunucusu: Dış sistemlere bağlanan araç katmanı. GitHub, veritabanı, tarayıcı ya da bir SaaS hizmeti gibi. Yerel bir süreç olarak ya da uzak bir HTTP uç noktası olarak çalışabilir. Araç şemaları bağlama girer.
  • Skill: Bir klasördeki SKILL.md dosyası ve yanındaki betikler. "Bu iş nasıl yapılır" bilgisini taşır. Her turda bağlamda yalnız adı ve kısa açıklaması durur, gövdesi gerektiğinde yüklenir. Aynı biçim birden fazla araç tarafından okunabiliyor.
  • Plugin: Skill, alt ajan, hook ve MCP tanımlarını tek pakette dağıtma yolu. Kurulan plugin'in parçaları her oturumda etkin olur.
  • Hook: Belirli olaylarda (araç kullanımından önce ya da sonra, oturum başında ya da sonunda) kesin olarak çalışan kabuk komutu. Model unutsa bile çalışır.
  • Alt ajan (subagent): Kendi bağlam penceresinde, kendi izinleri ve talimatlarıyla çalışan uzman. Ana bağlamı temiz tutar ama her çağrı sıfırdan başladığı için pahalıdır.

Akılda kalan kısa bir model: MCP API katmanıdır, skill fonksiyondur, plugin uygulamadır. Hook ise emniyet kemeri.

Ne zaman hangisi?

Kendi deneyimimden çıkardığım karar sırası şöyle:

  1. Bir komut satırı aracı varsa önce onu kullanın. git, gh, docker, sqlite3, npm gibi araçlar zaten kabuktan erişilebilir. Bunlar için MCP kurmak şema maliyeti getirir ama yeni bir yetenek getirmez. Aracın nasıl kullanılacağını bir skill ile tarif etmek çok daha ucuz.
  2. "Her seferinde mutlaka" olması gereken şey için hook yazın. Düzenlemeden sonra biçimlendirici çalıştırmak ya da tehlikeli bir komutu engellemek gibi. Talimat dosyasına "lütfen unutma" yazmak bunun yerini tutmaz.
  3. Uzun talimatları ana talimat dosyasından çıkarıp skill'e taşıyın. Ana dosya her turda yüklenir, skill ise yalnız gerektiğinde.
  4. MCP'yi gerçekten dış sisteme erişim gerektiğinde kullanın. Güncel kütüphane belgeleri, tarayıcı otomasyonu, hata izleme ve veritabanı incelemesi iyi örnekler.
  5. Alt ajanı bağlam ayrımı gerektiğinde kullanın. Uzun araştırma ya da bağımsız inceleme gibi. Her küçük iş için alt ajan açmak token'ı katlar.

Kaç MCP sunucusu fazla?

Deneyimli kullanıcıların ortak görüşü, aynı anda dört ila altı etkin sunucunun yeterli olduğu yönünde. Bir ölçüme göre yedi sunucunun araç tanımları, mesaj başına bağlamın kayda değer bir kısmını daha konuşma başlamadan dolduruyor. Araç arama (tool search) özelliği bu yükü azaltıyor ama tamamen kaldırmıyor. Araç sayısı arttıkça seçim de bulanıklaşıyor.

Pratik öneri: projeye özgü sunucuları yalnız o projenin kapsamında açın. Kullanmadığınız plugin'leri kaldırmadan devre dışı bırakın.

Güvenlik: her şey sizin yetkinizle çalışır

En kritik nokta bu. Plugin'ler, hook'lar ve yerel MCP sunucuları sizin kullanıcı yetkilerinizle kod çalıştırır. Resmi belgeler de bunu açıkça söylüyor. Dikkat edilecekler:

  • Prompt injection: Web sayfası, issue metni, e-posta ya da ekran içeriği getiren her araç, modele talimat sızdırabilir. Araç açıklamasına gizlenen talimatlar ise "tool poisoning" olarak biliniyor.
  • Ölümcül üçlü: Özel veriye erişim, güvenilmeyen içerik ve dışarıya veri gönderme kanalı aynı oturumda bir araya gelmemeli. Yazma yetkili bir e-posta aracıyla web getiren bir aracı birlikte açık tutmak buna örnek.
  • Sırlar: Token'ları yapılandırma dosyasına düz metin olarak yazmayın. Ortam değişkeni, OAuth akışı ya da işletim sisteminin anahtar zincirinden okuyan küçük bir sarmalayıcı kullanın.
  • En az yetki: Veritabanında salt okunur kullanıcı, depo kısıtlı erişim belirteci, klasör kısıtlı dosya erişimi.
  • Tedarik zinciri: paket@latest ile her açılışta yeni sürüm çekmek risklidir. Kritik araçlarda sürümü sabitleyin ve tanımadığınız bir sunucunun kaynağını kurmadan önce okuyun.

Başlangıç için sade bir set

Yazılım geliştirme için, gereğinden fazlasını kurmadan işe yarayan bir çekirdek:

  • Güncel belge getiren bir MCP. Asistanın eski ya da uydurma API kullanmasını azaltır.
  • Tarayıcı otomasyonu ya da DevTools erişimi. Yalnız web projelerinde, proje kapsamında açılır.
  • Kullandığınız veritabanı için salt okunur bir sunucu.
  • Kendi skill'leriniz. Sık yaptığınız işlerin tarifi. En ucuz ve en taşınabilir genişletme bu.
  • Birkaç hook. Biçimlendirme, testlerin unutulmaması ve tehlikeli komut koruması için.

Son söz

Genişletme kararlarında sorulacak soru "bu işe yarar mı?" değil, "bu her turda bağlama ne kadar yük getiriyor ve ne kadar yetki istiyor?" olmalı. Az ve iyi seçilmiş araçla çalışan bir asistan, her şeye bağlı ama kafası karışık bir asistandan daha verimli oluyor.

Kaynaklar