· kaynak dev.to (home feed)
MCP Python SDK v2.0, FastMCP'yi MCPServer olarak yeniden adlandırdı ve sabitlenmemiş kurulumları sessizce bozdu
MCP Python SDK'nın v2.0.0 sürümü, mcp.server.fastmcp modülünü kullanımdan kaldırma dönemi olmaksızın mcp.server.mcpserver'a taşıdı; bu yüzden gevşek şekilde sabitlenmiş bağımlılıklar artık import'ların artık var olmadığı bir sürüme çözümleniyor.

Model Context Protocol'ün Python SDK'sı 28 Temmuz 2026'da 2.0.0 sürümünü yayınladı ve yerleşik FastMCP sınıfını MCPServer olarak yeniden adlandırdı. Mevcut projelerin import ettiği mcp.server.fastmcp modülü tamamen mcp.server.mcpserver'a taşındı ve bir dev.to yazısına göre SDK ekibi bir kullanımdan kaldırma dönemi sunmadı ve geride hiçbir uyumluluk katmanı (shim) bırakmadı. Requirements.txt dosyasında mcp'yi gevşek şekilde listeleyen projeler bir sonraki kurulumlarında gürültülü bir hatayla karşılaşmadı; sessizce, import'larının artık var olmadığı bir paket sürümü aldılar.
v2.0.0'da ne değişti
FastMCP, Python'da bir MCP server ayağa kaldırmanın decorator odaklı kısayoluydu: fonksiyonları @mcp.tool() ile işaretleyin, run çağırın ve server yayındaydı. 2.0.0 sürümü bu decorator API'sini koruyor ancak sınıfı ve onu destekleyen alt modülleri taşıyor. Ajanlara 70 Highcharts grafik türünü sunan açık kaynaklı bir MCP server'ı sürdüren dev.to yazarı, resmi migration guide'a atıf yapıyor; bu kılavuz FastMCP'nin artık MCPServer olduğunu ve birinci sınıf bir Client eklendiğini belirtiyor; yazar ayrıca v2.0.0 GitHub release notlarına da atıf yapıyor. Düşük seviyeli Server sınıfı da paylaşımlı bir dispatcher motoru etrafında yeniden inşa edildi.
Gerçek dünyadan doğrulama, jupyter-mcp-server projesindeki bir GitHub issue olarak geldi: "mcp 2.0.0 import'ları bozuyor: FastMCP, MCPServer olarak yeniden adlandırıldı, modül taşındı." O repository'de hiçbir şey değişmemişti; yalnızca bağımlılık çözümlemesi değişmişti. Bir proje, kendi yaptığı tek bir commit olmadan çalışır durumdan bozuk duruma geçebilir; çünkü sorun yaratan diff başka birinin repository'sinde durur.
Aynı sürümde ikinci, daha sessiz bir değişiklik de yanında geldi. Varsayılan serverInfo.name, yani server'ın bağlı istemcilere bildirdiği kimlik dizesi, "FastMCP"den "mcp-server"a değişti. Bu, hiçbir exception fırlatmaz ve hiçbir stack trace'de görünmez. Basitçe server'ın kendini ne diye adlandırdığını değiştirir; haftalar sonra bir logging dashboard'unda açıklanamayan bir uyumsuzluk olarak ortaya çıkan türden bir tutarsızlıktır bu.
Hata neden sessiz kalıyor
Python, bağımlılıklarda üst sınır şart koşmaz. mcp veya mcp>=1.0 şeklindeki bir requirements satırı bir tavan getirmez, dolayısıyla pip'nin 1.x'te durması için bir nedeni yoktur ve bozulma yalnızca import anında görünür hale gelir. Bu durum genellikle orijinal yazarın makinesinde değil, bir CI pipeline'ında ya da yeni bir katkımcının makinesinde gerçekleşir; bu da hatayı ilk yaşayan kişiye keyfi gelmesine yol açar.
FastMCP adında iki proje
Yeniden adlandırılan sınıf, modelcontextprotocol/python-sdk projesi tarafından sürdürülen SDK'ya aittir. Şu anda v4.0'da bulunan, SDK'nın yerleşik sınıfından önce var olan ve ona ilham veren, Jeremiah Lowin tarafından bağımsız olarak geliştirilen standalone FastMCP framework'üyle karıştırılmamalıdır. Standalone framework, yeniden adlandırılmayan veya sonlandırılmayan ayrı bir kod tabanıdır ve kullanıcıları etkilenmez. Ancak mcp.server.fastmcp import eden herkes, göç sürecinin tam ortasındadır.
Tek seferlik bir olay değil, tekrarlayan bir örüntü
dev.to yazısı, bunun bir anomaliden çok aktif olarak sürdürülen ekosistemlerin bir özelliği olduğunu savunuyor; 2026 tarihli, 97 çalışmayı kapsayan sistematik bir literatür incelemesine (arXiv 2605.24397) ve daha erken tarihli bir Go ekosistemi çalışmasına (arXiv 2309.02894) atıf yapıyor. Semver'in vaatlerine rağmen majör olmayan Maven sürümlerinin kabaca %20'si public API bozulması getiriyor ve Maven artifact'lerinin %67'si en az bir kez semver'i ihlal ediyor. Go'da, majör olmayan yükseltmelerin %28,6'sı %86,3'lük genel uyum oranına karşı bozucu değişiklikler getiriyor ve downstream programların %33,3'ü, güvenmeye理由 reasons had reason to trust (güvenmeleri için nedenleri olan) en az bir yükseltmeden etkilendi.
İncelemede ele alınan 1.519 bozucu değişiklik arasında davranışsal değişiklikler %68,1 ile öne çıkıyor; onu %13,9 ile kaldırmalar, %8,8 ile imza değişiklikleri ve %7,3 ile yeniden adlandırmalar izliyor. Başka bir deyişle, yeniden adlandırmalar uç bir örnek değil, tanınan ve tekrarlayan bir kategori; ve import eden taraf için kaldırma artı ekleme gibi davranıyorlar: eski sembol gitmiş, yerine yenisinin başka bir yerde var ve mevcut kodun bunu bilmesinin bir yolu yok. Özellikle Python'da bozucu değişikliklerin %96,4'ünü kaldırmalar oluşturuyor; bu da FastMCP'den MCPServer'a geçen yeniden adlandırmanın her mevcut import satırına yaptığı şeyin en yakın doğrulanmış karşılığı.
Yazar bir boşlukta dikkatli davranıyor: yayımlanmış hiçbir çalışma kaç MCP server'ın sabitlenmemiş bağımlılıklar taşıdığını ölçmüyor. Yine de açıkta kalan yüzey büyük. Yazıda atıf yapılan Anthropic'in Aralık 2025 duyurusuna ve MCP Blog'unun Temmuz 2026 tarihli spesifikasyon gönderisine göre ekosistem, Python ve TypeScript SDK'ları dahil 10.000'den fazla aktif public server ve aylık 97 milyondan fazla SDK indirmesi sayıyor; dört Tier-1 SDK aylık toplam kabaca 500 milyon indirmeye yaklaşırken yönetişim artık Anthropic, Block ve OpenAI'nin birlikte kurduğu, Linux Foundation yönlendirmesinde bir fon olan Agentic AI Foundation'da.
Neden önemli
Ajan geliştiricileri için ilk ders savunmacı bağımlılık yönetimi: mcp paketine tavan koyun veya pin'leyin, CI'da lockfile'lere güvenin ve sessiz bozulmaların kendini göstereceği yerin taze ortamlar olmasını bekleyin. dev.to yazarı ayrıca kendi server'ından kaynaklanan mimari bir savunmayı anlatıyor: rehberlik eden, doğrulamalı bir katmanın ham bir passthrough katmanını sarmaladığı iki katmanlı bir tool tasarımı. SDK altta kayduğunda, rehberlik eden katman göçü, çağıran ajanların bel bağladığı sözleşmeyi değiştirmeden içeride emilim edebilir. Binlerce server ve aylık on milyonlarca indirmeden oluşan bir ekosistemde, çekirdek bir SDK'daki habersiz bir yeniden adlandırma talihsiz bir kaza değil; bir sürüm tabanı veya bir dolaylılık katmanının yakalayacağı, öngörülebilir bir olaydır.
- #mcp
- #python
- #model-context-protocol
- #dependency-management
- #breaking-changes