Modül 1 · Model Context Protocol · ⏱ 5 dakika

Resource'lara erişmek

Accessing resources

Orijinal İngilizce video — Anthropic Academy / JWPlayer. Aşağıdaki Türkçe metin dersi birebir özetler.

Bu modül için tahmini süre: 5 dakika

Genel bakış

MCP’deki resource’lar, server’ınızın tool çağrılarına gerek kalmadan doğrudan prompt’a dahil edilebilen veri açmasına izin verir. Bu, Claude gibi AI modellerine context sağlamak için daha verimli bir yol oluşturur. Bu derste client tarafında read_resource metodunu nasıl yazacağınızı ve MIME type’a göre içeriği nasıl parse edeceğinizi göreceksiniz.

MCP’deki resource’lar, server’ınızın tool çağrılarına gerek kalmadan doğrudan prompt’a dahil edilebilen veri açmasına izin verir. Bu, Claude gibi AI modellerine context sağlamak için daha verimli bir yol oluşturur.

Resource isteklerini anlamak

MCP server’ınızda resource’lar tanımladığınızda, client’ınızın bunları isteyip kullanması için bir yola ihtiyacı vardır. Client, uygulamanız ile MCP server arasında köprü görevi görür; iletişimi ve veri parsing’ini otomatik olarak yönetir.

Akış basittir: kullanıcı bir dokümana referans vermek istediğinde (örneğin “@report.pdf” yazınca), uygulamanız MCP client’ı o resource’u server’dan almak için kullanır ve içeriğini doğrudan Claude’a giden prompt’a dahil eder.

Resource okumayı implement etmek

Temel işlevsellik, MCP client’ınızda bir read_resource fonksiyonu gerektirir. Bu fonksiyon, hangi resource’un alınacağını belirten bir URI parametresi alır:

async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]

MCP server’dan gelen yanıt bir contents listesi içerir. Genellikle yalnızca ilk eleman gerekir; bu eleman, asıl resource verisini MIME type gibi metadata ile birlikte taşır.

Farklı içerik tiplerini yönetmek

Resource’lar farklı içerik tiplerini dönebilir, bu yüzden client’ınızın bunları uygun şekilde parse etmesi gerekir. MIME type, veriyi nasıl ele alacağınızı söyler:

if isinstance(resource, types.TextResourceContents):
    if resource.mimeType == "application/json":
        return json.loads(resource.text)

    return resource.text

Bu yaklaşım, JSON resource’ların düzgünce Python nesnelerine parse edilmesini, düz metin resource’ların ise string olarak dönmesini sağlar. MIME type, doğru parse stratejisini belirlemenizde ipucu görevi görür.

Gerekli import’lar

Bunun çalışması için MCP client’ınıza şu import’lar gerekir:

import json
from pydantic import AnyUrl

json modülü JSON yanıtlarını parse eder; AnyUrl ise URI parametresi için uygun tip işlemini garantiler.

Resource erişimini test etmek

İmplement edildikten sonra işlevselliği CLI uygulamanız üzerinden test edebilirsiniz. “report.pdf dokümanında ne var?” gibi bir şey yazdığınızda sistem şunları yapmalı:

  • Mevcut resource’ları autocomplete listesinde göstermeli
  • Bir resource seçmenize izin vermeli
  • Resource içeriğini otomatik olarak almalı
  • O içeriği Claude’a giden prompt’a eklemeli

Temel avantaj şu: Claude doküman içeriğini doğrudan prompt’ta alır; bilgiye erişmek için tool çağrısına ihtiyaç kalmaz. Bu etkileşimleri hem hızlı hem de verimli kılar.

Uygulamanızla entegrasyon

Yazdığınız MCP client kodunun uygulamanızın diğer parçaları tarafından kullanıldığını unutmayın. read_resource fonksiyonu, diğer bileşenlerin doküman içeriklerini almak, mevcut resource’ları listelemek veya resource verisini prompt’lara entegre etmek için çağırabileceği bir yapı taşı haline gelir.

Bu sorumluluk ayrımı kodunuzu temiz tutar: MCP client server iletişimini yönetir; uygulama mantığınız bu veriyi etkili biçimde kullanmaya odaklanır.

Temel çıkarımlar

  • read_resource(uri), MCP client’ın temel resource okuma metodudur
  • Yanıttaki contents[0] genellikle ihtiyacınız olan veriyi taşır
  • MIME type’a göre parse stratejisi seçin: application/json için json.loads, text/plain için doğrudan .text
  • Pydantic AnyUrl ile URI tipini güvence altına alın
  • Resource verisi tool çağırmadan doğrudan prompt’a enjekte edilebilir