Skip to main content
Ultra provides complete observability over MCP traffic through a pipeline of four interceptors. Every tool call, resource read, and prompt request is automatically traced, logged, audited, and measured.

The Pipeline

Every MCP request passes through a chain of interceptors before reaching the upstream server. Responses pass through the same chain in reverse:
Request  → Trace → Logging → Audit → Metrics → Upstream Server
Response ← Trace ← Logging ← Audit ← Metrics ←
InterceptorPriorityWhat It RecordsFailure Mode
Trace0 (first)OpenTelemetry spans with trace/span IDs, request/response payloads, durationFail open
Logging75Structured log entries for every request/responseFail open
Audit75Security audit events with severity, outcome, and principalFail closed (response)
Metrics100 (last)Request counters, latency histograms, error ratesFail open

Failure Modes

  • Fail open — The interceptor absorbs errors silently. A trace storage failure won’t block your MCP request. Observability should never break your workflow.
  • Fail closed — Errors propagate and block the operation. The audit interceptor fails closed on response recording to ensure complete audit trails for compliance.
  • BeforeRequest — Any error from any interceptor in the request phase blocks the request entirely. The request never reaches the upstream server.

Where Data Lives

By default, all observability data is stored in a local SQLite database:
~/.config/ultra/ultra.db
This file contains:
  • Trace records — Every MCP operation with full request/response payloads
  • Audit events — Security-relevant events with severity and outcome
  • Metrics — Aggregated performance data

Viewing Data

# Web dashboard
ultra dashboard

# Dashboard on custom port
ultra dashboard --address :9090

Hub Sync

When connected to Ultra Hub, traces and audit events are automatically synced to the cloud for team-wide visibility. Local storage is always maintained regardless of Hub connectivity.

What Gets Recorded

MCP Operations

Operation TypeTriggered By
tool_callAI agent calls an MCP tool
resource_readAI agent reads an MCP resource
prompt_getAI agent retrieves an MCP prompt
tool_listClient lists available tools
resource_listClient lists available resources
prompt_listClient lists available prompts

For Every Operation

  • Trace ID and Span ID — OpenTelemetry-compatible identifiers for distributed tracing
  • Upstream server — Which server handled the request
  • Tool/resource/prompt name — What was called
  • Request payload — The arguments sent
  • Response payload — The result returned
  • Duration — How long the operation took
  • Status — Success or error
  • Principal — The MCP client identity

Next Steps