İçeriğe atla
Tüm yazılar
MCPFortiEDRPythonAçık Kaynak

FortiEDR MCP Server: EDR konsolunu doğal dile açmak

146 FortiEDR API endpoint'ini Claude gibi LLM asistanlarına bağlayan, MSSP operasyonları için tasarlanmış açık kaynak MCP sunucusu — neden yazdım, nasıl tasarladım.

Sabah 09:00 stand-up'ı, üzerinde onlarca MSSP müşterisi olan bir MDR analisti düşünün. Soru basit: "Son 8 saatte tüm tenant'larda ele alınmamış kritik event'lerin özeti ne?" Eski yöntem: 35 sekme aç, her birinde filtrele, not al — yaklaşık 45 dakika. FortiEDR MCP Server ile: tek prompt, 30 saniye.

Bu yazıda, FortiEDR'ı Model Context Protocol üzerinden LLM asistanlarına bağlayan açık kaynak projemin (GitHub) tasarım kararlarını anlatacağım.

MCP neden doğru katman?

MCP, LLM istemcileri ile harici sistemler arasındaki standart köprü. Sunucuyu bir kez yazıyorsunuz; Claude Desktop, Claude Code, Cursor, VS Code + Copilot, Windsurf — hepsinde aynı sunucu çalışıyor. EDR entegrasyonunu istemci başına tekrar yazmak yerine protokole bir kez yatırım yapıyorsunuz.

146 endpoint'i elle yazmadım

Sunucu, FortiEDR'ın resmi Postman koleksiyonundan otomatik üretilen 146 API aracı içeriyor: event'ler, envanter, threat hunting, politikalar, organizasyonlar, forensics, audit ve daha fazlası. Elle yazılan tek şey üretim hattı — API güncellenince araçlar da yeniden üretiliyor. HTTP tarafında fortiedr Python SDK'sına bağımlılık yok; retry, rate limit ve timeout yönetimi olan httpx tabanlı async bir istemci doğrudan REST API ile konuşuyor.

Asıl değer: composite tool'lar

Ham endpoint'ler gerekli ama yeterli değil — analistin sorduğu sorular çoğu zaman birden fazla çağrının birleşimi. Bu yüzden MSSP senaryolarına özel birleşik araçlar var:

  • mssp_ioc_sweep — CISA yeni bir APT hash'i yayınladı; tüm tenant'larda son 30 günü paralel tara. Eski yöntemle müşteri başına threat-hunting sekmesi açmak ~30 dakika, bu araçla tek çağrı.
  • mssp_event_summary_by_org — tüm tenant'ların event sayılarını paralel çekip sıralar.
  • mdr_event_triage_brief — bir event için FP/TP kararı vermeye yetecek tüm bağlamı tek seferde toplar.
  • mdr_monthly_report_data — aylık müşteri raporu için gereken her veriyi tek çağrıda getirir.

LLM'e EDR yetkisi vermek: üç güvenlik modu

Bir LLM'e uç nokta izole etme yetkisi vermek hafife alınacak iş değil. Sunucu bu yüzden üç modda çalışıyor:

Safe     → READ_ONLY=true   | raporlama, hunting (üretim önerisi)
Standard → yazma açık        | sınıflandırma, yorum, politika (Tier 1)
Full     → DESTRUCTIVE=true  | izolasyon dahil her şey (kıdemli / IR ekibi)

Varsayılan tavsiye Safe: LLM her şeyi okuyabilir, hiçbir şeyi bozamaz. Yıkıcı aksiyonlar (cihaz izolasyonu gibi) ayrı bir ortam değişkeniyle açıkça etkinleştirilmedikçe araç listesine bile girmez. Yetki modeli "opt-out" değil "opt-in" — MDR ortamında tek doğru varsayılan bu.

Sahadan bir kurulum notu

FortiEDR tarafında API kullanıcısına Rest API rolü vermek gerekiyor (Admin rolü tek başına yetmiyor) ve hesabı oluşturduktan sonra konsola bir kez girip parolayı değiştirmek şart — aksi halde API 401 döner. Bu iki detay, kurulum sorularının açık ara birincisi.

Sonuç

Proje MIT lisansıyla açık kaynak; Python 3.10+ ile çalışıyor, kurulum pip install -e . kadar basit ve examples/ klasöründe popüler istemciler için hazır konfigürasyonlar var. Deneyip geri bildirim verirseniz sevinirim: github.com/mehmetvatansever/fortiedr-mcp-server