MCP 트레이싱

MCP 트레이싱 (MCP Tracing)

Model Context Protocol(MCP)을 사용하면 AI 에이전트가 외부 도구와 데이터 소스와 상호작용할 수 있어요. MCP 애플리케이션을 트레이싱할 때 클라이언트와 서버 작업은 기본적으로 별도의 trace를 생성하는데, 이는 서비스 경계를 설정하는 데 유용할 수 있어요.

출처: 문서

본문

Model Context Protocol(MCP)은 AI 에이전트가 외부 도구와 데이터 소스와 상호작용할 수 있게 해줘요. MCP 애플리케이션을 트레이싱할 때 클라이언트와 서버 작업은 기본적으로 별도의 trace를 생성하는데, 서비스 경계를 설정하는 데 유용할 수 있어요.

하지만 trace 메타데이터를 클라이언트에서 서버로 전파하면 이 trace들을 연결해 전체 요청 흐름의 통합된 뷰를 만들 수 있어요.

별도 trace vs 연결된 trace (Separate vs. Linked Traces)

  • 별도 trace(Separate traces): MCP 클라이언트와 서버가 독립적인 trace를 생성해요. 명확한 서비스 경계가 필요하거나 클라이언트와 서버를 다른 팀이 관리할 때 유용해요.
  • 연결된 trace(Linked traces): MCP의 _meta 필드를 사용해 클라이언트에서 서버로 trace 컨텍스트를 전파해요. 클라이언트에서 서버를 거쳐 외부 API까지의 완전한 요청 흐름을 보여주는 단일 연결 trace를 만들어요.

Trace 컨텍스트 전파 (Propagating Trace Context)

MCP는 _meta 필드 규약을 통해 컨텍스트 전파를 지원해요. OpenTelemetry 컨텍스트(W3C Trace Context 형식)를 도구 호출에 주입하면 클라이언트와 서버 trace를 연결할 수 있어요:

  1. 클라이언트 측에서 현재 trace 컨텍스트를 추출하세요.
  2. MCP 도구 호출의 _meta 필드에 주입하세요.
  3. 서버 측에서 컨텍스트를 추출하고 복원하세요.
  4. 모든 서버 작업이 클라이언트의 trace 컨텍스트를 상속해요.

MCP Tracing Screenshot

Langfuse의 예시 trace 링크

구현 (Implementation)

OpenAI, Exa API, Langfuse를 사용한 end-to-end MCP 트레이싱을 보여주는 완전한 구현은 langfuse-examples 저장소를 참고하세요.

더 알아보기 (Learn more)