Şunu söyleyeyim, Geçen ay, 2025’in Şubat sonunda, masa başında tam da şu soruya takıldım: “MCP’yi öğrenmek istiyorsam bunu en rahat hangi dille denerim?” Benim için cevap biraz tuhaf ama netti — Common Lisp (bu beni çok şaşırttı). Hani herkes Python’a ya da TypeScript’e koşarken ben bir köşede Lisp açıp parantezlerle boğuşmayı seven o garip insanlardanım. Açık konuşayım: bu iş ilk bakışta sandığım kadar pürüzsüz çıkmadı.
İşin güzel tarafı şu ki, 40ants-mcp bayağı düzgün bir iskelet veriyor. Kötü tarafıysa… kurulumda ufak görünen birkaç taş var, sonra bir bakıyorsunuz bütün patika kapanmış. Ben de editör masasında bunu görünce hemen denemek istedim; “dakikalar sürer” diye başladığım şeyin iki güne uzadığı oldu. Biraz can sıkıcıydı, evet. Eh, bazen öyle oluyor işte.
MCP’ye Lisp Gözüyle Bakınca Ne Görünüyor?
Şunu fark ettim: MCP’yi ilk duyduğumda aklıma gelen şey şuydu: Bu protokol aslında LLM’lerin dış dünyaya düzenli biçimde uzanması için konmuş bir köprü gibi çalışıyor. Yani modelin eline rastgele araçlar vermek yerine, ona kapısı penceresi belli bir servis dili sunuyorsunuz — temiz fikir. Hatta baya işe yarıyor.
Common Lisp cephesinde bunun tadı ayrı oluyor. Neden? Çünkü dilin doğası zaten metaprogramlama. DSL yazımı için çok uygun; bir tool tanımlamak, API iskeleti kurmak, hatta çıktının tipini kontrol etmek bunlar Lisp’te göze batmıyor, doğal geliyor. Mesela İstanbul’da geçen yıl bir yan projede kendi küçük komut katmanımı yazarken de aynı hissi almıştım: “Bu dil sanki framework değil de marangoz takımı veriyor.” Tam öyle bir his.
Kısa bir not düşeyim buraya.
Gel gelelim her şey güllük gülistanlık değil. Common Lisp dünyai güçlü ama bazen paket bağımlılıkları beklediğiniz kadar düz gitmiyor. İşte burada sabır gerekiyor… ve biraz da inat.
Kurulumda Sizi Bekleyen Küçük Tuzak
Bence asıl mesele teknik zorluk değil. Teknik zorluğun saklanma şekliydi. 40ants-mcp paketini yüklemek istiyorsunuz ama arka planda jsonrpc önceden gelmeli gibi bir durum var — bunu dokümantasyonda gözden kaçırırsanız saatler uçup gidiyor. Ben de aynen öyle yaşadım. Tam olarak öyle.
En büyük sürpriz genellikle karmaşık özelliklerde değil… basit görünen bağımlılıklarda saklanıyor.
Birkaç gün önce Kadıköy’de kahve içerken not defterime şunu yazmıştım: “Kurulum kolay olacaksa sorun yok; zor olacaksa bari neden zor olduğunu açıkça söylesin.” Burada olan tam da buydu — çözüm basitti ama ipucu yeterince görünür değildi. Valla insan o an hem güler hem sinirlenir.
Neleri önceden hazırlamak lazım?
- SBCL: Common Lisp derleyicisi/çalıştırıcısı gibi düşünün. — bunu es geçmeyin
- Roswell: Script çalıştırma ve yönetme tarafında hayat kurtarıyor.
- Quicklisp: Paket işlerini toparlıyor.
- Ultralisp: Bazı kütüphanelere daha hızlı erişmek için iyi bir dağıtım kanalı. (bence en önemlisi)
| Araç | Ne işe yarıyor? | Benim yorumum |
|---|---|---|
| SBCL | Lisp’i çalıştırır ve derler | Hızlı ve sağlam; işi görüyor. |
| Roswell | Script yönetimi ve dağıtım | Olmasa çok şey zorlaşırdı açıkçası. |
| Quicklisp | Paket yükleyici | Standart; zaten kullanıyorsunuzdur. |
| Ultralisp | Genişletilmiş paket kanalı | Bazı şeyler buradan geliyor, dikkat. |
Sorunun Çözümü Aslında Basitmiş
Evet, yanlış okumadınız. Esas numara önce jsonrpc‘yi yüklemekten geçiyor, sonra 40ants-mcp. Şu sıra önemli:
(ql:quickload :jsonrpc)
(ql:quickload :40ants-mcp)
Bunu öğrendiğimde biraz sinirlendim doğrusu. Çünkü insan böyle yerlerde “bunu niye otomatik halletmiyor?” diye düşünüyor. Ama dürüst olayım… bu tür minik çentikler Common Lisp dünyasında ara sıra çıkıyor ve çoğu zaman çözüm düşündüğünüzden çok daha yakın oluyor. Gerçekten. Bu konuyla ilgili CSS3 ile Düğme Tasarımını İyi Yapmanın İncelikleri yazımıza da göz atmanızı tavsiye ederim.
Neden bu kadar uğraştırdı?
Şahsen, Cevap basit gibi duruyor ama pratikte paket zinciri bazen tam saydam olmuyor. Küçük ekiplerde çalışan biriyseniz bu tür gecikmeler moral bozuyor. Kurumsal tarafta ise etkisi başka olur — build sistemi kırılır, CI bekler, herkes birbirine bakar.
Kendi deneyimimde şöyle oldu: 2024 sonbaharında Ankara’daki küçük bir AR-GE takımına danışmanlık verirken benzer şekilde tek satırlık eksik bağımlılık yüzünden bütün prototip gece yarısına kadar ayağa kalkmamıştı. O an şunu net gördüm — dokümantasyon iyiyse teknoloji sevilir, değilse en iyi fikir bile duvara tosluyor. Neyse uzatmayayım, burada da durum biraz oydu (ben de ilk duyduğumda şaşırmıştım)
Şimdi gelelim işin can alıcı noktasına. Daha fazla bilgi için Framework’ün Uyarısı: AI Dalgası PC’yi Nasıl Sıkıştırıyor? yazımıza bakabilirsiniz.
MCP Sunucusu Yazmak Neden Keyif Veriyor?
Lisp’le tool tanımlamak garip biçimde keyifli. Bir API tanımlıyorsunuz, sonra tool’u bağlayıp doğru content tipini dönduruyorsunuz. Mesele bu kadar sadeleşince işin özü görünüyor: “Model ne isteyecek?” “Ben ne vereceğim?” “Çıktı ne formatta dönecek?” Bu üç soru netleşince geri kalan kabuk kalıyor.
Doğrusu ben buna bayılıyorum. Karmaşıklığı azaltıyor çünkü — Aşağıdaki yapı minimal ama öğretici: Bu konuyla ilgili MolTrust A2A v0.3: Agent Card’ı Baştan Yazmak yazımıza da göz atmanızı tavsiye ederim.
(openrpc-server:define-api mi-tools :title "mi-tools")
(40ants-mcp/tools:define-tool (mi-tools add) (a b)
(:summary "just add")
(:param a integer "a")
(:param b integer "b")
(:result text-content)
(make-instance 'text-content :text (format nil "~a" (+ a b))))
Küçük startup için nasıl görünüyor?
Eğer iki-üç kişilik bir ekipseniz bu yaklaşım çok mantıklı olabilir. Hızlı denersiniz, küçük tool’lar yazarsınız, LLM’e kontrollü yetenek eklersiniz; maliyet düşük kalır. Ama dikkat: belgelemeyi atlamayın. Yarın sizden başka biri gelir ve parantez ormanı içinde kaybolur. Söylüyorum.
Kurum tarafında durum farklı mı?
E tabi farklı. Enterprise ortamda MCP sunucusu artık hobi projesi değildir; loglama, yetkilendirme, gözlenebilirlik, versiyonlama… hepsi devreye girer. Ben olsam üretimde çıplak halde bırakmam. Hele bir de de güvenlik ekibinin eli çabuk olur — test ederken bile sınırlarınızı zorlarlar.
MCP sunucusu yazmak kolay olabilir… asıl mesele onu işletilebilir hale getirmek.
Roswell ile Çalıştırma ve Dağıtma
Bence Roswell kısmı yazının en tatlı yerlerinden biri. Script’i oluşturup doğrudan çalıştırabiliyorsunuz; isterseniz executable da üretiyorsunuz (buna dikkat edin). Geliştirme aşamasında hızlı test yapmak için birebir. Bir cuma akşamı Beşiktaş’taki ofiste bunu denerken fark ettim: kurulum dosyası fazla uzamıyorsa ekip içi benimseme ciddi artıyor. Küçük ama önemli detay.
- Script’i Roswell uyumlu hazırlayın.
- Ana fonksiyonu server başlangıcına bağlayın. — ciddi fark yaratıyor
- İsteğe bağlı olarak binary üretip PATH’e koyun.
Aynen böyle düşünün: script modunda prova yaparsınız, binary ile sahneye çıkarsınız. Basit ama işe yarıyor.
Opencode Entegrasyonu Neyi Değiştiriyor?
Burada hoşuma giden nokta MCP’nin teoride kalmaması. Server’ınızı opencode içine tanıtınca model gerçekten o aracı kullanabiliyor — yani iş demo seviyesinden çıkar, günlük akışa karışır. Ciddi fark.
{
"mcp": {
"mi-tools": {
"type": "local",
"command": ["mi-mcp-server"],
"enabled": true
}
}
}
Kendi deneyimimden konuşuyorum, Kulağa sıradan gelebilir ama pratikte önemli. Çünkü LLM aracını kontrol altına almazsanız elinizde sadece parlak bir oyuncak kalır. Kontrollü entegrasyon ise ürüne dönüşüyor. Ha bu arada iç link düşeyim: MCP Sunucusu Güvende Değil Kimlik Doğrulama Yetmiyor. Bu konuya güvenlik açısından ayrı bakmak şart.
Bence, Ayrıca RAG tarafındaki parçalama hatalarıyla kıyaslayınca ilginç bir paralellik var: Chunking Neden RAG’in En Büyük Hatası Olabiliyor?. Orada veri bölünmesi sorun çıkarıyordu; burada da araç sözleşmesi gevşerse işler dağılıyor. Benzer hastalık, farklı semptom.
Sahada Öğrendiğim Üç Pratik Ders
- Paket bağımlılıklarından emin olmadan suçlu kütüphaneyi yargılama. — ciddi fark yaratıyor
- MCP araçlarında çıktı tipini ciddiye al; metin dönüyorsun diye rahatlamak olmaz. — bunu es geçmeyin
- Dokümantasyonu küçük örneklerle besle — iki satırlık örnek bile kurtarır.
Bir arkadaşım geçen yıl Eskişehir’de benzer bir şeyi Rust ile yapmaya kalktı. Kullanıcı deneyimi eklemek isterdim diyeyim ama dürüst olayım… Lisp tarafında güzellik şu ki kod azaldıkça zihinsel yük de azalıyor. Bana göre bu kötü bir şey değil; daha çok el emeği hissi veriyor. Hazır kurup unutacağınız tarzdan ziyade biraz bakım isteyen bir sistem kuruyorsunuz. Değer mi? Bence değer.
Sıkça Sorulan Sorular
MCP sunucusu Common Lisp ile yeni başlayanlara uygun mu?
Şöyle ki, Evet, uygundur. Kod hacmi küçük kaldığı için temel kavramları görmek kolaydır. Ama ekosistem detaylarına hazırlıklı olun — paket sırası sizi şaşırtabilir. Öğrenmek istiyorsanız gidin deneyin, en kötü ihtimalle iki gün harcarsınız. Ben harcadım, pişman değilim.
Roswell şart mı?
Şart değil ama olmasa hayatınız zorlaşır. Script yönetimi ve dağıtım tarafında o kadar kolaylık sağlıyor ki alternatif aramaya değmez bence. Kurun, rahatlayın.
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.



