otel-mcp
Allows emitting OpenTelemetry traces to Jaeger via OTLP/HTTP JSON protocol, enabling visualization and analysis of distributed tracing data in Jaeger's UI.
Provides a k8s-pod mimicry profile that generates realistic Kubernetes pod telemetry including container metrics and k8s.* resource attributes for simulating Kubernetes environments.
Provides an nginx/http-server mimicry profile that generates realistic HTTP server telemetry including server spans with HTTP semantic conventions, access logs, request counters, and latency histograms.
Core integration that emits OpenTelemetry traces, metrics, and logs to OTLP endpoints, supporting all three OTLP wire formats (gRPC, HTTP/protobuf, HTTP/JSON) for comprehensive observability data collection.
Provides a postgres mimicry profile that generates database client spans with db.system=postgresql attributes and connection pool metrics for simulating PostgreSQL database interactions.
Provides a redis mimicry profile that generates database client spans with db.system=redis attributes for simulating Redis cache/database operations.
Enables modeling of payment service interactions through span attributes like peer.service="stripe" in custom trace generation for simulating e-commerce checkout flows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@otel-mcpsimulate 20 nginx requests with a 5% error rate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
otel-mcp
An MCP server that emits OpenTelemetry traces, metrics, and logs to one or more OTLP endpoints at the same time, in any of the three OTLP wire formats:
grpc— OTLP/gRPC (protobuf over HTTP/2)http/protobuf— OTLP/HTTP binary protobufhttp/json— OTLP/HTTP proto3-JSON (spec-compliant)
It also ships tool-mimicry profiles that produce realistic signal bundles shaped like well-known tools (nginx, postgres, redis, kafka, aws-lambda, kubernetes pod, generic gRPC service), so you can populate a collector or backend with traffic that looks like a real environment.
Install
uv venv
uv pip install -e .Run
otel-mcp # stdio transport — wire into any MCP clientOr via an MCP client config (e.g. Claude Desktop, Claude Code):
{
"mcpServers": {
"otel": {
"command": "otel-mcp"
}
}
}Env bootstrap
If OTEL_EXPORTER_OTLP_ENDPOINT is set on launch, an endpoint named default
is registered using the standard OTEL env vars:
OTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_PROTOCOL(grpc|http/protobuf|http/json)OTEL_EXPORTER_OTLP_HEADERS(comma-separatedk=vpairs)OTEL_EXPORTER_OTLP_INSECURE(gRPC TLS toggle)
Tools
Endpoint management
Tool | Purpose |
| Register a named OTLP destination (url, protocol, signals, headers, …). |
| Drop one endpoint by name. |
| Drop every endpoint. |
| Enumerate current endpoints. |
| Endpoints + available mimic profiles. |
Endpoints are selected per call: every signal-emitting tool accepts an
endpoints: [names] arg. Omit it to fan out to every endpoint that accepts
that signal type.
Raw signal emission
Tool | Shape of input |
|
|
|
|
|
|
Mimicry
Tool | Purpose |
| Show every profile with its parameters. |
| Run one profile and send its bundle once. |
| Run a profile on a loop to simulate sustained traffic. |
Built-in profiles:
Profile | What it looks like |
| Server spans with HTTP semconv, access logs, request counters & latency histograms. |
| DB client spans with |
| DB client spans with |
| Producer/consumer spans with messaging semconv. |
| Server spans with |
| Resource = full |
| Server spans with |
Example session
> add_endpoint name="otel-collector" url="http://localhost:4318" protocol="http/protobuf"
> add_endpoint name="jaeger-json" url="http://localhost:4318" protocol="http/json" signals=["traces"]
> mimic_tool profile="nginx" options={"count": 50, "error_rate": 0.1}
> mimic_tool profile="postgres"
> generate_load profile="kafka" iterations=10 interval_seconds=2
> send_trace service_name="checkout" spans=[
{"name": "POST /checkout", "kind": "server", "duration_ms": 42, "attributes": {"http.response.status_code": 200}},
{"name": "charge_card", "kind": "client", "parent_name": "POST /checkout", "duration_ms": 18,
"attributes": {"peer.service": "stripe"}}
]Adding a new mimic profile
Write a function returning a
MimicBundleinsrc/otel_mcp/mimics.py.Register it in the
PROFILESdict at the bottom of that file.Call
list_mimic_profilesto confirm it picked up the parameters.
Profiles stay declarative: each returns span/metric/log specs that flow through the same generator pipeline, so they inherit correct resource merging, wire format support, and fan-out automatically.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/probsJustin/otel_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server