Vai al contenuto
mcpd
nessun daemon
Codice

Passare da Mastra

mcpd è un’alternativa gratuita e self-hosted all’osservabilità di Mastra e ai suoi workflow durevoli. Questa pagina dice dove è avanti, dove è indietro e come passare.

Che cos’è

Mastra è un framework per agenti: agenti, workflow, memoria, RAG e osservabilità, in una sola dipendenza TypeScript. mcpd è un daemon accanto al tuo codice: conserva un workflow tra un passo e l’altro e registra ogni passo, e lascia a te i modelli, i prompt e gli strumenti. Non è un framework intorno al tuo agente, ed è scritto per restarne fuori.

Quella differenza decide quasi tutto quello che segue. L’osservabilità di Mastra sa del tuo agente perché ci sta dentro. mcpd sa del tuo agente perché il tuo agente emette OpenTelemetry, il che vuol dire che vale anche per i servizi intorno al tuo agente, e per agenti che non sono mai stati scritti in TypeScript.

Le differenze che contano

I corpi del workflow restano nel tuo processo, in qualunque linguaggio

Tutti e due fanno girare workflow durevoli. I passi di Mastra sono funzioni TypeScript dentro il processo di Mastra, sospese e riprese attraverso il suo storage. La definizione di mcpd è un dato che tiene il daemon, e i corpi dei suoi passi sono codice che tiene il tuo processo, presi in carico un lease alla volta attraverso un protocollo HTTP che sei SDK parlano e che qualunque linguaggio può parlare. Il daemon non vede mai un modello, un prompt o una credenziale, e un corpo può cambiare senza che cambi la definizione.

Quello che il daemon tiene davvero è la parte che deve sopravvivere: il cursore, il diario, il budget dei nuovi tentativi, i timer, e un’attesa per un evento che può metterci una settimana ad arrivare. Un’esecuzione sopravvive al processo che l’ha avviata e al worker che ne ha servito l’ultimo passo. Vedi Workflow.

Riceve OpenTelemetry invece di esportarlo da un solo framework

È tutta la tesi. L’osservabilità di Mastra esporta da dentro un’applicazione Mastra, quindi quello che riesce a vedere è quello che fa quell’applicazione, nel linguaggio in cui è scritta. mcpd è il collector: riceve OTLP da qualunque SDK OpenTelemetry, in qualunque linguaggio, senza nessun codice mcpd nella tua applicazione, e registra i servizi intorno all’agente esattamente come registra l’agente.

Emette anche OTLP, quindi mcpd può stare in mezzo a una pipeline che hai già, invece che in fondo a una che devi costruire. Vedi Inoltro.

L’oscuramento copre tutti e sei i segnali

Il SensitiveDataFilter di Mastra è un processore di span. Gira sugli span e su nient’altro, quindi una chiave passata a un log strutturato, o un segreto citato nella ragione di un punteggio o in un feedback, arriva a ogni exporter senza essere oscurata.

mcpd oscura span, log, etichette delle metriche, punteggi, feedback e note di aspetto, acceso per impostazione predefinita, prima che qualunque cosa venga scritta e prima che qualunque cosa venga inoltrata.

Il confronto di mcpd sui nomi delle chiavi avviene per sottostringa e non sul nome esatto, quindi awsSecretAccessKey e X-API-Key vengono presi dalle regole per secret e x-api-key. Un insieme di regole che pretende la corrispondenza dell’intero nome se li lascia sfuggire tutti e due.

Il limite, detto chiaramente: l’oscuramento cerca corrispondenze sul nome di un campo, non sulla forma del suo contenuto. Un token incollato in mezzo a un prompt, o dentro un URL archiviato sotto una chiave innocua, non viene tolto da nessuno dei due strumenti. L’oscuramento riduce quello che fai trapelare per sbaglio. Non è una garanzia.

Quello che mcpd aggiunge per quel caso è uno scorer, non un filtro. Lo scorer integrato no_leaked_secret legge la risposta di un’esecuzione e cerca corrispondenze sulla forma di una credenziale, così una chiave finita in una completion ti viene almeno riferita. Vedi Test di regressione.

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.

Il campionamento è deterministico

Il campionamento per rapporto di Mastra chiama Math.random(). Ogni replica dietro un bilanciatore di carico decide quindi in modo diverso sulla stessa traccia, e un’esecuzione che attraversa due servizi può essere tenuta dall’uno e scartata dall’altro.

mcpd calcola l’hash dell’id di traccia, così ogni istanza arriva alla stessa risposta senza nessun coordinamento e una traccia tenuta è tenuta intera. Le opzioni del daemon arrivano a due strategie: tenere tutto e questa frazione deterministica. Una strategia di coda, che terrebbe ogni errore qualunque cosa dica il tasso, esiste nel tipo della politica, ma in questa build non è raggiungibile da riga di comando. Vedi Campionamento.

Il resto, in breve

AmbitoChe cosa fa mcpd
Deploy Un solo binario statico con lo storage e l’interfaccia compilati dentro. Niente Node, niente sidecar.
Storage SQLite per un portatile, Postgres o ClickHouse per una squadra. Tutti e tre provati in CI su un server vero.
Ricerca Testo pieno su ogni prompt e ogni completion archiviati.
Metriche Aggregate all’ingest, con quantili esatti ed exemplar che riportano a un’esecuzione.
Costo Valorizzato all’ingest e archiviato. I token letti dalla cache sono conteggiati alla loro tariffa. Un modello sconosciuto resta senza prezzo invece di essere riferito come gratuito.
SDK TypeScript, Python, Rust, Go, Kotlin ed Elixir, generati da una sola specifica così non possono divergere. Ognuno porta un costruttore di workflow e un worker.
Workflow Nove costrutti, tenuti dal daemon: passi, turni di agente, sleep, attese su eventi, rami paralleli, foreach, cicli limitati ed esecuzioni figlie. I nuovi tentativi, gli effetti e i limiti sono per passo. Una suite di conformità serve la stessa esecuzione da tutti e sei i linguaggi.
Valutazione Tredici scorer deterministici, più il punteggio dato da un modello su qualunque endpoint di forma OpenAI. Dataset catturati da esecuzioni di produzione, e confronto fra esperimenti che riferisce la propria dimensione del campione.
Licenza Apache-2.0. Self-hosted senza account, o ospitato gratis su mcpd.sh.

Dove mcpd è indietro

Detto qui invece che lasciato a te da scoprire, perché un confronto che elenca solo le vittorie è una pubblicità.

  • Non è un framework intorno al tuo codice. Mastra ti dà agenti, memoria, RAG e un router di modelli in una sola dipendenza. mcpd ti dà l’esecuzione durevole e il suo registro, e lascia al tuo codice i modelli, i prompt e gli strumenti. Se vuoi una dipendenza sola che faccia tutto, la dipendenza sola è Mastra.
  • Nessun exporter per singolo fornitore. Mastra porta integrazioni per Langfuse, LangSmith, Braintrust, Arize, Datadog e altri, uno per uno. mcpd inoltra OTLP, che raggiunge quasi tutti loro con una sola implementazione, ma una destinazione che parla solo il proprio protocollo resta fuori portata.
  • Nessun SSO, SCIM o RBAC. L’autenticazione è fatta di sei ambiti di chiave API e di un elenco di progetti per chiave. Mettilo dietro il proxy di identità che già fai girare.

Il resoconto completo, aggiornato man mano che le cose arrivano, è in PARITY.md.

Passare a mcpd

Se il tuo agente emette già OpenTelemetry, sono due variabili d’ambiente. mcpd parla OTLP su HTTP, sugli endpoint con cui ogni SDK OpenTelemetry sa già parlare. Le tracce possono essere in JSON o in protobuf; log e metriche devono essere in JSON.

puntare su mcpd una configurazione OpenTelemetry che hai già

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

La riga del protocollo conta. Per convenzione la porta 4317 è gRPC, e mcpd ci parla HTTP, quindi un SDK lasciato sul gRPC predefinito si collega alla porta giusta e fallisce. OpenTelemetry passa in rassegna questo e il resto delle impostazioni.

Falli girare tutti e due per due settimane. mcpd inoltra gli span che archivia a qualunque cosa usassi prima, così puoi confrontarli sulle stesse tracce invece che su una migrazione che non puoi annullare. Inoltra solo gli span: log, metriche, punteggi, feedback e note di aspetto restano in mcpd.

tenere la vecchia destinazione mentre decidi

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

Se il tuo agente non emette ancora OpenTelemetry, comincia da Avvio rapido, oppure scegli il tuo linguaggio sotto Strumentare nella barra laterale.

Come è stato fatto questo confronto

Le affermazioni su Mastra in questa pagina vengono dalla lettura del suo sorgente ad agosto 2026, non dalla sua documentazione e non da un benchmark. Qui non ci sono numeri di prestazioni perché non ne abbiamo misurato nessuno di cui potremmo rispondere.

Mastra è in sviluppo attivo e qualunque cosa qui dentro può smettere di essere vera. Se trovi qualcosa che non è più aggiornato, è un difetto di questa pagina: apri una issue e verrà corretto.

Poi