Skip to main content
FrontMCP has native observability built in. Enable it with a single config line and get automatic distributed tracing, structured JSON logging, and per-request log collection across your entire server — every tool call, resource read, prompt invocation, auth flow, and transport session.

How It Works

To call this.telemetry from TypeScript, also import the package where you use it (or once in any compiled file). Its type is a declare module '@frontmcp/sdk' augmentation that TypeScript sees only when the package is part of the compilation:
When enabled:
  • Zero config — 103+ hooks register automatically on every flow
  • Single trace ID — all spans in a request share the same W3C trace ID
  • Privacy-safe session ID — a truncated SHA-256 hash, never the real session ID
  • Zero overhead when unused — without a TracerProvider, all OTel calls are no-ops
  • MCP-interoperable — uses rpc.system = "mcp" and mcp.* attributes for cross-framework tracing

What Gets Instrumented

Every flow in the SDK is automatically traced:

Logging vs Tracing

They’re complementary, not competing: A log line says “what happened.” A span says “how long it took.” When both share the same trace_id, platforms like Coralogix or Datadog show logs inline within a trace waterfall.

Learn More

Setup Guide

Step-by-step: install, configure backends, use this.telemetry

Telemetry API Reference

Full API for TelemetryAccessor, TelemetrySpan, and testing utilities

OpenTelemetry

OpenTelemetry documentation

Plugin System

How plugins hook into the request lifecycle