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.
-
Decode
OTLP or native, gzip or plain
-
Sample
Decided once, at the root
-
Redact
Before anything is written
-
Price
From the configured price book
-
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
| Ambito | Che 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
- Puntare su mcpd un collector che hai già: OpenTelemetry.
- Che cosa viene tolto prima che si archivi qualcosa: Oscuramento e conservazione.
- Farlo girare per una squadra: Docker e Kubernetes.