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 は実行の回答を読み、資格情報の形に照合します。そのため、補完に入り込んでしまった鍵は、少なくともあなたに報告されます。回帰テストを参照してください。
-
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.
サンプリングは決定的です
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 を立ててください。修正します。
次に
- 既存のコレクターを mcpd に向ける:OpenTelemetry。
- 何かが保存される前に取り除かれるもの:マスキングと保持。
- チームで動かす:Docker と Kubernetes。