· kaynak dev.to (home feed)
mcp-cpp: topluluk tarafından geliştirilen C++17 SDK, MCP'nin resmi conformance paketini geçti
Geliştiriciler, Model Context Protocol için C++17 tabanlı bir SDK olan mcp-cpp'yi yayınladı ve resmi conformance paketiyle test etti — güncel spesifikasyonda yüzde 100 başarı elde ederken hem kendi kodlarında hem de test aracında hatalar buldular.

Resmi desteğin bulunmadığı yerde bir C++ SDK
Resmi MCP SDK listesi on dil içeriyor — TypeScript, Python, C#, Go, Rust, Ruby, Java, Swift, PHP ve Kotlin — ancak C++ yok; oysa dünyadaki veri altyapısının büyük kısmı, veritabanlarından ve trading sistemlerinden oyun motorlarına ve gömülü cihazlara kadar, C++ ile yazılmış durumda. Bir geliştirici şimdi, 2026-07-28 spesifikasyonunu hedefleyen, topluluk tarafından geliştirilmiş bir Model Context Protocol SDK'sı olan mcp-cpp'yi yayınladı ve bunu kendi kendine sertifikalandırmak yerine resmi conformance paketine karşı doğruladı. Proje, 15 Ekim 2026 tarihinde yayımlanan bir dev.to yazısında tanımlanıyor; kod MIT lisansıyla erişime açık.
SDK mevcut C++ yapılarına doğrudan dahil edilebilecek şekilde tasarlanmış: async runtime yok, tek bir gömülü JSON header'ı, tek bir opsiyonel HTTP kütüphanesi ve CMake'in find_package'ı üzerinden entegrasyon. Yazıya göre motivasyon, ajanların tool erişimi için standart protokol MCP haline gelirken giderek daha fazla yerel altyapıya ulaşmaya ihtiyaç duymaları.
Neler uyguluyor
2026-07-28 revizyonu 2025 dönemi modelinden keskin biçimde ayrılıyor: initialize handshake yok, oturum tanımlayıcısı yok, protokol sürümü ve istemci yetenekleri her isteğin params._meta'sında taşınıyor, sunucular kendilerini server/discover üzerinden duyuruyor ve sunucular asla istek başlatmıyor — daha fazla girdi gerektiğinde bir input_required sonucu döndürüyor ve istemci yeniden deniyor; yazı bu desene MRTR adını veriyor.
mcp-cpp her iki rolü de kapsıyor. Sunucu tarafı tools, resources ve prompts için bir builder, RFC 6570 tarzı URI şablonları, capability gating, ağaç içi bir HMAC-SHA256 uygulamasıyla imzalı request-state codec'i, ilerleme bildirimleri, iptal ve cache'lenebilir sonuçlar sunuyor. İstemci ise bloklayan ve değer semantikli; retry akışını otomatik tamamlıyor ve PKCE ile dinamik istemci kaydını içeren tam bir OAuth 2.1 istemcisiyle geliyor. Transportlar iki tarafta da stdio ve Streamable HTTP'yi kapsıyor; mirrored-header zorunluluğu, SSE yanıtları ve Last-Event-ID yeniden bağlanmasıyla birlikte, her çağrıda input ve output şemalarını zorunlu kılan bir JSON Schema 2020-12 doğrulayıcısı da mevcut.
Conformance sonuçları
Ekip, SDK'yı resmi SDK'ların kullandığı aynı paket olan modelcontextprotocol/conformance v0.2.0-alpha.12 ile, her iki spesifikasyon revizyonunda ve her iki rolde test etti. 2026-07-28'de sunucu 42 kontrolün 42'sini ve 20 senaryonun 20'sini geçti; istemci ise 32 senaryonun 32'sini ve 399 kontrolün 399'unu geçti; bu, tüm 25 OAuth 2.1 ve client-ID metadata senaryosunu da içeriyor. Daha eski 2025-11-25 revizyonunda sunucu 30 üzerinden 26, istemci 18 üzerinden 17 aldı.
Her başarısızlık, bir açıklamayla temel duruma alınmış. Dört 2025 sunucu hatasının tümü, sunucunun bir çağrı sırasında istemciye istek göndermesini gerektiriyor; 2026 revizyonunun retry deseniyle değiştirdiği bir mekanizma bu, ve kaldırılmış bir mekanizmayı uygulamak bilinçli bir hedef dışı kararı. Tek 2025 istemci hatası ise test aracının kendisindeki bir hataya bağlanıyor.
İki tarafta da bulunan hatalar
Test aracı, SDK içinde birkaç gün içinde beş gerçek hatayı yakaladı; her biri adlandırılmış bir spec maddesine bağlıydı: Streamable HTTP üzerinden istekler sırasında bildirimlerin sessizce düşürülmesi, bilinmeyen alanları reddeden eski yanıtlara 2026'ya özgü bir alanın enjekte edilmesi, JSON-RPC'in hata yanıtlarında geçerli olan null id'nin katı biçimde reddedilmesi, initialize'ın döndürdüğü oturum tanımlayıcısı ile bir sonraki istek arasındaki yarış durumu ve boş mirrored-header değerlerinin hatalı işlenmesi.
Paketin kendisi de bağışık değildi. Bir elicitation senaryosunda mock, sunucudan istemciye giden elicitation'ı hiç iletmiyor, dolayısıyla tool çağrısı hiç tamamlanmıyor. Ekip, resmi rust-sdk referans istemcisini aynı ortamda derledi ve bunun da aynı şekilde başarısız olduğunu bildirdi; hata yukarı akışa bildirildi ve bu kanıtla birlikte temel duruma alındı.
Tasarım ve mevcut kullanım
Tasarım, göz alıcı olmayan altyapı kısıtlarını hedefliyor: GCC 9 ve MSVC v142 araç zincirlerinin desteklenmeye devam etmesi için 20/23 değil C++17, istisnasız bir protokol katmanı, harici kripto bağımlılığı yok — entropy Windows'ta RtlGenRandom'dan, başka yerlerde /dev/urandom'dan geliyor — ve tek iş parçacıklı, durumsuz dispatch. SDK halihazırda sqlite3, file, MySQL, PostgreSQL ve dm8 üzerinde 13 yapılandırılmış veritabanı tool'u sunan üretim amaçlı bir MCP sunucusu olan zorm-mcp'yi çalıştırıyor. Yol haritasında OAuth sunucu tarafı zorunluluğu, vcpkg ve Conan portları ve daha hızlı bir parser var — README, ham parsing'in şu anda serde_'den yavaş olduğunu açıkça belirtiyor.
Neden önemli
Ajanlar, ulaşabildikleri sistemler kadar kullanışlıdır ve dünyadaki verilerin büyük kısmı C++ arayüzlerinin arkasında yaşıyor. Şimdiye kadar bir C++ kod tabanını MCP'ye açmak, protokol sorunlarını elle yazmak ya da başka bir dil üzerinden köprü kurmak anlamına geliyordu. mcp-cpp bu boşluğu kapatıyor ve uyumluluk iddialarını resmi SDK'ların kullandığı aynı conformance paketine dayandırıyor — çoğu topluluk kütüphanesinin aşamadığı daha yüksek bir kanıt standardı bu. Test etme iki yönlü işledi: test aracı birkaç gün içinde beş gerçek entegrasyon hatasını ortaya çıkardı ve yazarlar karşılığında, resmi Rust istemcisiyle çapraz doğrulama yaparak bir test aracı hatasını belgelediler. Yazıya göre sonraki adım, C++'yı resmi SDK listesine önermek; bu karar MCP SDK Working Group'a ait ve ağaç içi conformance raporları ile üretim kullanımı destekleyici gerekçe olarak konumlandırılıyor.
- #cpp
- #mcp
- #sdk
- #open-source
- #conformance-testing