Skip to main content

MCP server for OpenTelemetry trace analysis during development

Project description

OTEL MCP Server

An MCP (Model Context Protocol) server for Jaeger trace analysis during development. Query and analyze distributed traces with AI assistance for debugging and performance optimization.

Features

  • Service Discovery: List services and operations in your Jaeger instance
  • Trace Inspection: Search, filter, and inspect traces with full span details
  • Performance Analysis: Find slow traces, get latency percentiles, error rates
  • REST API: FastAPI endpoints with OpenAPI documentation at /docs
  • Self-Telemetry: The server traces itself to Jaeger for debugging

Installation

Using uvx (Recommended)

Run directly without installing:

# Run MCP server
uvx otel-mcp

# Run REST API
uvx --from otel-mcp otel-mcp-api

Using pip

pip install otel-mcp

# Then run
otel-mcp        # MCP server
otel-mcp-api    # REST API

From Source

git clone https://github.com/ryanm101/otel-mcp.git
cd otel-mcp
uv sync
uv run otel-mcp

Quick Start

1. Start Jaeger

docker-compose up -d
# Jaeger UI at http://localhost:16686

2. Run the MCP Server

uvx otel-mcp
# Or with environment variables:
JAEGER_URL=http://jaeger:16686 uvx otel-mcp

3. Or Run the REST API

uvx --from otel-mcp otel-mcp-api
# OpenAPI docs at http://localhost:8000/docs

MCP Client Configuration

Add to your MCP client config (e.g., Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "otel-mcp": {
      "command": "uvx",
      "args": ["otel-mcp"],
      "env": {
        "JAEGER_URL": "http://localhost:16686"
      }
    }
  }
}

Configuration

Create a .env file (see .env.example):

JAEGER_URL=http://localhost:16686
JAEGER_TIMEOUT=30
LOG_LEVEL=INFO

# Debug logging (writes to file in working directory)
# DEBUG_LOG_FILE=otel-mcp.log

# Self-telemetry (optional)
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_SERVICE_NAME=otel-mcp
# OTEL_SDK_DISABLED=true  # Disable self-telemetry

MCP Tools

Service Discovery

Tool Description
list_services List all services in Jaeger
list_operations List operations for a service

Trace Inspection

Tool Description
search_traces Search traces with filters (service, operation, duration, errors)
get_trace Get complete trace by ID with all spans
find_errors Find traces containing errors

Performance Analysis

Tool Description
get_slow_traces Find slowest traces
get_operation_stats Get latency percentiles (p50/p95/p99) and error rates

REST API Endpoints

Endpoint Method Description
/health GET Health check
/services GET List services
/services/{name}/operations GET List operations
/traces GET Search traces
/traces/{trace_id} GET Get trace by ID
/traces/errors GET Find error traces
/traces/slow GET Find slow traces

Development

Run Tests

uv run pytest tests/ -v

Run with Coverage

uv run pytest tests/ --cov=otel_mcp --cov-report=term-missing

Lint and Type Check

uv run ruff check src/
uv run mypy src/

Adding a New Backend

  1. Create backends/tempo.py implementing BaseBackend
  2. Add backend type to config.py
  3. Update _create_backend() in server.py and api.py

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

otel_mcp-0.1.4.tar.gz (131.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

otel_mcp-0.1.4-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file otel_mcp-0.1.4.tar.gz.

File metadata

  • Download URL: otel_mcp-0.1.4.tar.gz
  • Upload date:
  • Size: 131.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for otel_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 52f8c40ac6e20f772d7e1a192c0c0662435dea19ea8c3ffcb787b20f8667d1b7
MD5 c391c009633c261c942cec5fef52f0f7
BLAKE2b-256 8f04e2d415d73144d96b0cbc5e6003decf3e1e8bffb0d75e6e6c2115c903064d

See more details on using hashes here.

Provenance

The following attestation bundles were made for otel_mcp-0.1.4.tar.gz:

Publisher: ci.yml on krackenservices/otel-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file otel_mcp-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: otel_mcp-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for otel_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 987b6d0795c1b50e9f389bf6553f6cdeb62f241e28a3ae45eee88ef08f09900e
MD5 52f93c6550868f6658b2f81af707096d
BLAKE2b-256 cdf1f5c7537f846c89cbc66ccafbb5072f6f44b92d53bd3442dc88d7d08adef0

See more details on using hashes here.

Provenance

The following attestation bundles were made for otel_mcp-0.1.4-py3-none-any.whl:

Publisher: ci.yml on krackenservices/otel-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page