Ir para o conteúdo
mcpd
sem daemon
Código

Vindo do Mastra

O mcpd é uma alternativa gratuita e auto-hospedada à observabilidade do Mastra e aos seus workflows duráveis. Esta página diz onde ele está à frente, onde está atrás, e como migrar.

O que isto é

O Mastra é um framework de agentes: agentes, workflows, memória, RAG e observabilidade, numa dependência TypeScript só. O mcpd é um daemon ao lado do seu código: ele segura um workflow entre as etapas dele e registra cada etapa, e deixa os modelos, os prompts e as ferramentas com você. Ele não é um framework em volta do seu agente, e foi escrito para ficar fora de um.

Essa diferença decide quase tudo o que vem a seguir. A observabilidade do Mastra sabe do seu agente porque está dentro dele. O mcpd sabe do seu agente porque o seu agente emite OpenTelemetry, o que quer dizer que ele também funciona para os serviços em volta do seu agente, e para agentes que nunca foram escritos em TypeScript.

As diferenças que importam

Os corpos do workflow ficam no seu processo, em qualquer linguagem

Os dois rodam workflows duráveis. As etapas do Mastra são funções TypeScript dentro do processo do Mastra, suspensas e retomadas pelo armazenamento dele. A definição do mcpd são dados que o daemon segura, e os corpos das etapas dela são código que o seu processo segura, reivindicados um lease de cada vez por um protocolo HTTP que seis SDKs falam e qualquer linguagem pode falar. O daemon nunca vê um modelo, um prompt nem uma credencial, e um corpo pode mudar sem que a definição mude.

O que o daemon segura é a parte que precisa sobreviver: o cursor, o diário, o orçamento de repetições, os temporizadores, e uma espera por um evento que pode levar uma semana para chegar. Uma execução sobrevive ao processo que a começou e ao worker que serviu a última etapa dela. Veja Workflows.

Ele recebe OpenTelemetry, em vez de exportar de um framework só

É esta a tese inteira. A observabilidade do Mastra exporta de dentro de uma aplicação Mastra, então o que ela consegue ver é o que aquela aplicação faz, na linguagem em que ela foi escrita. O mcpd é o coletor: ele recebe OTLP de qualquer SDK do OpenTelemetry, em qualquer linguagem, sem nenhum código do mcpd na sua aplicação, e registra os serviços em volta do agente com a mesma facilidade com que registra o agente.

Ele também emite OTLP, então o mcpd pode ficar no meio de um pipeline que você já tem, em vez de no fim de um que você precisa construir. Veja Encaminhamento.

A ocultação cobre os seis sinais

O SensitiveDataFilter do Mastra é um processador de spans. Ele roda sobre spans e mais nada, então uma chave passada para um log estruturado, ou um segredo citado no motivo de uma nota ou num feedback, chega a todo exportador sem ocultação.

O mcpd oculta spans, logs, rótulos de métrica, notas, feedback e notas de aspecto, ligado por padrão, antes de qualquer coisa ser escrita e antes de qualquer coisa ser encaminhada.

A comparação de chaves dele também é por trecho, e não por nome exato, então awsSecretAccessKey e X-API-Key são pegos pelas regras de secret e x-api-key. Um conjunto de regras que exige o nome inteiro deixa os dois passar.

Seja claro sobre o limite: a ocultação casa com o nome de um campo, não com o formato do conteúdo dele. Um token colado no meio de um prompt, ou dentro de um URL guardado sob uma chave inofensiva, não é removido por nenhuma das duas ferramentas. A ocultação reduz o que você vaza por acidente. Ele não é uma garantia.

O que o mcpd acrescenta para esse caso é um avaliador, e não um filtro. O avaliador nativo no_leaked_secret lê a resposta de uma execução e casa com o formato de uma credencial, então uma chave que foi parar numa resposta é ao menos reportada para você. Veja Testes de regressão.

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.

A amostragem é determinística

A amostragem por proporção do Mastra chama Math.random(). Cada réplica atrás de um balanceador de carga decide, portanto, de um jeito diferente sobre o mesmo trace, e uma execução que atravessa dois serviços pode ser mantida por um e descartada pelo outro.

O mcpd faz o hash do id do trace, então toda instância chega à mesma resposta sem nenhuma coordenação e um trace mantido é mantido inteiro. As opções do daemon alcançam duas estratégias, guardar tudo e esta fração determinística; uma estratégia de cauda que guardaria todo erro, independentemente do que a taxa diz, existe no tipo da política e não é alcançável pela linha de comando nesta versão. Veja Amostragem.

O resto, em resumo

ÁreaO que o mcpd faz
Implantação Um binário estático só, com o armazenamento e a interface compilados dentro. Sem Node, sem sidecar.
Armazenamento SQLite para um notebook, Postgres ou ClickHouse para um time. Os três testados contra um servidor de verdade no CI.
Busca Texto completo sobre todo prompt e toda resposta guardados.
Métricas Agregadas na ingestão, com quantis exatos e exemplars que levam de volta a uma execução.
Custo Precificado na ingestão e guardado. Tokens em cache cobrados pela tarifa deles. Um modelo desconhecido fica sem preço, em vez de ser reportado como gratuito.
SDKs TypeScript, Python, Rust, Go, Kotlin e Elixir, gerados de uma especificação só para que não possam divergir. Cada um traz um construtor de workflow e um worker.
Workflows Nove construções, seguradas pelo daemon: etapas, turnos de agente, esperas por tempo, esperas por eventos, ramos paralelos, foreach, laços limitados e execuções filhas. Repetições, efeitos e limites são por etapa. Uma suíte de conformidade serve a mesma execução a partir das seis linguagens.
Avaliação Treze avaliadores determinísticos, mais avaliação por modelo contra qualquer endpoint no formato da OpenAI. Datasets capturados de execuções de produção, e comparação de experimentos que reporta o tamanho da amostra.
Licença Apache-2.0. Auto-hospedado e sem conta, ou hospedado grátis em mcpd.sh.

Onde o mcpd está atrás

Dito aqui, em vez de deixado para você descobrir, porque uma comparação que só lista vitórias é um anúncio.

  • Não é um framework em volta do seu código. O Mastra entrega a você agentes, memória, RAG e um roteador de modelos numa dependência só. O mcpd entrega a execução durável e o registro dela, e deixa modelos, prompts e ferramentas para o seu código. Se você quer uma dependência só que faça tudo, o Mastra é essa dependência.
  • Sem exportadores nomeados por fornecedor. O Mastra traz integrações para Langfuse, LangSmith, Braintrust, Arize, Datadog e outros pelo nome. O mcpd encaminha OTLP, o que alcança a maioria deles por uma implementação só, mas um destino que fala apenas o próprio protocolo fica fora de alcance.
  • Sem SSO, SCIM ou RBAC. A autenticação são seis escopos de chave de API e uma lista de projetos por chave. Coloque isso atrás do proxy de identidade que você já roda.

O relato completo, atualizado conforme as coisas chegam, está em PARITY.md.

Migrando

Se o seu agente já emite OpenTelemetry, isto são duas variáveis de ambiente. O mcpd fala OTLP sobre HTTP, nos endpoints com que todo SDK do OpenTelemetry já sabe conversar. Traces podem ir em JSON ou em protobuf; logs e métricas precisam ir em JSON.

aponte uma instalação OpenTelemetry existente para o mcpd

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

A linha do protocolo importa. A porta 4317 é por convenção gRPC, e o mcpd fala HTTP nela, então um SDK deixado no padrão gRPC dele se conecta à porta certa e falha. OpenTelemetry passa por isso e pelo resto dos ajustes.

Rode os dois por duas semanas. O mcpd encaminha os spans que guarda para o que quer que você usasse antes, então dá para comparar os dois sobre os mesmos traces, em vez de sobre uma migração que você não consegue desfazer. Ele encaminha só spans: logs, métricas, notas, feedback e notas de aspecto ficam no mcpd.

mantenha o destino antigo enquanto você decide

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

Se o seu agente ainda não emite OpenTelemetry, comece pelo Início rápido, ou escolha a sua linguagem em Instrument, na barra lateral.

Como esta comparação foi feita

As afirmações sobre o Mastra nesta página vêm da leitura do código-fonte dele em agosto de 2026, não da documentação dele e não de um benchmark. Não há números de desempenho aqui porque não medimos nenhum que sustentaríamos.

O Mastra está em desenvolvimento ativo e qualquer coisa aqui pode deixar de ser verdade. Se você achar algo desatualizado, isso é um defeito desta página: abra uma issue e ela será corrigida.

A seguir