본문으로 건너뛰기
mcpd
데몬 없음
소스

Mastra에서 옮겨 오기

mcpd는 Mastra의 관측 가능성과 지속성 워크플로를 대신할 수 있는, 무료로 직접 호스팅하는 선택지입니다. 이 페이지는 어디가 앞서고, 어디가 뒤처지며, 어떻게 옮기는지 말합니다.

이것이 무엇인가

Mastra는 에이전트 프레임워크입니다. 에이전트, 워크플로, 메모리, RAG, 관측 가능성이 TypeScript 의존성 하나에 들어 있습니다. mcpd는 애플리케이션 코드 옆에 서 있는 데몬입니다. 워크플로를 단계 사이에 붙들어 두고 모든 단계를 기록하며, 모델과 프롬프트와 도구는 직접 고르도록 맡깁니다. 에이전트를 감싸는 프레임워크가 아니고, 그런 것이 되지 않도록 쓰였습니다.

그 차이가 아래의 대부분을 결정합니다. Mastra의 관측 가능성은 에이전트 안에 있기 때문에 그 에이전트를 압니다. mcpd는 에이전트가 OpenTelemetry를 내보내기 때문에 그 에이전트를 압니다. 그래서 에이전트 주변의 서비스에도, TypeScript로 쓰인 적이 없는 에이전트에도 똑같이 동작합니다.

중요한 차이들

워크플로의 본문은 직접 돌리는 프로세스에, 어떤 언어로든 남습니다

둘 다 지속성 워크플로를 돌립니다. Mastra의 단계는 Mastra 프로세스 안의 TypeScript 함수이고, 그 스토리지를 통해 멈추고 재개됩니다. mcpd의 정의는 데몬이 들고 있는 데이터이고, 단계 본문은 직접 돌리는 프로세스가 들고 있는 코드이며, 여섯 SDK가 말하고 어떤 언어로든 말할 수 있는 HTTP 프로토콜을 통해 한 번에 리스 하나씩 가져갑니다. 데몬은 모델도, 프롬프트도, 자격 증명도 결코 보지 않으며, 정의를 바꾸지 않고도 본문을 바꿀 수 있습니다.

데몬이 실제로 들고 있는 것은 살아남아야 하는 부분입니다. 커서, 저널, 재시도 예산, 타이머, 그리고 도착까지 일주일이 걸릴 수도 있는 이벤트 대기입니다. 실행은 그것을 시작한 프로세스보다도, 마지막 단계를 처리한 워커보다도 오래 삽니다. 워크플로를 보십시오.

프레임워크 하나에서 내보내는 대신 OpenTelemetry를 받습니다

이것이 논지의 전부입니다. Mastra의 관측 가능성은 Mastra 애플리케이션 안에서 내보내므로, 볼 수 있는 것은 그 애플리케이션이 하는 일이며 그것이 쓰인 언어에 한합니다. mcpd는 컬렉터 쪽입니다. 어떤 언어의 OpenTelemetry SDK에서든 OTLP를 받고, 애플리케이션에는 mcpd 코드가 한 줄도 없으며, 에이전트만큼이나 에이전트 주변의 서비스도 기록합니다.

mcpd는 OTLP를 내보내기도 하므로, 새로 만들어야 하는 파이프라인의 끝이 아니라 이미 가지고 있는 파이프라인의 중간에 앉을 수 있습니다. 전달을 보십시오.

마스킹이 여섯 시그널 모두에 걸립니다

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()을 부릅니다. 그래서 로드 밸런서 뒤의 복제본마다 같은 트레이스를 두고 다르게 판단하고, 두 서비스를 가로지르는 실행이 한쪽에서는 남고 다른 쪽에서는 버려질 수 있습니다.

mcpd는 트레이스 id를 해시하므로, 모든 인스턴스가 아무 협의 없이 같은 답에 이르고 남기기로 한 트레이스는 통째로 남습니다. 데몬의 플래그로 닿을 수 있는 전략은 둘입니다. 전부 남기기와, 이 결정론적 비율입니다. 비율이 무어라 하든 오류는 모두 남기는 테일 전략은 정책 타입 안에 있지만, 이 빌드에서는 명령줄로 닿을 수 없습니다. 샘플링을 보십시오.

나머지는 짧게

영역mcpd가 하는 일
배포 저장소와 인터페이스가 안에 컴파일된 정적 바이너리 하나입니다. Node도, 사이드카도 없습니다.
저장 노트북에는 SQLite, 팀에는 Postgres나 ClickHouse입니다. 셋 다 CI에서 실제 서버를 상대로 테스트합니다.
검색 저장된 모든 프롬프트와 응답에 대한 전문 검색입니다.
메트릭 수집 시점에 집계하며, 정확한 분위수와 실행으로 되돌아가는 exemplar를 함께 둡니다.
비용 수집 시점에 값을 매겨 저장합니다. 캐시된 토큰은 자기 요율로 청구합니다. 모르는 모델은 무료로 보고하는 대신 값을 매기지 않은 채로 둡니다.
SDK TypeScript, Python, Rust, Go, Kotlin, Elixir입니다. 명세 하나에서 생성되므로 서로 어긋날 수 없습니다. 각각이 워크플로 빌더와 워커를 갖추고 있습니다.
워크플로 데몬이 들고 있는 아홉 구문입니다. 단계, 에이전트 턴, 슬립, 이벤트 대기, 병렬 분기, foreach, 한계가 있는 루프, 자식 실행입니다. 재시도와 이펙트와 한계는 단계마다 정합니다. 적합성 스위트가 같은 실행을 여섯 언어 모두에서 처리합니다.
평가 결정론적 스코어러 열세 개와, OpenAI 형태의 엔드포인트라면 어디에나 물어보는 모델 판정 채점입니다. 데이터셋은 프로덕션 실행에서 담아 오고, 실험 비교는 자기 표본 수를 함께 보고합니다.
라이선스 Apache-2.0. 계정 없이 직접 호스팅하거나, mcpd.sh에서 무료로 호스팅 버전을 쓸 수 있습니다.

mcpd가 뒤처지는 곳

직접 부딪혀 발견하도록 두지 않고 여기 적어 둡니다. 이긴 항목만 나열하는 비교는 광고이기 때문입니다.

  • 코드를 감싸는 프레임워크가 아닙니다. Mastra는 에이전트, 메모리, RAG, 모델 라우터를 의존성 하나로 줍니다. mcpd는 지속성 실행과 그 기록을 주고, 모델과 프롬프트와 도구는 애플리케이션 코드에 맡깁니다. 모든 것을 하는 의존성 하나를 원한다면, 그 하나는 Mastra입니다.
  • 이름을 붙인 벤더별 익스포터가 없습니다. Mastra는 Langfuse, LangSmith, Braintrust, Arize, Datadog 등을 이름으로 지목한 연동을 제공합니다. mcpd는 OTLP를 전달하며 구현 하나로 그 대부분에 닿지만, 자기 프로토콜만 말하는 목적지에는 닿을 수 없습니다.
  • SSO도, SCIM도, RBAC도 없습니다. 인증은 API 키 스코프 네 가지와 키마다의 프로젝트 목록이 전부입니다. 이미 돌리고 있는 아이덴티티 프록시 뒤에 두십시오.

무엇이 들어올 때마다 갱신되는 전체 내역은 PARITY.md에 있습니다.

옮겨 오기

에이전트가 이미 OpenTelemetry를 내보내고 있다면, 이것은 환경 변수 두 개입니다. mcpd는 모든 OpenTelemetry SDK가 이미 말할 줄 아는 엔드포인트에서 OTLP over HTTP를 말합니다. 트레이스는 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가 이 이야기와 나머지 설정을 다룹니다.

두 주 동안 둘을 함께 돌리십시오. mcpd는 저장한 스팬을 이전에 쓰던 곳으로 전달하므로, 되돌릴 수 없는 마이그레이션이 아니라 같은 트레이스 위에서 둘을 비교할 수 있습니다. 전달하는 것은 스팬뿐입니다. 로그, 메트릭, 점수, 피드백, 관점 노트는 mcpd에 남습니다.

결정하는 동안 예전 목적지를 그대로 두기

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

에이전트가 아직 OpenTelemetry를 내보내지 않는다면 빠른 시작부터 시작하거나, 사이드바의 계측 아래에서 쓰는 언어를 고르십시오.

이 비교를 만든 방법

이 페이지의 Mastra에 대한 서술은 2026년 8월에 그 소스를 읽고 적은 것이며, 문서를 읽거나 벤치마크를 돌려 적은 것이 아닙니다. 여기에 성능 수치가 없는 것은 우리가 책임질 수 있는 수치를 하나도 재지 않았기 때문입니다.

Mastra는 활발히 개발되고 있고, 여기 적힌 무엇이든 더 이상 참이 아니게 될 수 있습니다. 낡은 내용을 발견하면 그것은 이 페이지의 버그입니다. 이슈를 열어 주시면 바로잡겠습니다.

다음