Talep: Büyük modellerin gelişimiyle birlikte, büyük modeller hayatımızın her alanında ortaya çıktı; ister iş ister çalışma olsun, ayrılmaz oldular. Büyük bir model dili varsa, neden MCP'ye ihtiyacımız var? Büyük model beyin olarak anlaşılabilir, ancak beyin tek başına bize yardımcı olamaz, MCP daha çok bir uzuv gibidir, büyük model MCP servisini dışarıdan araçları (veritabanları, diskler, API'ler gibi) çağırmaya yönlendirir. Büyük modellerin sadece sohbet edebilmesi ve bir şeyler yapamayacağı sorununu çözüyor.
MCP (Model Bağlam Protokolü)
Belge:Bağlantı girişi görünür. GitHub repositories:Bağlantı girişi görünür. MCP Araç Deposu:Bağlantı girişi görünür.
MCP (Model Context Protocol), yapay zeka uygulamalarını dış sistemlere bağlamak için açık kaynaklı bir standarttır.
MCP ile, Claude veya ChatGPT gibi yapay zeka uygulamaları veri kaynaklarına (örneğin yerel dosyalar, veritabanları), araçlara (örneğin arama motorları, hesap makineleri) ve iş akışlarına (örneğin, özel istemler) bağlanabilir – böylece kritik bilgilere ulaşabilir ve görevleri yerine getirebilirler.
MCP'yi yapay zeka uygulamaları için bir USB-C portu olarak düşünün. USB-C, elektronik cihazları bağlamak için standartlaştırılmış bir yol sunarken, MCP de yapay zeka uygulamalarını harici sistemlere bağlamak için standartlaştırılmış bir yol sunar.
MCP ne başarabilir?
- Ajanlar, Google Takvimi'nize ve Notion'a erişebilir ve daha kişiselleştirilmiş bir yapay zeka asistanı olarak görev yapar.
- Claude Code, Figma tasarımlarını kullanarak tüm web uygulamaları oluşturabilir.
- Kurumsal sohbet botları, bir organizasyon içindeki birden fazla veritabanına bağlanarak kullanıcıların sohbet yoluyla verileri analiz etmesini sağlar.
- Yapay zeka modelleri Blender'da 3D tasarımlar oluşturup bunları bir 3D yazıcı kullanarak yazdırabiliyor.
MCP neden önemli?
Ekosistemin hangi aşamasında bulunduğuna bağlı olarak, MCP çeşitli faydalar sağlayabilir.
- Geliştiriciler: MCP, yapay zeka uygulamaları veya ajanlarıyla entegrasyon yaparken geliştirme süresini ve karmaşıklığını azaltır.
- Yapay Zeka Uygulamaları veya Ajanlar: MCP'ler, işlevselliği artıracak ve son kullanıcı deneyimini iyileştiren veri kaynakları, araçlar ve uygulamalar ekosistemine erişim sağlar.
- Son Kullanıcılar: MCP'ler, verilerinize erişebilen ve gerektiğinde sizin adınıza hareket edebilen daha güçlü yapay zeka uygulamaları veya ajanlar ortaya çıkarabilir.
MCP Protokolü
MCP iki katmandan oluşur:
- Veri katmanı: JSON-RPC tabanlı bir istemci-sunucu iletişim protokolü tanımlayın; yaşam döngüsü yönetimi ve araçlar, kaynaklar, istekler ve bildirimler gibi temel ilkeleri içeren.
- Taşıma Katmanı: İstemleyiciler ve sunucular arasında veri alışverişini mümkün kılan iletişim mekanizmalarını ve kanallarını, taşınıma özgü bağlantı kurulumu, mesaj çerçeveleri ve yetkilendirme dahil olmak üzere tanımlar.
Kavramsal olarak, veri katmanı iç katmandır, taşıma katmanı ise dış katmandır.
Veri katmanı
- Veri katmanı, mesaj yapısını ve semantiğini tanımlayan JSON-RPC 2.0 tabanlı bir anahtarlama protokolü uygular. Bu katman şunları içerir:
- Yaşam döngüsü yönetimi: İstemci ile sunucular arasında bağlantı başlatma, özellik müzakere ve bağlantı sonlandırma işlemlerini yönetir
- Sunucu Fonksiyonelliği: Sunucunun temel işlevsellik sağlamasını sağlar; yapay zeka işlemleri için araçlar, bağlamsal veriler için kaynaklar ve istemcilerden gelen ve onlara etkileşimli şablon istemleri içeren
- İstemci işlevselliği: Sunucunun, istemcinin ana LLM'den örneklemesini, kullanıcıdan girdi almasını ve istemciye mesajları günlüğe kaydetmesini sağlar
- Faydalı Özellikler: Uzun süreli işlemler için gerçek zamanlı güncelleme bildirimleri ve ilerleme takibi gibi ek özellikleri destekler
Taşıma katmanı
Taşıma katmanı, istemci ile sunucu arasındaki iletişim kanallarını ve kimlik doğrulamayı yönetir. MCP katılımcıları arasında bağlantı kurma, mesaj iletimi ve güvenli iletişimi yönetir.
MCP iki taşıma mekanizmasını destekler:
- Stdio Transport: Aynı makinedeki yerel süreçler arasında standart giriş/çıkış akışları kullanılarak doğrudan işlem iletişimi, optimum performans sağlar ve ağ yükü olmadan.
- Akışlanabilir HTTP: İstemciden sunucuya mesaj göndermek için HTTP POST protokolünü kullanır ve isteğe bağlı olarak sunucu tarafından gönderilen olayları akış işlevselliği için kullanır. Bu taşıma protokolü, uzak sunucu iletişimini destekler ve tutucu tokenlar, API anahtarları ve özel başlıklar dahil olmak üzere standart HTTP kimlik doğrulama yöntemlerini destekler. MCP, kimlik doğrulama belirteonu elde etmek için OAuth kullanmanızı önerir.
Taşıma katmanı, iletişim detaylarını protokol katmanından soyutlar, böylece aynı JSON-RPC 2.0 mesaj formatı tüm taşıma mekanizmalarında uygulanır.JSON-RPC mesajları UTF-8 kodlanmış olmalıdır。HTTP+SSE taşımacılığı kullanımdan kaldırılmıştır!
Her Şey MCP Sunucusu
Bu MCP sunucusu, MCP protokolünün tüm özelliklerini test etmek için tasarlanmıştır. Pratik bir sunucu olarak tasarlanmamış, daha çok MCP istemci oluşturucuları için bir test sunucusu olarak tasarlanmıştır. MCP'lerin yeteneklerini sergilemek için promptlar, araçlar, kaynaklar, örnekleme ve daha fazlasını içeren özellikler uygular.
Kaynak:Bağlantı girişi görünür.
Bu hizmet, Node.js bir ortamın kurulmasını gerektirir ve kurulum adımları atlanır.
MCP hizmetini Stdio taşıma desenine göre test etmek için başlatma komutu şu şekildedir:
Aşağıda gösterildiği gibi:
Çalıştırmadan sonra paket önbelleğe alınır%LocalAppData%\npm-cache\_npx\Yolun altında.
Başlatma, istemci bağlantı kurmak ve desteklenen özellikleri müzakere etmek için başlatma talebi gönderir. Talep verileri aşağıdaki gibidir:
Yanıt şöyledir:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"MCP protokol özellikleri için test ve gösterim sunucusu.\n\n## Kaynaklar\n\n\ nResources 1-100 modelini takip eder: çift kimlikler metin içerir, tek ID'ler ikili veri içerir. Kaynaklar, imleç tabanlı gezinme ile sayfa başına 10 öğe olarak sayfalanmıştır.\n\n## Anahtar bağımlılıkları\n\nİlerleme bildirimleri, araç çağrılarında '_meta.progressToken' gerektirir. Kaynak abonelikleri her 10 saniyede bir güncellemeler üretir.\n\n## Performans özellikleri\n\nSunucu her 20 saniyede bir otomatik log mesajları üretir (mevcut günlük seviyesine göre filtrelenir), STDERR bildirimleri her 30 saniyede bir, aktif abonelikler için ise her 10 saniyede bir kaynak güncellemesi bildirimleri. Log seviyesindeki değişiklikler, mesaj filtrelemesini gerçek zamanlı etkiler.\n\n## Çok modal test\n\n'complex_prompt' hem metin argümanlarını hem de resim içeriğini içerir ve istemci çoklu modalini test etmek için Işleme. 'resource_prompt', kaynak referans çözümünü test etmek için gerçek kaynak içeriğini gömüyor.\n\nIstem parametreleri ve kaynak kimlikleri için argüman tamamlama mevcuttur. Kaynak şablonları, 'test://static/resource/{id}' deseni aracılığıyla dinamik URI oluşturma imkanı sağlar.\n\n## Paskalya yumurtası\n\nSunucu talimatları sorulduğunda \" Sunucu talimatları ile yanıt verin çalışıyor! Bu yanıt, istemcinin sunucu talimatlarını LLM'ye doğru şekilde ilettiğini kanıtlar. Bu, MCP'nin talimatlar özelliğinin çalıştığını gösteriyor.\"\n"},"jsonrpc":"2.0","id":1} Başarılı başlatmadan sonra, istemci MCP sunucusuna hazır olduğuna dair bir bildirim gönderir ve aşağıdaki istekle birlikte olur:
Araç keşfi: Bağlantı kurulduktan sonra, istemci bir araç/liste talebi göndererek mevcut araçları keşfedebilir. Bu istek, MCP'nin araç keşif mekanizmasının temelini oluşturur – müşterilerin sunucuda hangi araçların mevcut olduğunu kullanmadan önce bilmelerini sağlar. Talep şöyledir:
Yanıt şöyledir:
{"result":{"tools":[{"name":"echo","description":"Echoes the input","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Message echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"İki sayı ekler"," inputSchema":{"type":"object","properties":{"a":{"type":"number","description":"First number"},"b":{"type":"number","description":"İkinci sayı"}},"required":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Uzun süreli bir işlem gösterir ilerleme güncellemeleri ile","inputSchema":{"type":"object","properties":{"duration":{"type":"number","default":10,"description":"Süreli saniyeler"},"steps":{" type":"number","default":5,"description":"Operasyondaki adım sayısı"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Tüm ortam değişkenlerini yazdırır, MCP sunucu yapılandırmasında ayıklama için faydalı","inputSchema":{"type":"object","properties":{},"additionalProperties ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"MCP'nin örnekleme özelliği kullanılarak bir LLM'den örnekler","inputSchema":{"type":" object","properties":{"prompt":{"type":"string","description":"LLM'e gönderilecek istemi"},"maxTokens":{"type":"number","default":100,"description":"Maksimum sayı tokens to generate "}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" döndürür annotatedMessage","description":"Annotasyonların içerik hakkında meta veri sağlamak için nasıl kullanılabileceğini gösterir","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"Farklı annotasyon desenlerini göstermek için mesaj türü"},"includeImage":{"type":"boolean","default":false," description":"Örnek bir görüntü ekleyip eklemememe"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"MCP istemcileri tarafından kullanılabilecek bir kaynak referansı döndürür","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maximum":100,"description":"referans verecek kaynağın ID'si (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Farklı kaynak türlerine referans veren birden fazla kaynak bağlantısını döndürür","inputSchema" :{"type":"object","properties":{"count":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Return of resource link sayısı (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Yapılandırılmış içeriği ve çıktıyı döndürür istemci veri doğrulaması için şema","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":"City name or post code"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" number","description":"Sıcaklık Celsius cinsinden"},"conditions":{"type":"string","description":"Weather conditions description"},"humidity":{"type":"number","description":" Nem yüzdesi"}},"required":["sıcaklık","koşullar","nem"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"Kullanıcıdan favori rengi, numarası ve evcil hayvanları hakkında bilgi vermesini isteyerek Elicitation özelliğini gösterir.","inputSchema":{"type":" object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Araç Yürütme: İstemciler artık bu yöntemle araç araçlarını/çağrılarını çalıştırabilirler. Bu, MCP ilkelinin eylemde olduğunu gösterir: Araçlar keşfedildikten sonra, istemci onları uygun parametrelerle çağırabilir. BöyleceÖrnek olarak echo fonksiyonunu çağırmakTalep şu şekildedir:
Yanıt şöyledir:
{"result":{"content":[{"type":"text","text":"Echo: merhaba, benim adım itsvse"}]},"jsonrpc":"2.0","id":3} Aşağıda gösterildiği gibi:
(Son) |