Skip to content

Observability

Telemetry is gated on RA_MCP_OTEL_ENABLED=true. When enabled, traces, metrics, and logs are exported via OTLP.


Environment Variables

Variable Default Description
RA_MCP_OTEL_ENABLED false Master switch
OTEL_EXPORTER_OTLP_ENDPOINT http://localhost:4317 Collector endpoint
OTEL_EXPORTER_OTLP_PROTOCOL grpc grpc or http/protobuf
OTEL_SERVICE_NAME ra-mcp Service name
RA_MCP_OTEL_LOG_BRIDGE true Bridge Python logging to OTel

Trace Tree

Every MCP tool call produces a trace spanning from the protocol layer down to HTTP:

graph TD
  A["tools/call search_transcribed\n<i>FastMCP — automatic</i>"]
  B["delegate search_transcribed\n<i>FastMCP — composed server</i>"]
  C["tools/call search_transcribed\n<i>FastMCP — provider</i>"]
  D["SearchOperations.search\n<i>domain layer</i>"]
  E["SearchAPI.search\n<i>API client</i>"]
  F["HTTP GET\n<i>HTTP client</i>"]

  A --> B --> C --> D --> E --> F

Instrumented Components

Component Tracer name Spans Metrics
HTTP client ra_mcp.http_client HTTP GET request count, error count, duration, response size
Search API ra_mcp.search_api SearchAPI.search
Search ops ra_mcp.search_operations SearchOperations.search
Browse ops ra_mcp.browse_operations browse_document, _fetch_page_contexts
ALTO client ra_mcp.alto_client ALTOClient.fetch_content
IIIF client ra_mcp.iiif_client IIIFClient.get_collection
OAI-PMH client ra_mcp.oai_pmh_client get_record, get_metadata
CLI commands ra_mcp.cli.* cli.search, cli.browse

FastMCP adds automatic spans for all tools/call and resources/read operations.

Verify Telemetry

# Start Jaeger, exercise tools, check trace tree
dagger call verify-telemetry --source=.