MCP sunucu taşımaları
MCP, Bob ve MCP sunucuları arasındaki iletişim için taşıma mekanizmalarını destekler.
Genel bakış
MCP, her biri farklı dağıtım senaryolarına uygun üç taşıma seçeneği sunar:
- STDIO taşıması (yerel sunucular)
- Streamable HTTP taşıması (uzak sunucular için modern standart)
- SSE taşıması (eski uzak seçenek)
Her taşımanın kendine özgü özellikleri, avantajları ve kullanım durumları vardır.
STDIO taşıması
STDIO taşıması makinenizde yerel olarak çalışır ve standart giriş/çıkış akışları aracılığıyla iletişim kurar.
STDIO taşıması nasıl çalışır
- Bob bir MCP sunucusunu alt süreç olarak başlatır
- İletişim süreç akışları aracılığıyla gerçekleşir: Bob sunucunun STDIN'ine yazar, sunucu STDOUT'a yanıt verir
- Her mesaj yeni satır karakteriyle sınırlandırılır
- Mesajlar JSON-RPC 2.0 olarak biçimlendirilir
Client Server
| |
|---- JSON message ------>| (STDIN aracılığıyla)
| | (isteği işler)
|<---- JSON message ------| (STDOUT aracılığıyla)
| |STDIO özellikleri
- Yerellik: Bob ile aynı makinede çalışır
- Performans: Çok düşük gecikme ve yük (ağ yığını dahil değil)
- Basitlik: Ağ konfigürasyonu olmadan doğrudan süreç iletişimi
- İlişki: İstemci ve sunucu arasında bire bir ilişki
- Güvenlik: Ağ maruziyeti olmadığı için doğal olarak daha güvenli
STDIO ne zaman kullanılır
STDIO taşıması şunlar için idealdir:
- Aynı makinede çalışan yerel entegrasyonlar ve araçlar
- Güvenliğe duyarlı işlemler
- Düşük gecikme gereksinimleri
- Tek istemci senaryoları (sunucu başına bir Bob örneği)
- Komut satırı araçları veya IDE uzantıları
STDIO uygulama örneği
const server = new Server({name: 'local-server', version: '1.0.0'});
// Araçları kaydet...
// STDIO taşımasını kullan
const transport = new StdioServerTransport(server);
transport.listen();Streamable HTTP taşıması
Streamable HTTP taşıması, eski HTTP+SSE taşımasının yerini alan uzak MCP sunucu iletişimi için modern standarttır. HTTP/HTTPS üzerinden çalışır ve daha esnek sunucu uygulamalarına olanak tanır.
Streamable HTTP taşıması nasıl çalışır
- Sunucu, hem POST hem de GET yöntemlerini destekleyen tek bir HTTP uç noktası (MCP uç noktası) sağlar
- Bob, HTTP POST kullanarak bu MCP uç noktasına istekler gönderir
- Sunucu isteği işler ve bir yanıt gönderir
- İsteğe bağlı olarak, sunucu Bob'a birden fazla mesaj veya bildirim akışı yapmak için aynı bağlantı üzerinden Server-Sent Events (SSE) kullanabilir
Bu, temel istek-yanıt etkileşimlerinin yanı sıra daha gelişmiş akış ve sunucu tarafından başlatılan iletişime olanak tanır.
Client Server
| |
|---- HTTP POST /mcp_endpoint ---->| (istemci isteği)
| | (isteği işler)
|<--- HTTP Response / SSE Stream --| (sunucu yanıtı / akış)
| |Streamable HTTP özellikleri
- Modern standart: Yeni uzak MCP sunucu uygulamaları için tercih edilen yöntem
- Uzak erişim: Bob'dan farklı bir makinede barındırılabilir
- Ölçeklenebilirlik: Birden fazla istemci bağlantısını eşzamanlı olarak işleyebilir
- Protokol: Standart HTTP/HTTPS üzerinden çalışır
- Esneklik: Basit istek-yanıt ve gelişmiş akışı destekler
- Tek uç nokta: Tüm MCP iletişimi için tek bir URL yolu kullanır
- Kimlik doğrulama: Standart HTTP kimlik doğrulama mekanizmalarını kullanabilir
- Geriye dönük uyumluluk: Sunucular eski HTTP+SSE istemcileriyle uyumluluğu koruyabilir
Streamable HTTP ne zaman kullanılır
Streamable HTTP taşıması şunlar için idealdir:
- Tüm yeni uzak MCP sunucu geliştirmeleri
- Sağlam, ölçeklenebilir ve esnek iletişim gerektiren sunucular
- Veri akışı veya sunucu tarafından gönderilen bildirimleri içerebilecek entegrasyonlar
- Genel hizmetler veya merkezi araçlar
- Eski SSE taşıma uygulamalarının değiştirilmesi
Streamable HTTP uygulama örneği
settings.json içinde konfigürasyon:
{
"mcpServers": {
"StreamableHTTPMCPName": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp"
}
}
}Sunucu tarafı uygulama için StreamableHTTPClientTransport için MCP SDK dokümantasyonuna bakın.
HTTP+SSE ile geriye dönük uyumluluk
İstemciler ve sunucular, kullanımdan kaldırılan HTTP+SSE taşımasıyla geriye dönük uyumluluğu koruyabilir.
Eski istemcileri desteklemek isteyen sunucular, Streamable HTTP taşıması için tanımlanan yeni MCP uç noktasının yanı sıra eski taşımanın hem SSE (/events) hem de POST (/message) uç noktalarını barındırmaya devam etmelidir.
SSE taşıması (eski)
Server-Sent Events (SSE) taşıması uzak bir sunucuda çalışır ve HTTP/HTTPS üzerinden iletişim kurar. Yeni uzak sunucular için bunun yerine Streamable HTTP taşımasını kullanın.
SSE taşıması nasıl çalışır
- Bob, HTTP GET isteği aracılığıyla sunucunun SSE uç noktasına bağlanır
- Bu, sunucunun Bob'a olaylar gönderebileceği kalıcı bir bağlantı kurar
- İstemciden sunucuya iletişim için Bob, ayrı bir uç noktaya HTTP POST istekleri yapar
- İletişim iki kanal üzerinden gerçekleşir:
- Olay akışı (GET): Sunucudan istemciye güncellemeler
- Mesaj uç noktası (POST): İstemciden sunucuya istekler
Client Server
| |
|---- HTTP GET /events ----------->| (SSE bağlantısı kur)
|<---- SSE event stream -----------| (kalıcı bağlantı)
| |
|---- HTTP POST /message --------->| (istemci isteği)
|<---- SSE event with response ----| (sunucu yanıtı)
| |SSE özellikleri
- Uzak erişim: Bob'dan farklı bir makinede barındırılabilir
- Ölçeklenebilirlik: Birden fazla istemci bağlantısını eşzamanlı olarak işleyebilir
- Protokol: Standart HTTP üzerinden çalışır (özel protokol gerekmez)
- Kalıcılık: Sunucudan istemciye mesajlar için kalıcı bir bağlantı sürdürür
- Kimlik doğrulama: Standart HTTP kimlik doğrulama mekanizmalarını kullanabilir
SSE ne zaman kullanılır
SSE taşıması şunlar için uygundur:
- Ağlar arasında uzak erişim
- Çok istemcili senaryolar
- Genel hizmetler
- Birçok kullanıcının erişmesi gereken merkezi araçlar
- Web hizmetleriyle entegrasyon
SSE uygulama örneği
import express from 'express';
const app = express();
const server = new Server({name: 'remote-server', version: '1.0.0'});
// Araçları kaydet...
// SSE taşımasını kullan
const transport = new SSEServerTransport(server);
app.use('/mcp', transport.requestHandler());
app.listen(3000, () => {
console.log('MCP server listening on port 3000');
});Dağıtım değerlendirmeleri
STDIO ve uzak taşımalar (Streamable HTTP veya SSE) arasındaki seçim, MCP sunucularınızı nasıl dağıtacağınızı ve yöneteceğinizi doğrudan etkiler.
STDIO: Yerel dağıtım
STDIO sunucuları Bob ile aynı makinede yerel olarak çalışır:
- Kurulum: Sunucu yürütülebilir dosyası her kullanıcının makinesine kurulmalıdır
- Dağıtım: Farklı işletim sistemleri için kurulum paketleri sağlamanız gerekir
- Güncellemeler: Her örnek ayrı ayrı güncellenmelidir
- Kaynaklar: Yerel makinenin CPU, bellek ve diskini kullanır
- Erişim kontrolü: Yerel makinenin dosya sistemi izinlerine dayanır
- Entegrasyon: Yerel sistem kaynaklarıyla (dosyalar, süreçler) kolay entegrasyon
- Yürütme: Bob ile başlar ve durur (alt süreç yaşam döngüsü)
- Bağımlılıklar: Herhangi bir bağımlılık kullanıcının makinesine kurulmalıdır
Örnek kullanım durumu:
STDIO kullanan yerel bir dosya arama aracı:
- Kullanıcının makinesinde çalışır
- Yerel dosya sistemine doğrudan erişime sahiptir
- Bob tarafından gerektiğinde başlatılır
- Ağ konfigürasyonu gerektirmez
- Bob ile birlikte veya bir paket yöneticisi aracılığıyla kurulması gerekir
Uzak: Barındırılan dağıtım
Uzak sunucular (Streamable HTTP veya SSE) uzak sunuculara dağıtılabilir ve ağ üzerinden erişilebilir:
- Kurulum: Bir sunucuya bir kez kurulur, birçok kullanıcı tarafından erişilir
- Dağıtım: Tek dağıtım birden fazla istemciye hizmet verir
- Güncellemeler: Merkezi güncellemeler tüm kullanıcıları anında etkiler
- Kaynaklar: Sunucu kaynaklarını kullanır, yerel makine kaynaklarını değil
- Erişim kontrolü: Kimlik doğrulama ve yetkilendirme sistemleri aracılığıyla yönetilir
- Entegrasyon: Kullanıcıya özel kaynaklarla daha karmaşık entegrasyon
- Yürütme: Bağımsız bir hizmet olarak çalışır (genellikle sürekli)
- Bağımlılıklar: Sunucuda yönetilir, kullanıcı makinelerinde değil
Örnek kullanım durumu:
Uzak taşıma kullanan bir veritabanı sorgu aracı:
- Merkezi bir sunucuda çalışır
- Sunucu tarafı kimlik bilgileriyle veritabanlarına bağlanır
- Birden fazla kullanıcı için sürekli olarak kullanılabilir
- Uygun ağ güvenliği konfigürasyonu gerektirir
- Konteyner veya bulut teknolojileri kullanılarak dağıtılır
Hibrit yaklaşımlar
Bazı senaryolar hibrit bir yaklaşımdan faydalanır:
- Ağ erişimli STDIO: Uzak hizmetlere proxy görevi gören yerel bir STDIO sunucusu
- Yerel komutlu uzak: Geri aramalar aracılığıyla istemci makinesinde işlemleri tetikleyebilen uzak bir sunucu
- Ağ geçidi deseni: Özel işlevler için uzak sunuculara bağlanan yerel işlemler için STDIO sunucuları
Taşıma karşılaştırması
| Değerlendirme | STDIO | Streamable HTTP / SSE |
|---|---|---|
| Konum | Yalnızca yerel makine | Yerel veya uzak |
| İstemciler | Tek istemci | Birden fazla istemci |
| Performans | Daha düşük gecikme | Daha yüksek gecikme (ağ yükü) |
| Kurulum karmaşıklığı | Daha basit | Daha karmaşık (HTTP sunucusu gerektirir) |
| Güvenlik | Doğal olarak güvenli | Açık güvenlik önlemleri gerektirir |
| Ağ erişimi | Gerekli değil | Gerekli |
| Ölçeklenebilirlik | Yerel makine ile sınırlı | Ağ üzerinden dağıtılabilir |
| Dağıtım | Kullanıcı başına kurulum | Merkezi kurulum |
| Güncellemeler | Dağıtılmış güncellemeler | Merkezi güncellemeler |
| Kaynak kullanımı | İstemci kaynaklarını kullanır | Sunucu kaynaklarını kullanır |
| Bağımlılıklar | İstemci tarafı bağımlılıklar | Sunucu tarafı bağımlılıklar |
Bob'da taşımaları yapılandırın
Örnek konfigürasyonlar dahil olmak üzere Bob'da taşımaları yapılandırma hakkında ayrıntılı bilgi için Bob'da MCP bölümüne bakın.
MCP'yi Anlamak
Model Context Protocol (MCP), yapay zeka sistemlerinin harici araçlar ve hizmetlerle etkileşim kurmasını sağlayan standartlaştırılmış bir iletişim protokolüdür.
Bob'da MCP Kullanımı
Model Context Protocol (MCP), harici araçlara ve hizmetlere bağlanarak Bob'un yeteneklerini genişletir. Bu kılavuz, MCP sunucularını Bob ile nasıl yapılandıracağınızı, yöneteceğinizi ve kullanacağınızı gösterir.