인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
데이터 및 연구 · SKILL.md

frontmcp-observability

frontmcp-observability

Use when adding tracing, structured logging, metrics, or monitoring to a FrontMCP server. Covers zero-config OpenTelemetry distributed tracing across all flows; the this.telemetry API for custom spans, events, and attributes in tools, plugins, agents, and skills; structured JSON logging with trace correlation and configurable sinks (Winston, Pino, stdout); …

Independent GitHub snapshot · Automated classification · Original documentation governs

Aagentfront / frontmcpApache-2.0

Skill 문서

GitHub

name: frontmcp-observability description: 'Use when adding tracing, structured logging, metrics, or monitoring to a FrontMCP server. Covers zero-config OpenTelemetry distributed tracing across all flows; the this.telemetry API for custom spans, events, and attributes in tools, plugins, agents, and skills; structured JSON logging with trace correlation and configurable sinks (Winston, Pino, stdout); the off-by-default /metrics endpoint (process and framework metrics, Prometheus-compatible); vendor integrations (Coralogix, Datadog, Logz.io, Grafana Cloud, or any OTLP backend); and testing spans, log correlation, and instrumentation. Triggers: observability, telemetry, tracing, logging, monitoring, OpenTelemetry, OTel, spans, metrics, Prometheus, Datadog, Coralogix, Logz.io, Grafana, Winston, Pino.' tags: [router, observability, telemetry, tracing, logging, monitoring, opentelemetry, otel, spans] category: observability targets: [all] bundle: [recommended, full] priority: 10 visibility: both license: Apache-2.0 metadata: docs: https://frontmcp.dev/reference/server/observability

FrontMCP Observability

Router for adding observability to FrontMCP servers. Covers distributed tracing (OpenTelemetry), structured JSON logging, per-request log collection, the this.telemetry developer API, and vendor integrations.

When to Use This Skill

Must Use

  • Adding tracing, logging, or monitoring to a FrontMCP server
  • Connecting Coralogix, Datadog, Logz.io, Grafana, or any OTLP backend
  • Using this.telemetry to create custom spans in tools, plugins, or agents
  • Setting up structured logging with winston, pino, or NDJSON stdout
  • Testing that spans and log entries are created correctly

Recommended

  • Before going to production (see also frontmcp-production-readiness)
  • When debugging request latency or error rates
  • When building plugins that need trace context propagation

Skip When

  • Building a prototype that doesn't need observability yet
  • Configuring auth, transport, or throttle (see frontmcp-config)
  • Setting up the project from scratch (see frontmcp-setup)

Decision: Use this skill when you need to observe, trace, or log your server. Start with tracing-setup for auto-instrumentation, add structured-logging for production logs, and use telemetry-api for custom spans in your code.

Prerequisites

  • A working FrontMCP server (see frontmcp-setup)
  • npm install @frontmcp/observability

Step 1: Choose What You Need

I want to...Reference
Enable auto-tracing for all flowsreferences/tracing-setup.md
Add structured JSON logging with trace correlationreferences/structured-logging.md
Create custom spans in tools/pluginsreferences/telemetry-api.md
Connect Coralogix, Datadog, Logz.io, Grafanareferences/vendor-integrations.md
Test that spans and logs are correctreferences/testing-observability.md
Expose Prometheus /metrics endpointreferences/metrics-endpoint.md

Step 2: Enable Observability

The simplest way — one config line:

@FrontMcp({
  observability: true,
})

This enables auto-tracing for all SDK flows. Add structured logging:

@FrontMcp({
  observability: {
    tracing: true,
    logging: { sinks: [{ type: 'stdout' }] },
    requestLogs: true,
  },
})

Step 3: Read the Relevant Reference

Follow the scenario routing table above to find the right reference for your use case.

Scenario Routing Table

ScenarioReferenceDescription
Enable OpenTelemetry tracingreferences/tracing-setup.mdZero-config auto-instrumentation, setupOTel(), span hierarchy
Add JSON logs with trace correlationreferences/structured-logging.mdSinks (stdout, console, OTLP, winston, pino), redaction, log format
Custom spans in tools/pluginsreferences/telemetry-api.mdthis.telemetry.startSpan(), withSpan(), addEvent(), setAttributes()
Connect to monitoring platformsreferences/vendor-integrations.mdCoralogix, Datadog, Logz.io, Grafana — OTLP and direct
Test spans and log entriesreferences/testing-observability.mdcreateTestTracer(), assertSpanExists(), integration test patterns
Expose Prometheus /metrics endpointreferences/metrics-endpoint.mdOff-by-default Prometheus scrape endpoint with process + framework counters

Common Patterns

PatternCorrectIncorrectWhy
Enable observabilityobservability: true in @FrontMcp configImport and install ObservabilityPlugin manuallyConfig-driven is the standard pattern since v1.0
Custom spansthis.telemetry.withSpan('op', fn)trace.getTracer().startSpan() directlythis.telemetry auto-inherits trace context
Log correlationthis.logger.info('msg', { key: val })console.log('msg')SDK logger flows through StructuredLogTransport with trace_id
Session IDUse mcp.session.id attribute (hashed)Log the real session IDPrivacy: the hash is sufficient for correlation
Vendor integrationUse { type: 'otlp', endpoint } sinkBuild vendor-specific HTTP clientsOTLP is the universal standard

Quick Reference: What Gets Traced

CategoryFlowsAttributes
HTTP requeststraceRequest, auth, route, finalizehttp.request.method, url.path
Tool callsparseInput → findTool → execute → finalizemcp.component.type=tool, enduser.id
Resource readsparseInput → findResource → executemcp.component.type=resource, mcp.resource.uri
PromptsparseInput → findPrompt → executemcp.component.type=prompt
AgentsparseInput → findAgent → execute (nested tool calls)mcp.component.type=agent
Authverify, session verify, OAuth flowsfrontmcp.auth.mode, frontmcp.auth.result
TransportSSE, Streamable HTTP, Stateless HTTPfrontmcp.transport.type
Skillssearch, load, HTTP endpointsfrontmcp.flow.name

Verification Checklist

Configuration

  • @frontmcp/observability installed
  • observability field added to @FrontMcp config
  • TracerProvider configured (via setupOTel() or external SDK); the startup warning about a missing provider appears only when none is registered
  • Logging sinks configured for production (stdout or OTLP)

Runtime

  • Spans appear in trace backend when calling a tool
  • Log entries include trace_id and span_id
  • this.telemetry is available in tool execution contexts, and @frontmcp/observability is imported so it type-checks
  • Session tracing ID is consistent across all spans in a request
  • Errors are recorded on spans with ERROR status

Testing

  • Tests verify span creation with createTestTracer()
  • Tests verify log entries via CallbackSink
  • No test isolation issues (each test resets exporter)

Troubleshooting

ProblemCauseSolution
this.telemetry is undefined in a toolobservability not enabled on the parent @FrontMcp configSet observability: true (or a config object) in the @FrontMcp decorator; see tracing-setup
Property 'telemetry' does not exist (TS2339)@frontmcp/observability is not part of the compilationAdd import type {} from '@frontmcp/observability' where you use it (or once in the server entry); see telemetry-api
Spans appear without trace_id in logsLogger not connected to StructuredLogTransportUse this.logger, not console; see structured-logging
OTLP exporter silently drops spansEndpoint URL points at the UI, not the OTLP collectorUse the OTLP HTTP/gRPC ingest endpoint exposed by your vendor (Datadog, Coralogix, Logz, etc.); see vendor-integrations
Real session ID appears in span attributesA custom span attribute writes session.id directlyUse the SDK-provided mcp.session.id (already hashed); never log the raw session token
Tests randomly fail with leftover spansExporter retained between testsReset the in-memory exporter in afterEach; see testing-observability
OTel auto-instrumentation double-traces requestsBoth setupOTel() AND a vendor agent attached to the processPick one: either FrontMCP-managed OTel OR the vendor agent — not both

Examples

Each reference has matching examples under examples/<reference>/:

tracing-setup

ExampleLevelDescription
basic-tracingBasicEnable auto-tracing and see spans printed to your terminal.
production-tracingIntermediateFull production observability — traces to OTLP, structured logs to stdout, per-request log collection.

structured-logging

ExampleLevelDescription
stdout-loggingBasicEnable NDJSON structured logging to stdout with automatic trace correlation and field redaction.
winston-integrationIntermediateForward FrontMCP structured log entries to your existing winston logger. Each entry includes trace_id and span_id as metadata.

telemetry-api

ExampleLevelDescription
tool-custom-spansBasicCreate child spans, events, and attributes inside a tool's execute method using this.telemetry.
plugin-telemetryIntermediateAdd telemetry events from a custom plugin's hooks. Events appear on the tool execution span, giving you visibility into plugin behavior within the trace.
agent-nested-tracingAdvancedTrace an agent's execution lifecycle including its nested tool calls. Every span shares the same trace ID.

vendor-integrations

ExampleLevelDescription
coralogix-setupIntermediateSend both traces and structured logs to Coralogix. Logs include trace_id so Coralogix links them to traces automatically.

testing-observability

ExampleLevelDescription
test-custom-spansBasicVerify that your tool creates the expected child spans with correct attributes.
test-log-correlationIntermediateVerify that structured log entries include trace context fields for correlation with spans.

metrics-endpoint

ExampleLevelDescription
enable-metrics-endpointBasicTurn on the /metrics endpoint with defaults and scrape it with curl.

Accessing This Skill

Skills are distributed as plain SKILL.md files plus a sibling references/ and examples/ tree, so consumers can pick whichever access mode fits:

ModeHow it works
FilesystemRead libs/skills/catalog/frontmcp-observability/ directly from a clone of the catalog repo, or from a published @frontmcp/skills install. SKILL.md is the entry point.
frontmcp CLIfrontmcp skills list, frontmcp skills read frontmcp-observability, frontmcp skills read frontmcp-observability:references/<file>.md, frontmcp skills install frontmcp-observability — no server required.
MCP skill://When a developer mounts this skill into their own FrontMCP server (@FrontMcp({ skills: [...] })), the SDK exposes it via SEP-2640 resources: skill://frontmcp-observability/SKILL.md, skill://frontmcp-observability/references/{file}.md, etc. The server’s skill://index.json returns the SEP-2640 discovery document for everything mounted on it.

The catalog itself is not an MCP server. The skill:// URIs only resolve when a server has been configured to host this skill.

Reference

저장한 Skills