İçeriğe geç
mcpd
daemon yok
Kaynak

Mastra'dan geçiş

mcpd, Mastra'nın gözlemlenebilirliğine ve kalıcı iş akışlarına ücretsiz, kendi barındırdığınız bir seçenektir. Bu sayfa nerede önde, nerede geride olduğunu ve nasıl geçileceğini anlatır.

Bu nedir

Mastra bir ajan framework'üdür: ajanlar, iş akışları, bellek, RAG ve gözlemlenebilirlik, tek bir TypeScript bağımlılığında. mcpd ise kodunuzun yanındaki bir daemon'dur: bir iş akışını adımları arasında tutar ve her adımı kaydeder; modelleri, prompt'ları ve araçları size bırakır. Ajanınızın çevresini saran bir framework değildir ve öyle olmamak üzere yazılmıştır.

Bundan sonrasının çoğuna bu fark karar verir. Mastra'nın gözlemlenebilirliği ajanınızı bilir, çünkü onun içindedir. mcpd ajanınızı, ajanınız OpenTelemetry yaydığı için bilir; bu da ajanınızın çevresindeki servisler ve hiçbir zaman TypeScript ile yazılmamış ajanlar için de çalıştığı anlamına gelir.

Önemli olan farklar

İş akışının gövdeleri, hangi dilde olursa olsun sizin sürecinizde kalır

İkisi de kalıcı iş akışları çalıştırır. Mastra'nın adımları, Mastra sürecinin içinde duran, kendi deposu üzerinden askıya alınıp devam ettirilen TypeScript fonksiyonlarıdır. mcpd'nin tanımı ise daemon'un tuttuğu veridir; adım gövdeleri sizin sürecinizin tuttuğu koddur ve altı SDK'nın konuştuğu, her dilin konuşabileceği bir HTTP protokolü üzerinden teker teker kiralanarak alınır. Daemon hiçbir zaman bir model, bir prompt ya da bir kimlik bilgisi görmez ve bir gövde, tanım değişmeden değişebilir.

Daemon'un tuttuğu şey, hayatta kalması gereken kısımdır: imleç, günlük, yeniden deneme bütçesi, zamanlayıcılar ve gelmesi bir hafta sürebilecek bir olayın beklenmesi. Bir çalıştırma, onu başlatan süreçten ve son adımına hizmet eden worker'dan uzun yaşar. Bakınız İş akışları.

OpenTelemetry'yi tek bir framework'ten dışa aktarmaz, alır

Bütün tez budur. Mastra'nın gözlemlenebilirliği bir Mastra uygulamasının içinden dışa aktarır, yani görebildiği şey o uygulamanın yazıldığı dilde yaptığı şeydir. mcpd ise collector'ın kendisidir: uygulamanızda hiçbir mcpd kodu olmadan, herhangi bir dildeki herhangi bir OpenTelemetry SDK'sından OTLP alır ve ajanın çevresindeki servisleri de ajanın kendisi kadar rahat kaydeder.

Ayrıca OTLP yayar, yani mcpd kurmanız gereken bir hattın sonunda değil, zaten sahip olduğunuz bir hattın ortasında durabilir. Bakınız İletme.

Maskeleme altı sinyalin hepsini kapsar

Mastra'nın SensitiveDataFilter bileşeni bir span işleyicisidir. Yalnızca span'ler üzerinde çalışır, başka hiçbir şeyde çalışmaz; yani yapılı bir loga geçirilen bir anahtar ya da bir puanın gerekçesinde veya bir geri bildirimde alıntılanan bir sır, her exporter'a maskelenmeden ulaşır.

mcpd span'leri, logları, metrik etiketlerini, puanları, geri bildirimleri ve yön notlarını maskeler; varsayılan olarak açıktır, hiçbir şey yazılmadan ve hiçbir şey iletilmeden önce çalışır.

Anahtar eşleşmesi de tam ad yerine alt dize üzerinden olur, yani awsSecretAccessKey ve X-API-Key, secret ve x-api-key kurallarıyla yakalanır. Adın tamamının eşleşmesini isteyen bir kural kümesi ikisini de kaçırır.

Sınırı açıkça söyleyelim: maskeleme, bir alanın adına bakarak eşleşir, içeriğinin biçimine bakarak değil. Bir prompt'un ortasına ya da zararsız bir anahtar altında saklanan bir adrese yapıştırılmış bir token'ı iki araç da kaldırmaz. Maskeleme, kazara sızdırdığınız şeyi azaltır. Bir güvence değildir.

mcpd'nin bu durum için eklediği şey bir filtre değil, bir puanlayıcıdır. Yerleşik no_leaked_secret, bir çalıştırmanın yanıtını okur ve bir kimlik bilgisinin biçimine göre eşleşir; böylece bir tamamlamaya karışan bir anahtar en azından size bildirilir. Bakınız Regresyon testi.

Ingest pipeline
  1. Decode

    OTLP or native, gzip or plain

  2. Sample

    Decided once, at the root

  3. Redact

    Before anything is written

  4. Price

    From the configured price book

  5. Store

    One transaction per batch

Redaction is stage three, not a cleanup job. A value that a rule matches never reaches storage at all.

Örnekleme deterministiktir

Mastra'nın oranlı örneklemesi Math.random() çağırır. Bu yüzden bir yük dengeleyicinin arkasındaki her kopya aynı trace hakkında farklı karar verir ve iki servisi kesen bir çalıştırma biri tarafından saklanıp diğeri tarafından düşürülebilir.

mcpd trace kimliğinin özetini alır, yani her kopya hiçbir eşgüdüm olmadan aynı yanıta varır ve saklanan bir trace bütün olarak saklanır. Daemon'un seçenekleri iki stratejiye ulaşır: her şeyi sakla ve bu deterministik oran. Oran ne derse desin her hatayı saklayacak olan bir kuyruk stratejisi politika türünde mevcuttur ama bu sürümde komut satırından erişilemez. Bakınız Örnekleme.

Gerisi, kısaca

Alanmcpd ne yapar
Dağıtım Deposu ve arayüzü içine derlenmiş tek bir statik ikili dosya. Node yok, sidecar yok.
Depolama Dizüstü için SQLite, ekip için Postgres ya da ClickHouse. Üçü de CI'da gerçek bir sunucuya karşı test edilir.
Arama Saklanan her prompt ve tamamlama üzerinde tam metin.
Metrikler Alımda toplanır; kesin kuantiller ve çalıştırmaya geri götüren exemplar'larla.
Maliyet Alımda fiyatlanır ve saklanır. Önbellekten okunan token'lar kendi oranından hesaplanır. Bilinmeyen bir model, ücretsiz diye bildirilmek yerine fiyatsız bırakılır.
SDK'lar TypeScript, Python, Rust, Go, Kotlin ve Elixir; tek bir spesifikasyondan üretilir, bu yüzden ayrışamazlar. Her biri bir iş akışı kurucusu ve bir worker taşır.
İş akışları Daemon'un tuttuğu dokuz yapı: adımlar, ajan turları, uykular, olay beklemeleri, paralel dallar, foreach, sınırlı döngüler ve alt çalıştırmalar. Yeniden denemeler, etkiler ve sınırlar adım başınadır. Bir uyumluluk takımı, aynı çalıştırmayı altı dilin hepsinden sunar.
Değerlendirme On üç deterministik puanlayıcı, ayrıca OpenAI biçiminde her endpoint'e karşı model notlu puanlama. Üretim çalıştırmalarından yakalanan veri kümeleri ve örneklem boyutunu bildiren deney karşılaştırması.
Lisans Apache-2.0. Hesapsız kendiniz barındırın ya da mcpd.sh üzerinde ücretsiz kullanın.

mcpd'nin geride olduğu yerler

Bunlar keşfetmenize bırakılmak yerine burada söyleniyor, çünkü yalnızca kazanılan yerleri sıralayan bir karşılaştırma reklamdır.

  • Kodunuzun çevresini saran bir framework değil. Mastra size tek bir bağımlılıkta ajanlar, bellek, RAG ve bir model yönlendiricisi verir. mcpd kalıcı çalıştırmayı ve onun kaydını verir; modelleri, prompt'ları ve araçları kodunuza bırakır. Her şeyi yapan tek bir bağımlılık istiyorsanız, o tek bağımlılık Mastra'dır.
  • Adıyla anılan sağlayıcı exporter'ları yok. Mastra Langfuse, LangSmith, Braintrust, Arize, Datadog ve başkaları için adıyla bütünleşmeler sunar. mcpd OTLP iletir; bu, tek bir uygulamayla bunların çoğuna ulaşır. Ama yalnızca kendi protokolünü konuşan bir hedef erişim dışındadır.
  • SSO, SCIM ya da RBAC yok. Kimlik doğrulama, altı API anahtarı kapsamı ve anahtar başına bir proje listesinden ibarettir. Zaten çalıştırdığınız kimlik proxy'sinin arkasına koyun.

İşler ilerledikçe güncellenen tam döküm PARITY.md dosyasındadır.

Geçiş

Ajanınız zaten OpenTelemetry yayıyorsa bu iki ortam değişkeni demektir. mcpd, her OpenTelemetry SDK'sının konuşmayı zaten bildiği endpoint'lerde HTTP üzerinden OTLP konuşur. Trace'ler JSON ya da protobuf olabilir; loglar ve metrikler JSON olmalıdır.

mevcut bir OpenTelemetry kurulumunu mcpd'ye yöneltin

export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

Protokol satırı önemlidir. 4317 portu alışılageldiği üzere gRPC'dir ve mcpd orada HTTP konuşur; yani gRPC varsayılanında bırakılmış bir SDK doğru porta bağlanır ve başarısız olur. OpenTelemetry sayfası bunu ve geri kalan ayarları anlatır.

İkisini iki hafta boyunca birlikte çalıştırın. mcpd sakladığı span'leri daha önce kullandığınız yere iletir; böylece ikisini, geri alamayacağınız bir geçiş üzerinden değil aynı trace'ler üzerinden karşılaştırabilirsiniz. Yalnızca span'leri iletir: loglar, metrikler, puanlar, geri bildirimler ve yön notları mcpd'de kalır.

karar verene kadar eski hedefi koruyun

mcpd serve --forward-endpoint https://your-existing-collector

Ajanınız henüz OpenTelemetry yaymıyorsa Hızlı başlangıç ile başlayın ya da kenar çubuğundaki Ölçümleme altından dilinizi seçin.

Bu karşılaştırma nasıl yapıldı

Bu sayfadaki Mastra ifadeleri, Ağustos 2026'da kaynağının okunmasına dayanır; belgelerine ya da bir kıyaslama çalıştırmasına değil. Burada hiçbir başarım sayısı yok, çünkü arkasında duracağımız hiçbir ölçüm yapmadık.

Mastra etkin biçimde geliştiriliyor ve bunların herhangi biri doğru olmaktan çıkabilir. Güncelliğini yitirmiş bir şey bulursanız bu sayfada bir hata var demektir: bir issue açın, düzeltilecektir.

Sırada