본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 08. 13:53

MCP CI 게이트는 불안정한 다운스트림을 위한 재시도 영수증(retry receipts)이 필요합니다

요약

MCP CI 게이트의 안정성을 높이기 위해 일시적인 다운스트림 오류를 구분하고 재시도 정책을 지원하는 @k08200/mcp-probe v1.12.0이 출시되었습니다. 도구별로 재시도를 선택(opt-in)할 수 있으며, 재시도 이력을 영수증(receipt)에 기록하여 CI의 투명성을 유지합니다.

핵심 포인트

  • 서버 고장과 일시적 불안정성을 구분하여 CI 노이즈 감소
  • 도구별로 재시도 동작을 정의하는 opt-in 방식 채택
  • 재시도 성공 시에도 모든 시도 이력을 영수증에 기록
  • 503, 502, 504 및 속도 제한 등 일시적 오류 대응

MCP CI 게이트는 매우 다른 두 가지 실패를 구분해야 합니다:

  1. 서버가 실제로 고장 난 경우
  2. 다운스트림 의존성(downstream dependency)이 일시적으로 불안정한(flaky) 경우

두 경우 모두를 엄격한 실패(hard failures)로 처리하면 CI가 소란스러워집니다.
두 경우 모두를 무시하면, 게이트는 아무런 의미가 없게 됩니다.

그래서 저는 도구 호출 드라이런(tool-call dry-runs)을 위한 명시적인 사이드카 재시도 정책(sidecar retry policy)을 포함하여 @k08200/mcp-probe@1.12.0을 출시했습니다.

문제점

실제 MCP 도구를 호출하는 준비성 게이트(readiness gate)는 다음과 같은 일시적인 다운스트림 실패를 겪을 수 있습니다:

  • 503 Service Unavailable
  • 502 Bad Gateway
  • 504 Gateway Timeout
  • 속도 제한 (rate limits)
  • 짧은 네트워크 타임아웃 (short network timeouts)

하지만 인증(auth) 및 권한(permission) 실패는 다릅니다. 401 또는 403은 보통 에이전트가 프로덕션에서도 실패할 것임을 의미합니다.

계약(contract)에서 명시적으로 다르게 규정하지 않는 한, 이러한 오류는 계속 눈에 보여야 합니다.

재시도는 도구별 선택 사항 (opt-in)

이제 mcp-probe는 사이드카 계약(sidecar contract)을 통해 도구별로 재시도 동작을 정의할 수 있습니다:

{
  "tools": {
    "logs_query": {
...

중요한 점은: 재시도는 전역적인 마법이 아니라는 것입니다.

사이드카가 명시적으로 선택(opt-in)했을 때만 발생합니다.

영수증(Receipts)은 여전히 불안정함을 보여줍니다

호출이 한 번 실패하고 재시도 시 통과하면, 최종 결과는 통과(pass)할 수 있지만, 영수증(receipt)에는 여전히 모든 시도가 기록됩니다.

즉, CI는 실행이 깨끗했다고 가장하지 않으면서도 일시적인 다운스트림의 깜빡임(blip)을 허용할 수 있습니다.

예시 형태:

{
  "tool": "flaky_read",
  "status": "pass",
...

이것이 제가 MCP CI 게이트가 유지하기를 원하는 구분입니다:

  • 엄격한 실패(hard failures)는 차단해야 함
  • 일시적인 실패(transient failures)는 재시도할 수 있음
  • 재시도 후 통과(pass-after-retry)하더라도 여전히 영수증을 남겨야 함

설치

npm install -D @k08200/mcp-probe

또는 직접 실행:

npx @k08200/mcp-probe@latest --config mcp-probe.config.json --github-summary --receipt-file mcp-probe.receipt.json

GitHub release: https://github.com/k08200/mcp-probe/releases/tag/v1.12.0

npm: https://www.npmjs.com/package/@k08200/mcp-probe

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0