MCP Inspector ile Bir Araç Sunucusunu Güvenle Test Etme

by

⏱️ 10 dk tahmini okuma süresi
📝 1717 kelime
♿ WCAG 2.2 Uyumlu
Bu Makaleyi Sesli Dinleyin
Doğal Türkçe ses sentezleyici hazır



Kısa özet: Bir MCP sunucusunu bir sohbet istemcisine bağlamadan önce neyi gördüğünü, hangi aracı çağırdığını ve hata verdiğinde ne döndürdüğünü denetlemek gerekir. MCP Inspector bunun için açık kaynaklı bir test istemcisi sunuyor. Bu rehberde, zararsız bir yerel “not biçimleme” sunucusunu Inspector ile listeleyip tek bir araç çağrısı yapacak; ardından izin, kayıt ve ağ sınırlarını kontrol edeceksiniz.

Ne işe yarar?

Model Context Protocol (MCP), bir yapay zekâ istemcisinin araçlara, kaynaklara ve istemlere ortak bir sözleşmeyle bağlanmasını hedefler. Ancak “MCP uyumlu” etiketi tek başına güvenlik veya kalite garantisi değildir: Sunucu dosya okuyabilir, komut başlatabilir ya da bir uzak API’ye veri gönderebilir. MCP Inspector, sunucuyu önce ayrı bir istemciyle açıp tools/list sonucunu, araç şemalarını, kaynakları, istemleri ve çağrı yanıtlarını görmeye yarar. Böylece modeli bağlamadan önce araç adlarını ve beklenen girdileri denetlersiniz.

Projenin tek paketi üç istemci içerir: varsayılan web arayüzü, betiklenebilir CLI ve terminal arayüzü (TUI). Üçü de aynı bağlantı çekirdeğini kullanır; bu nedenle önce CLI ile hızlı bir denetim yapıp sonra aynı hedefi web arayüzünde ayrıntılı incelemek mümkündür. Inspector bir model çalıştırmaz, model anahtarı da istemez. Yalnızca sizin verdiğiniz komutu başlatır veya belirttiğiniz uzak MCP uç noktasına bağlanır.

Kimler için?

Bu akış özellikle kendi otomasyonunu kuran geliştiriciler, kurum içi bir MCP sunucusunu değerlendiren ekipler ve ekran okuyucu kullanan teknik kullanıcılar için yararlı. Hazır bir sohbet uygulamasındaki “sunucu ekle” düğmesine doğrudan güvenmek istemeyenler, araç listesini bağımsızca kayda geçirmek için Inspector’ı kullanabilir. Kod yazmayan bir kullanıcı için ilk kurulum yine terminal gerektirir; onun için bir uygulamanın yerleşik, izin ekranlı MCP ayarı daha düşük eşik olabilir.

Başlamadan önce: güvenli hedef seçimi

Bu örnekte yalnız yerel süreçle konuşan, ağ erişimi ve dosya erişimi olmayan bir demo sunucusu kullanın. Gerçek bir sunucuda README’yi okuyun; başlatma komutunu, ek klasör yollarını, ortam değişkenlerini ve OAuth isteğini not edin. Çalışma klasörünüz yerine boş bir test klasörü seçin. “Tüm Ev Dizini”, masaüstü veya parola kasası gibi geniş yolları deneme girdisi olarak vermeyin.

Güncel Inspector belgeleri Node.js 22.19.0 veya üzerini istiyor. Komutları çalıştırmadan önce node --version ile sürümü kontrol edin. Inspector’ı geçici olarak npx ile açmak, sistem geneline kurulumdan önce araç zincirini gözlemlemek için uygundur; fakat npx indirmesi ağ ve disk alanı kullanır.

Kurulum ve ilk bağlantı

Önce Inspector’ın yardımını görün:

npx @modelcontextprotocol/inspector --cli --help

Ardından güvenilir bir yerel sunucunun araçlarını isteyin. Aşağıdaki komuttaki node path/to/server/index.js bölümünü kendi, denetlenmiş sunucu başlatıcınızla değiştirin:

npx @modelcontextprotocol/inspector --cli \
  node path/to/server/index.js \
  --method tools/list --format json

Bu çağrı önce stdio üzerinden sunucuyu başlatır, sonra araç listesini ister ve JSON yanıtını yazdırır. Çıktıda her araç için ad, açıklama ve giriş şeması arayın. Örneğin format_note adlı bir aracın yalnızca text alanı beklemesi gerekirken path, command veya serbest URL alanları görüyorsanız, sunucunun gerçek yetkisi beklediğinizden geniş olabilir. Bu aşamada hiçbir aracı çağırmak zorunda değilsiniz.

Adım adım gerçek kullanım: bir notu biçimletme

Örnek sunucunuzun format_note adlı, yalnızca metni başlığa ve madde işaretlerine dönüştüren bir aracı olduğunu varsayalım. Önce liste çıktısından alanın tam adını doğrulayın. Sonra tek, zararsız bir örnekle çağrı yapın:

npx @modelcontextprotocol/inspector --cli \
  node path/to/server/index.js \
  --method tools/call \
  --tool-name format_note \
  --tool-arg text="Toplantı: Salı 10.00; karar: taslağı gözden geçir" \
  --format json

Başarılı yanıtta yalnız beklediğiniz biçimlenmiş metin olmalı. Hata alırsanız önce hata kodunu ve sunucunun stderr kaydını saklayın; aynı komutu rastgele farklı parametrelerle tekrarlamayın. “Komut bulunamadı” genellikle başlatıcı yolunun yanlış olduğuna, “invalid arguments” ise şemadaki alan adının veya türün farklı olduğuna işaret eder. Zaman aşımında sunucuyu tek başına terminalde çalıştırıp başlangıç çıktısını inceleyin.

Bu vardiyada Inspector’ın gerçek örneğini çalıştırmayı denedim; Node.js 24.18.0 sürümü koşulu karşılıyordu, ancak geçici npx kurulumu ana makinede kalan disk alanı tükendiği için ENOSPC ile tamamlanmadı. Bu nedenle yukarıdaki uçtan uca komut bu makinede doğrulanmış bir çalıştırma sonucu değildir; komut biçimi resmi belgelerden alınmış, yayın öncesi örnek çalıştırması yapılmamıştır.

Web arayüzü ve erişilebilirlik notları

npx @modelcontextprotocol/inspector web arayüzünü başlatır ve tek kullanımlık oturum belirteci taşıyan yerel bir URL yazdırır. Tarayıcıda önce bağlantı/transport seçimini, sonra sunucu komutunu ya da uzak URL’yi girersiniz. Bağlanınca araçlar, kaynaklar ve istemler ayrı yüzeylerde; istek-yanıt trafiği ise izleme panelinde görünür. Bir araç seçildiğinde giriş denetimleri şemadan oluşur, “çağır” eylemi çıktı ve hata ayrıntısını gösterir.

Klavye ile çalışırken odak sırasını denetleyin: bağlantı ayarları, sunucu komutu, araç listesi, girişler, çağır düğmesi ve yanıt bölgesi sırayla ulaşılabilir olmalı. Ekran okuyucuda araç adına ek olarak giriş etiketi ve zorunluluk durumu duyulmalı; yalnız renk ile belirtilen hata yeterli değildir. TUI, tarayıcı istemeyen alternatif olsa da terminaldeki yoğun protokol günlükleri ekran okuyucuda yorucu olabilir. CLI’nin JSON çıktısını dosyaya yönlendirip karşılaştırmak, tekrarlanabilirlik için en erişilebilir seçeneklerden biridir.

İzinler, gözlemlenebilirlik ve hata kurtarma

Inspector’ın önemli sınırı şudur: Sunucunun yetkisini kısıtlamaz; onu görünür kılar. Stdio sunucusunda verdiğiniz komut, Inspector süreci tarafından başlatılır. Uzak HTTP sunucusunda ise URL, OAuth akışı ve yönlendirmeler veri sınırını değiştirir. Önce localhost hedefiyle başlayın; uzak hedef için alan adını doğrulayın, gerekmiyorsa OAuth yetkisi vermeyin ve hassas gerçek veriyle test etmeyin. Oturum URL’sindeki tek kullanımlık belirteci paylaşmayın.

GitHub’ın yayımlanmış güvenlik uyarıları, geçmiş sürümlerde Inspector proxy’sinde kimlik doğrulama eksikliği nedeniyle uzaktan kod çalıştırma ve güvenilmeyen bir sunucunun yönlendirmesiyle XSS üzerinden komut çalıştırma riskleri bulunduğunu gösteriyor. Sırasıyla 0.14.1 ve 0.16.6 ile düzeltildikleri belirtiliyor. Bu yüzden sürümü sabitlemeden veya güncel paketi denetlemeden Inspector’ı ağ arayüzlerine açmayın; yalnız loopback üzerinde çalıştırın ve güvenmediğiniz sunucuya bağlanmayın.

Lisans, maliyet ve alternatifler

Inspector deposu MIT lisanslıdır; bu lisans, telif ve lisans bildirimleri korunmak koşuluyla kullanım, değiştirme ve dağıtıma geniş izin verir. Bu, bağlandığınız MCP sunucusunun, modelin veya verinin de MIT olduğu anlamına gelmez: her birinin lisansını ve hizmet şartını ayrıca denetleyin. Inspector paketi ücretsizdir; maliyet, kullandığınız uzak sunucunun API’si, OAuth sağlayıcısı, model çağrısı veya bulut altyapısından doğabilir.

Bir sohbet istemcisinin yerleşik geliştirici araçları daha az adım sunabilir fakat istemciye özgüdür. Sadece otomatik denetim gerekiyorsa Inspector CLI, JSON ve çıkış kodları sayesinde CI için daha uygundur. Tarayıcı kullanamıyorsanız TUI; detaylı form ve trafik incelemesi için web arayüzü daha iyi eşleşir. Hiçbiri sunucu kod incelemesinin yerine geçmez.

Bakım değerlendirmesi: Depo, varsayılan dalına güncel commitler alan ve sürüm yayımlayan etkin bir proje görünüyor; v2 geliştirmesi v2/main dalında yapılıp kilometre taşı sürümlerinde main dalına alınıyor. Açık işler yalnız hata raporları değil, sürüm geçişi ve yapılandırma ayrıntılarını da içeriyor; bunu “kusursuz” kanıtı değil, bakımın görünür olduğuna dair bir işaret sayın. Yayın notunu ve açık sorunları kendi kuracağınız sürüm için ayrıca kontrol edin. Yıldız sayısı veya popülerlik bu denetimin yerine geçmez.

Kurumsal bir akışta gözlemlenebilirlik için her deneme tarihini, Inspector sürümünü, sunucu commit kimliğini, çağrılan yöntem adını ve hassas veri içermeyen örnek çıktıyı değişiklik kaydına yazın. Beklenmeyen araç görünürse bağlantıyı kapatın; yeni bir araç ekleyerek sorunu “düzeltmeye” çalışmayın. Bu küçük kayıt, bir model istemcisi daha sonra aynı sunucuyu kullanmaya başladığında izin farkını karşılaştırmayı mümkün kılar.

Son kontrol listesi

  • Sunucunun deposu, lisansı ve başlatma komutu doğrulandı mı?
  • tools/list çıktısındaki araçlar beklenen en dar yetkiye sahip mi?
  • İlk tools/call yapay ve hassas olmayan veriyle mi yapıldı?
  • Inspector güncel mi ve yalnız localhost’ta mı dinliyor?
  • Hata/yanıt kaydı, parolalar ve oturum belirteçleri ayıklanarak mı saklanıyor?

Kaynaklar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

✅ Uygulama Başarıyla Güncellendi!
🟢 Profil Uygulandı