MCP Nedir? - LLM'leri Güvenlik Araçlarıyla Konuşturmak

Yapay zeka modelleri hayatımızın merkezine yerleşti ancak şu ana kadar onlarla ilişkimiz genelde kısıtlı bir döngüden ibaretti. Kodunu kopyala, chat ekranına yapıştır, cevabı al, tekrar editöre dön… Peki ya bu LLM’ler sadece sohbet penceresinde hapsolmuş birer asistan değil de veritabanlarınıza bağlanan ve güvenlik taramalarınızı yöneten yetkili birer takım arkadaşına dönüşseydi? İşte tam bu noktada yapay zeka ile gerçek dünya uygulamalarımız arasındaki o görünmez duvarı yıkan teknoloji sahneye çıkıyor.

MCP Nedir?

Yapay zekanın hayatımıza girmesiyle birlikte kaçınılmaz olarak yeni terminolojiler ve teknolojiler ortaya çıkmaktadır. MCP yani Model Context Protocol de bu rüzgardan nemalananlardan birisi. Nasıl çalıştığı bir yana, şimdilik hangi ihtiyaca karşılık var olduğu üstüne konuşalım.

LLM’lerle bir problem üzerine konuşmak ve tartışmak artık günümüzün standardı haline geldi. Günlük hayatta veya iş hayatımızda karşılaştığımız pek çok problemi LLM’lere sorarak çözmeye çalışıyoruz. Peki ya LLM’lere iş hayatımızda kullandığımız teknolojileri kullanabilme yeteneği verebilseydik nasıl olurdu? İşte MCP tam olarak bunu yapıyor, yapay zeka modelleri ile verileriniz ve araçlarınız arasında standart bir köprü kurarak, manuel veri aktarımını ortadan kaldırıyor.

MCP image from

Mevzuyu zihnimizde tam olarak oturtmak için teknik terimleri bir kenara bırakıp hepimizin bildiği o kült sahneye gidelim. G.O.R.A.’da Garavel Usta’nın Arif’e o meşhur “karışık kaseti” yüklediği anı hatırlıyor musunuz?

İşte MCP tam olarak o “Karışık Kaset”tir. Arif Işık sizin kullandığınız LLM (ChatGPT, Claude vb.). Çok yetenekli, potansiyeli yüksek ama “gezegeninizi” (teknolojiyi) henüz tam kapasitede tanımıyor. Garavel Usta’yı geliştirici(developer) olarak düşünebilirsiniz.

GORA

Tıpkı filmdeki gibi bilgi kopyala-yapıştır ile değil doğrudan sisteme enjekte edilerek akıyor. Kendi MCP’nizi oluşturup kullanabileceğiniz gibi pek çok teknoloji public olarak MCP’lerini geliştirip paylaşıyorlar. Artık soru “Yapay zekaya ne sorabilirim?” değil, ”Yapay zeka benim araçlarımla neler yapabilir?” olmaya başlıyor.

Özet olarak Model Context Protocol (MCP), yapay zekanın sadece sohbet eden bir bottan, sistemlerimizle entegre çalışan “ajanlara” dönüşmesinin önündeki en büyük engeli kaldırıyor. Anthropic tarafından açık kaynak olarak sunulması da bu ekosistemin hızla büyüyeceğinin bir işareti.

OpenText MCP Server

OpenText’in fcli aracı, MCP server entegrasyonumuzun bel kemiği diyebiliriz. OpenText’in açık kaynaklı olarak geliştirmiş olduğu bu yazılım içerisinde fortify kullanımını kolaylaştıran scriptler, Aviator (bulguları değerlendiren LLM) ve MCP server’ı barındırıyor. MCP tarafında SSC, SAST, Aviator ve FOD(fortify on demand) için ayrı MCP modülleri bulunuyor.

Fortify ve SAST yazılımlarının ne olduğuna dair bilgilere önceki yazılarımızdan ulaşabilirsiniz: Statik Kod Analizi ve Yazılım Komponent Analizi

Aviator ve entegrasyonu hakkında daha fazla bilgi edinmek için aşağıdaki linke tıklayarak yazımıza ulaşabilirsiniz: LLM Süreçlerinde SAST Kullanımı

fcli toolunun reposunun linki buradan ulaşıp klonlayabilir veya release’lerden indirebilirsiniz: https://github.com/fortify/fcli/

MCP serverı başlattığımızda varsayılan olarak ‘STDIO’ protokolünü kullanıyor. Yani aslında MCP bağlantısını bir ‘subprocess’ olarak kaldırıyor ve standart girdi/çıktı (I/O) üzerinden haberleşiyor.

MCP sunucularını varsayılan olarak stdio (standart girdi/çıktı) üzerinden çalıştırıyoruz; bu yöntem, sunucuyu bir alt süreç (subprocess) olarak başlatır ve hızlıdır. Ancak ihtiyaca göre MCP sunucularını HTTP (SSE - Server-Sent Events) üzerinden çalışacak şekilde de yapılandırabilirsiniz. Bu durumda sunucu, yerel bir süreç olmak yerine belirli bir port üzerinden dinleme yaparak uzak bağlantılara da imkan tanır.”

CLI’dan MCP’yi başlatmak isterseniz çalıştırmanız gereken komut şu şekilde:

.../fcli util mcp-server start --module=<module_name>

MCP sunucusunun tüm yeteneklerine erişip LLM’lere prompt yazıp kullanmak istiyorsanız öncelikle “fcli” toolunu kullanarak giriş yapmanız gerekmektedir. Giriş yaptığımızda oluşturduğumz sessionı bir yere kaydediyor ve bu toolu kullanan bütün yerlerde geçerli oluyor. Tokenla veya username/password kullanarak bir session oluşturabilirsiniz.

1.Yöntem token ile session oluşturma:

fcli ssc session login --url <SSC_URL> --token <YOUR_TOKEN>

Ek olarak token’ı bu komut ile fcli üzerinden de oluşturabilirsiniz:

fcli ssc access-control create-token <TYPE> --url <SSC_URL> --user <USER> -p <PASSWORD> 

2.Yöntem username/password ile session oluşturma:

fcli ssc session login --url <SSC_URL> --user <USERNAME> --password '<PASSWORD>'

Claude Entegrasyonu:

Hazırlık aşamalarını tamamladığımıza göre, MCP’yi asıl parladığı yerde tabiri caizse “kendi evinde” görelim. MCP standardı bizzat Anthropic tarafından geliştirildiği için en pürüzsüz entegrasyon deneyimini şu an Claude Desktop uygulaması sunuyor.

Henüz kod editörlerine veya test araçlarına girmeden, bir son kullanıcı gözüyle “Yapay zeka benim araçlarımla neler yapabiliyor?” sorusunun cevabını Claude üzerinde verelim.

Claude masaüstü uygulamasında “Settings > Developer > Edit Config” butonuna tıkladığınızda size bir json dosyası açılacak. Konfigürasyonlarımızı tam olarak bu dosyaya yazmamız gerekmektedir.

claude-settings

Örnek konfigürasyonlar:

{
  "mcpServers": {
    "fcli-ssc": {
      "type": "stdio",
      "command": "/path/to/fcli",
      "args": ["util","mcp-server","start","--module=ssc"]
    },
    "fcli-sc-sast": {
      "type": "stdio",
      "command": "/path/to/fcli",
      "args": ["util","mcp-server","start","--module=sc-sast"]
    },
	"fcli-sc-dast": {
      "type": "stdio",
      "command": "/path/to/fcli",
      "args": ["util","mcp-server","start","--module=sc-dast"]
    },
	"fcli-fod": {
      "type": "stdio",
      "command": "/path/to/fcli",
      "args": ["util","mcp-server","start","--module=fod"]
    },
	"fcli-aviator": {
	  "type": "stdio",
      "command": "/path/to/fcli",
      "args": ["util","mcp-server","start","--module=aviator"]
	  }
  }
}

Uygulamayı tekrar açtığınızda chat kısmında MCP’ler aşağıdaki şekilde gözükecektir.

claude-chat

“Connectors” kısmı bu şekilde gözüktüğünde artık Claude MCP sunucusu ile haberleşecek demektir. İstediğiniz promptu girerek MCP’nin yeteneklerini kullanabilirsiniz.

Bütün OpenText Application Security’de bulunan projelerimdeki kritik bulgu sayıları getirmesini istedim ve birkaç aşamalı onaydan sonra hepsini doğru bir şekilde getirip sundu.

claude-chat

Konu LLM’ler olunca fevkalade kullanışlı olan bu teknolojinin kullanım alanları elbette sizin hayal gücünüze kalıyor. İster taramalara ve zafiyetlerine ait .csv dosyaları oluşturun istersenizde scriptler yazdırıp entegrasyon süreçlerinizi kolaylaştırabilirsiniz.

IDE Üzerinden Bağlantı:

IDE olarak Visual Studio Code üzerinden gösterimini yapacağım. IDE entegrasyonunu yapmak için aşağıdaki adımları takip edebilirsiniz:

  1. Shift + Command + P kombinasyonuyla üstten açılan menüden “MCP: Open User Configuration” tıklıyoruz.
  2. VSCode’a ait mcp.json dosyası açılacaktır ve buraya MCP’ler için gerekli konfigürasyonları girmemiz gerekiyor. Örnek mcp.json dosyası:

     ```json
     {
       "servers": {
         "fcli-ssc": {
           "type": "stdio",
           "command": "</path/to/fcli>",
           "args": ["util","mcp-server","start","--module=ssc"]
         },
         "fcli-sc-sast": {
           "type": "stdio",
           "command": "</path/to/fcli>",
           "args": ["util","mcp-server","start","--module=sc-sast"]
         },
     	"fcli-sc-dast": {
           "type": "stdio",
           "command": "</path/to/fcli>",
           "args": ["util","mcp-server","start","--module=sc-dast"]
         },
     	"fcli-fod": {
           "type": "stdio",
           "command": "</path/to/fcli>",
           "args": ["util","mcp-server","start","--module=fod"]
         },
     	"fcli-aviator": {
     	  "type": "stdio",
           "command": "</path/to/fcli>",
           "args": ["util","mcp-server","start","--module=aviator"]
     	 }
       }
     }
     ```
    

Visual Studio Code IDE’mizi açıp aşağıdaki konfigürasyonları yaptıktan sonra hiçbir yere tıklamadan promptu yazdığında mcp serverları başlatıp iletişim kurmaya ve istediğiniz komutu yerine getirmeye başlayacaktır.

ide1

IDE’deki LLM’i Agent moduna alıyorsunuz ve kullanmak istediğin bir modeli seçiyorsunuz. LLM burada bir insan gibi davranıyor aslında; MCP’ye gidip Tool’larına(capabilitylerine) bakıyor ve hangisini seçeceğine karar veriyor, seçtikten sonra gerekli isteği atıyor. JSON olarak gelen cevabı yorumluyor ve güzel bir şekilde çıktıyı sunuyor.

Örnek bir uygulama yaptım ve sonuç harikulade. OpenText Application Security üzerinde bulunan uygulamaların ve versiyonlarının en son tarama tarihlerini ve sürelerini liste olarak istedim ve aşağıdaki şekilde bir liste çıktısı verdi.

ide2

Postman ile MCP Bağlantısı:

IDE entegrasyonu harika, fakat bazen geliştirdiğimiz MCP sunucusunu bir LLM’e bağlamadan ham haliyle test etmek veya debug yapmak isteyebiliriz. LLM’in yorumu araya girmeden araçlarımızın tam olarak ne döndürdüğünü görmek için Postman imdadımıza yetişiyor.

Workspace’ten “New”e tıklayarak MCP’yi seçiyoruz.

postman1

Postman üstünden yaptığında arada LLM olmuyor, Tools üstündeki capabilityleri listeleyip gerekli parametreleri sağlayarak çalıştırabilirsiniz.

Postman’de MCP sunucusunu cli üstünden çalıştırdığımız gibi komutu yazarak çalıştırıyoruz:

.../fcli util mcp-server start --module=ssc

postman2

Run butonuna tıkladığında sol tarafta Tools kısmı yükleniyor. MCP server capability’si olarak geçiyor, MCP server neler yapabiliyor onu görebilirsiniz.

Bir tane Toolu seçip gerekli bilgileri doldurup “Run” butonuna bastığınızda seçili Toolu çalıştırıyor ve bilgi olarak JSON döndürüyor.

Sol alt tarafta ise history olarak bağlantıyı, giden ve gelen istekleri görebilirsiniz.

postman3

Bu yazımızda OpenText fcli örneği üzerinden MCP dünyasına hızlı bir giriş yaptık. Gördüğünüz gibi MCP sadece bir sohbet aracı değil; sistemlerinize, veritabanlarınıza ve güvenlik araçlarınıza yapay zekanın ellerini uzatabilmesini sağlayan güçlü bir standart.

Kaynak

https://fortify.github.io/fcli/latest/

https://modelcontextprotocol.io/docs/getting-started/intro

https://modelcontextprotocol.io/docs/develop/build-server

Written by

Yusuf Yıldız