本文へスキップ
mcpd
デーモンなし
ソース

Mastra からの移行

mcpd は、Mastra の可観測性と永続ワークフローに対する、無料で自分のところで動かせる代替です。このページは、どこが進んでいて、どこが遅れていて、どう移るかを述べます。

これが何であるか

Mastra はエージェントのフレームワークです。エージェント、ワークフロー、メモリ、RAG、可観測性が、1 つの TypeScript の依存関係にまとまっています。mcpd はあなたのコードの隣に立つデーモンです。ワークフローをステップとステップの間で保持し、各ステップを記録します。モデルとプロンプトとツールはあなたに任せます。エージェントを包むフレームワークではありませんし、そうならないように書かれています。

この違いが、この先のほとんどを決めます。Mastra の可観測性があなたのエージェントを知っているのは、その内側にいるからです。mcpd があなたのエージェントを知っているのは、エージェントが OpenTelemetry を出しているからです。つまり、エージェントの周りにあるサービスにも、TypeScript で書かれていないエージェントにも同じように効きます。

効いてくる違い

ワークフローの本体は、どの言語でも、あなたのプロセスに残ります

どちらも永続ワークフローを動かします。Mastra のステップは Mastra のプロセス内にある TypeScript の関数で、そのストレージを通して中断と再開が行われます。mcpd の定義はデーモンが保持するデータであり、ステップの本体はあなたのプロセスが保持するコードです。それを、6 つの SDK が話し、どの言語でも話せる HTTP のプロトコルを通じて、一度に 1 つのリースとして受け取ります。デーモンはモデルもプロンプトも資格情報も見ることがなく、定義を変えずに本体だけを変えられます。

デーモンが保持するのは、残らなければならない部分です。カーソル、ジャーナル、リトライの予算、タイマー、そして届くのに 1 週間かかるかもしれないイベントの待ち受けです。実行は、それを始めたプロセスよりも、最後のステップを処理したワーカーよりも長く生き残ります。ワークフローを参照してください。

1 つのフレームワークから送り出すのではなく、OpenTelemetry を受け取ります

これが主張の全部です。Mastra の可観測性は Mastra のアプリケーションの内側から送り出すので、見えるのはそのアプリケーションが行うことを、それが書かれた言語で、という範囲に限られます。mcpd はコレクターです。どの言語のどの OpenTelemetry SDK からでも OTLP を受け取り、アプリケーションに mcpd のコードを 1 行も入れずに、エージェントの周りのサービスもエージェントと同じように記録します。

OTLP を出すこともできるので、mcpd はこれから組み立てるパイプラインの末端ではなく、すでにあるパイプラインの途中に置けます。転送を参照してください。

秘匿化は 6 つのシグナルすべてに及びます

Mastra の SensitiveDataFilter はスパンプロセッサーです。動くのはスパンに対してだけなので、構造化ログに渡された鍵や、スコアの理由やフィードバックの中に引用された秘密は、秘匿化されないままどのエクスポーターにも届きます。

mcpd はスパン、ログ、メトリクスのラベル、スコア、フィードバック、観点ノートを秘匿化します。既定でオンであり、何かが書き込まれる前、そして何かが転送される前に行われます。

キーの照合も、完全一致ではなく部分一致です。そのため awsSecretAccessKey と X-API-Key は、secret と x-api-key の規則で捕まります。名前全体の一致を求める規則の集合は、どちらも取り逃がします。

限界もはっきりさせておきます。秘匿化が照合するのはフィールドの名前であって、中身の形ではありません。プロンプトの途中に貼られたトークンや、無害な名前のキーの下に保存された URL の中のトークンは、どちらのツールでも取り除かれません。秘匿化は、事故で漏らす量を減らします。保証ではありません。

その場合に mcpd が足すのは、フィルターではなくスコアラーです。組み込みの no_leaked_secret は実行の回答を読み、資格情報の形に照合します。そのため、補完に入り込んでしまった鍵は、少なくともあなたに報告されます。回帰テストを参照してください。

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.

サンプリングは決定的です

Mastra の比率サンプリングは Math.random() を呼びます。そのため、ロードバランサーの後ろにあるレプリカは同じトレースについて別々の判断を下し、2 つのサービスにまたがる実行は片方に残され、もう片方に捨てられることがあります。

mcpd はトレース id をハッシュするので、どのインスタンスも調整なしに同じ答えに到達し、残されたトレースは丸ごと残ります。デーモンのフラグから届く戦略は 2 つ、すべて残すことと、この決定的な割合です。比率が何であれエラーはすべて残すテール方式は、ポリシーの型には存在しますが、このビルドではコマンドラインから届きません。サンプリングを参照してください。

残りを手短に

領域mcpd がすること
デプロイ ストアと画面を組み込んだ、静的にリンクされた 1 つのバイナリ。Node もサイドカーも要りません。
ストレージ ノート PC には SQLite、チームには Postgres か ClickHouse。3 つとも CI で実サーバーに対して試験されます。
検索 保存されたすべてのプロンプトと補完に対する全文検索。
メトリクス 取り込み時に集計し、正確な分位数と、実行まで戻れるエグゼンプラーを持ちます。
コスト 取り込み時に値付けして保存します。キャッシュされたトークンはそれ自身の単価で課金されます。未知のモデルは、無料と報告するのではなく値付けしないままにします。
SDK TypeScript、Python、Rust、Go、Kotlin、Elixir。1 つの仕様から生成されるのでずれることがありません。どれもワークフローのビルダーとワーカーを備えます。
ワークフロー デーモンが保持する 9 つの構成要素。ステップ、エージェントのターン、スリープ、イベント待ち、並列の分岐、foreach、上限付きのループ、子の実行です。リトライ、作用、上限はステップごとです。適合スイートが、同じ実行を 6 つの言語すべてから動かします。
評価 決定的なスコアラーが 13 種類、加えて OpenAI 形式のどのエンドポイントに対してもモデルによる採点。本番の実行から取り込んだデータセットと、サンプル数を併せて報告する実験の比較。
ライセンス Apache-2.0。アカウント不要で自分で動かすか、mcpd.sh のホスティング版を無料で使えます。

mcpd が遅れているところ

あなたが自分で見つけるのに任せず、ここに書きます。勝ちだけを並べた比較は広告だからです。

  • コードを包むフレームワークではありません。Mastra は、エージェント、メモリ、RAG、モデルのルーターを 1 つの依存関係で渡します。mcpd が渡すのは永続的な実行とその記録であり、モデルとプロンプトとツールはあなたのコードに任せます。何もかもをする依存関係を 1 つ欲しいなら、その 1 つは Mastra です。
  • 名指しのベンダー向けエクスポーターはありません。Mastra は Langfuse、LangSmith、Braintrust、Arize、Datadog などとの統合を名指しで同梱しています。mcpd は OTLP を転送し、1 つの実装でその多くに届きますが、自前のプロトコルしか話さない宛先には届きません。
  • SSO も SCIM も RBAC もありません。認証は 6 つの API キーのスコープと、キーごとのプロジェクト一覧です。すでに動かしている ID プロキシの後ろに置いてください。

実装が進むたびに更新される全体の記録は PARITY.md にあります。

移行する

エージェントがすでに OpenTelemetry を出しているなら、必要なのは環境変数 2 つです。mcpd は OTLP を HTTP 上で話します。どの OpenTelemetry SDK も、そのエンドポイントへの話し方をすでに知っています。トレースは JSON でも protobuf でも構いませんが、ログとメトリクスは JSON でなければなりません。

既存の OpenTelemetry の設定を mcpd に向ける

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

プロトコルの行が効きます。ポート 4317 は慣例として gRPC ですが、mcpd はそこで HTTP を話します。そのため gRPC の既定のままの SDK は、正しいポートにつないだうえで失敗します。OpenTelemetry が、これと残りの設定を通しで説明します。

2 週間ほど両方を動かしてください。mcpd は保存したスパンをそれまで使っていた先へ転送するので、取り消せない移行の上ではなく、同じトレースの上で 2 つを比べられます。転送するのはスパンだけです。ログ、メトリクス、スコア、フィードバック、観点ノートは mcpd に残ります。

決めるまで元の宛先を残しておく

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

エージェントがまだ OpenTelemetry を出していないなら、クイックスタートから始めるか、サイドバーの「計装」から言語を選んでください。

この比較の作り方

このページの Mastra についての記述は、2026 年 8 月にそのソースを読んで得たものです。ドキュメントからではなく、ベンチマークを走らせたのでもありません。ここに性能の数値がないのは、責任を持って示せる測定をしていないからです。

Mastra は活発に開発されており、ここに書いたことはどれも真でなくなり得ます。古くなっているものを見つけたら、それはこのページのバグです。issue を立ててください。修正します。

次に