Skip to main content
Glama

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 protobuf

  • http/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 .

Related MCP server: Mock MCP Server

Run

otel-mcp           # stdio transport — wire into any MCP client

Or 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_ENDPOINT

  • OTEL_EXPORTER_OTLP_PROTOCOL (grpc | http/protobuf | http/json)

  • OTEL_EXPORTER_OTLP_HEADERS (comma-separated k=v pairs)

  • OTEL_EXPORTER_OTLP_INSECURE (gRPC TLS toggle)

Tools

Endpoint management

Tool

Purpose

add_endpoint

Register a named OTLP destination (url, protocol, signals, headers, …).

remove_endpoint

Drop one endpoint by name.

clear_endpoints

Drop every endpoint.

list_endpoints

Enumerate current endpoints.

status

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

send_trace

{service_name, spans[]} — each span has name, kind, attributes, duration_ms, status, events[], optional parent_name for nesting.

send_metric

{service_name, metrics[]} — each metric has name, kind (counter/up_down_counter/gauge/histogram), unit, description, points[]. Histograms accept a list of samples per point.

send_log

{service_name, records[]} — each record has body, severity, severity_text, attributes, timestamp_ns.

Mimicry

Tool

Purpose

list_mimic_profiles

Show every profile with its parameters.

mimic_tool

Run one profile and send its bundle once.

generate_load

Run a profile on a loop to simulate sustained traffic.

Built-in profiles:

Profile

What it looks like

nginx / http-server

Server spans with HTTP semconv, access logs, request counters & latency histograms.

postgres

DB client spans with db.system=postgresql + connection pool metrics.

redis

DB client spans with db.system=redis.

kafka

Producer/consumer spans with messaging semconv.

aws-lambda

Server spans with faas.* + cloud.* resource attrs, Lambda access logs, invocation metrics.

k8s-pod

Resource = full k8s.* attributes, container cpu/memory/network metrics, Started event log.

grpc

Server spans with rpc.system=grpc.

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

  1. Write a function returning a MimicBundle in src/otel_mcp/mimics.py.

  2. Register it in the PROFILES dict at the bottom of that file.

  3. Call list_mimic_profiles to 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.

Available Tools

11 tools
add_endpointA

Register an OTLP destination.

Args: name: Unique identifier used by other tools to target this endpoint. url: Collector URL. gRPC: host:port or http://host:port. HTTP: base URL (/v1/traces etc. is appended automatically). protocol: One of grpc, http/protobuf, http/json. signals: Subset of traces, metrics, logs. Defaults to all. headers: Headers added to every request (auth tokens, tenant ids, ...). insecure: gRPC only — disable TLS. timeout_seconds: Per-request timeout. overwrite: If an endpoint with this name already exists, replace it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
urlYes
protocolNohttp/protobuf
signalsNo
headersNo
insecureNo
timeout_secondsNo
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a mutation tool (implied by 'Register'), includes an 'overwrite' parameter for handling existing endpoints, and mentions authentication via headers. However, it doesn't cover rate limits, error handling, or side effects beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by a bullet-point-like parameter breakdown. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is largely complete for a mutation tool with no annotations but with an output schema (which handles return values). It covers the tool's purpose and all parameters in detail. However, it lacks some behavioral context like error conditions or system state requirements, which would be beneficial given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description fully compensates by providing detailed semantic explanations for all 8 parameters. It clarifies usage (e.g., 'name' as a unique identifier for targeting, 'url' formats for gRPC/HTTP, 'protocol' options, 'signals' defaults, 'headers' for auth, 'insecure' as gRPC-only, 'timeout_seconds' as per-request, and 'overwrite' for replacement), adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Register') and resource ('OTLP destination'), distinguishing it from siblings like 'remove_endpoint' (deletion) and 'list_endpoints' (querying). It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for registering OTLP endpoints but provides no explicit guidance on when to use this tool versus alternatives like 'clear_endpoints' or 'remove_endpoint'. It lacks context about prerequisites, such as whether the system must be in a specific state, or exclusions for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_endpointsB

Remove all endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. 'Remove all endpoints' suggests a destructive mutation, but it lacks details on permissions, reversibility, confirmation prompts, or effects on system state. It doesn't mention rate limits, error handling, or what 'remove' entails (e.g., deletion vs. deactivation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words. It's front-loaded with the core action and target, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and an output schema (which might cover return values), the description is insufficient. It doesn't explain behavioral traits like safety, side effects, or usage context, leaving critical gaps for an agent to understand when and how to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add param info, but this is acceptable given the empty schema, aligning with the baseline for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Remove all endpoints' clearly states the action (remove) and target (endpoints), with 'all' specifying scope. It distinguishes from sibling 'remove_endpoint' (singular) but doesn't explicitly contrast with other siblings like 'list_endpoints' or 'add_endpoint'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'remove_endpoint' or 'list_endpoints'. The description implies a bulk operation but doesn't specify prerequisites, consequences, or recommend alternatives for partial removal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_loadA

Repeatedly run a mimic profile to simulate sustained traffic.

Blocks for roughly iterations * interval_seconds seconds. For true background loops use an external scheduler — this tool is synchronous by design so the caller sees per-iteration results.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes
iterationsNo
interval_secondsNo
endpointsNo
optionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the tool blocks for a duration ('Blocks for roughly iterations * interval_seconds seconds'), is synchronous ('this tool is synchronous by design'), and provides per-iteration results ('the caller sees per-iteration results'). However, it lacks details on error handling, rate limits, or performance impacts, which are important for a load-generation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, and subsequent sentences add crucial behavioral context without redundancy. Every sentence earns its place by clarifying usage and limitations, making it efficient and well-structured for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (load simulation with multiple parameters), no annotations, and an output schema (which reduces need to describe returns), the description is moderately complete. It covers purpose, behavior, and usage guidelines but lacks details on parameters and advanced behavioral aspects like error handling. This leaves gaps for effective tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'iterations' and 'interval_seconds' in the blocking context, adding meaning beyond the schema. However, it doesn't explain 'profile', 'endpoints', or 'options', leaving three of the five parameters without semantic clarification. This partial coverage is insufficient given the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Repeatedly run a mimic profile to simulate sustained traffic.' It specifies the verb ('run'), resource ('mimic profile'), and goal ('simulate sustained traffic'), which distinguishes it from siblings like 'mimic_tool' (likely a single run) or monitoring tools. However, it doesn't explicitly differentiate from all siblings, such as 'send_metric' or 'send_trace', which might also involve traffic simulation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: it states when to use this tool ('to simulate sustained traffic') and when not to use it ('For true background loops use an external scheduler — this tool is synchronous by design'). It contrasts with alternatives by noting the tool is synchronous and blocks, implying that asynchronous or background tasks should use other methods, though it doesn't name specific sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_endpointsB

List registered endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'List registered endpoints' implies a read-only operation, but doesn't specify whether this returns all endpoints or filtered results, what format the output takes, or any limitations (like pagination or rate limits). The description is too minimal for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise - a single four-word phrase that communicates the core purpose without any wasted words. It's perfectly front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters, 100% schema coverage, and an output schema exists, the description's minimalism is partially justified. However, for a tool with no annotations and multiple related sibling tools, the description should provide more context about what 'endpoints' are and how this listing differs from other list operations in the system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the input requirements. The description doesn't need to explain parameters, and appropriately doesn't attempt to. A baseline of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('registered endpoints'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_mimic_profiles' or explain what distinguishes 'endpoints' from other listable resources in this context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are multiple sibling tools (add_endpoint, remove_endpoint, clear_endpoints) that relate to endpoints, but no indication of when listing is appropriate versus modifying endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mimic_profilesB

List available tool-mimicry profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'List available' implies a read-only operation, but there's no information about permissions needed, whether results are paginated, what format they're returned in, or if there are any rate limits. The description is minimal and lacks important operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple listing tool and front-loads the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with an output schema, the description is minimally adequate. However, given the complexity of the sibling tools (including 'mimic_tool' and various endpoint operations) and no annotations, the description should better explain what 'tool-mimicry profiles' are and how they relate to other tools in this system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't mention parameters since none exist, earning a baseline 4 for not creating confusion about non-existent parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'tool-mimicry profiles', making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'list_endpoints' or explain what distinguishes 'mimicry profiles' from other listable resources in this system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_endpoints' or 'mimic_tool'. There's no mention of prerequisites, context for when mimicry profiles are relevant, or what this tool enables that others don't.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimic_toolB

Emit a realistic bundle of signals mimicking a known tool.

Args: profile: One of nginx, postgres, redis, kafka, aws-lambda, k8s-pod, grpc. Call list_mimic_profiles for profile-specific parameters. endpoints: Fan-out target endpoints. Defaults to all registered. options: Keyword args passed to the profile (e.g. {"count": 50}).

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes
endpointsNo
optionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'emit signals' but doesn't disclose behavioral traits like whether this is read-only or destructive, authentication needs, rate limits, or what 'realistic bundle' entails. The description is minimal and lacks crucial operational context for a tool that generates data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: a clear purpose statement followed by structured parameter explanations. Every sentence earns its place, with no wasted words. The Args section is well-organized and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters with 0% schema coverage and no annotations, the description does well on parameters but lacks behavioral context. The existence of an output schema means return values needn't be explained, but for a data-generation tool with siblings, more guidance on when to use it would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It provides meaningful semantics for all 3 parameters: 'profile' with specific examples and a reference to another tool, 'endpoints' as fan-out targets with default behavior, and 'options' as keyword args with an example. This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Emit a realistic bundle of signals mimicking a known tool.' It specifies the action (emit signals) and resource (mimicking known tools), but doesn't explicitly differentiate from siblings like 'generate_load' or 'send_log' which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing profile options and referencing 'list_mimic_profiles' for details, but doesn't explicitly state when to use this tool versus alternatives like 'generate_load' or the various 'send_*' tools. It provides some context but lacks clear when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_endpointC

Remove an endpoint by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Remove' implies a destructive operation, but the description doesn't specify whether this is permanent, requires specific permissions, has side effects, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive mutation tool with no annotations, 0% schema description coverage, and only basic parameter documentation. While an output schema exists (which helps), the description fails to address critical behavioral aspects like safety, permissions, or error conditions that are essential for proper tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions the 'name' parameter but provides no additional meaning about what constitutes a valid endpoint name, format requirements, or how names are resolved. This adds minimal value beyond what's implied by the parameter name itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and target resource ('an endpoint by name'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'clear_endpoints' which might also remove endpoints, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'clear_endpoints' (which might remove all endpoints) or prerequisites for removal. It simply states what the tool does without contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_logB

Send one or more log records.

Each record dict accepts: body, severity (trace/debug/info/warn/ error/fatal), severity_text, attributes, timestamp_ns.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes
recordsYes
resource_attributesNo
endpointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what data can be sent but doesn't cover critical aspects like whether this is a write operation (implied by 'send'), authentication requirements, rate limits, error handling, or what happens after sending. This leaves significant gaps for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured: a clear opening sentence states the purpose, followed by a bullet-like list of record fields. Every sentence earns its place with no wasted words, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there's an output schema (which handles return values), no annotations, and moderate complexity with 4 parameters, the description is partially complete. It covers record structure well but misses top-level parameter explanations and behavioral context. For a tool that likely performs writes, more disclosure would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial value beyond the schema, which has 0% description coverage. It documents the structure of individual log records (body, severity, severity_text, attributes, timestamp_ns), which isn't captured in the schema's generic 'additionalProperties' for records. However, it doesn't explain the four top-level parameters (service_name, records, resource_attributes, endpoints) mentioned in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('log records'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'send_metric' or 'send_trace' beyond specifying it's for logs rather than metrics or traces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'send_metric' or 'send_trace', nor does it mention any prerequisites or contextual constraints. It simply describes what the tool does without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_metricB

Send one or more metric instruments.

Each metric dict accepts: name, kind (counter/up_down_counter/gauge/ histogram), unit, description, points (list of {value, attributes}). For histograms, value may be a list of samples.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes
metricsYes
resource_attributesNo
endpointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the structure of metric data but doesn't mention whether this is a read/write operation, what permissions are needed, whether it's idempotent, or what happens on failure. The description adds some context about metric structure but lacks critical behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by specific details about the metrics parameter. Every sentence adds value without redundancy, making it appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with 0% schema coverage and no annotations, the description provides good detail about the 'metrics' parameter but leaves others unexplained. The existence of an output schema reduces the need to describe return values, but the description could better address the tool's overall context and behavioral aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by detailing the structure of the 'metrics' parameter, including accepted fields like 'name', 'kind', 'unit', 'description', and 'points'. However, it doesn't explain the other 3 parameters (service_name, resource_attributes, endpoints), leaving them undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Send one or more metric instruments.' It specifies the action (send) and resource (metric instruments), but doesn't differentiate from sibling tools like 'send_log' or 'send_trace' beyond mentioning metrics specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'send_log' or 'send_trace', nor does it provide context about appropriate use cases or prerequisites for sending metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_traceA

Send one or more spans to the targeted endpoints.

Each span dict accepts: name, kind (internal/server/client/producer/ consumer), attributes, duration_ms, status (ok/error/unset), status_message, events (list of {name, attributes}), parent_name (to nest spans within the same batch).

If endpoints is omitted, fans out to every endpoint that accepts traces.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes
spansYes
resource_attributesNo
endpointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It describes the fan-out behavior when endpoints are omitted, which is useful. However, it lacks details on permissions, rate limits, error handling, or what the output schema might contain, leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose, followed by key details in a logical flow. Each sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, but an output schema exists, the description is moderately complete. It covers the core action and span structure but misses details on parameters like 'service_name', mutation implications, or integration with sibling tools, leaving room for improvement in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the structure of 'spans' (e.g., fields like 'name', 'kind', 'attributes') and the optional 'endpoints' behavior, adding significant meaning beyond the bare schema. It doesn't cover 'service_name' or 'resource_attributes' in detail, but provides enough context for core usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send') and resource ('spans to targeted endpoints'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'send_log' or 'send_metric' beyond mentioning 'traces' in the context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for sending trace data to endpoints, with a note about default behavior when 'endpoints' is omitted. It doesn't provide explicit guidance on when to use this vs. alternatives like 'send_log' or 'send_metric', nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Report configured endpoints and available profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation ('report'), which is safe, but doesn't disclose behavioral traits like response format, potential errors, or performance characteristics. The description adds minimal context beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose with no wasted words. It's appropriately sized for a simple tool with no parameters, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is reasonably complete. It states what the tool does, and the output schema will handle return values. However, it lacks usage guidance and behavioral context, which are minor gaps for a read-only reporting tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with the verb 'report' and specifies the resources ('configured endpoints and available profiles'). It distinguishes from siblings like 'list_endpoints' and 'list_mimic_profiles' by reporting both in one operation, but doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_endpoints' or 'list_mimic_profiles'. It doesn't mention prerequisites, timing, or exclusions, leaving the agent to infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.0
    • First observedadd_endpoint
    • First observedclear_endpoints
    • First observedgenerate_load
    • First observedlist_endpoints
    • First observedlist_mimic_profiles
    • First observedmimic_tool
    • First observedremove_endpoint
    • First observedsend_log
    • First observedsend_metric
    • First observedsend_trace
    • First observedstatus

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools like add_endpoint, remove_endpoint, and clear_endpoints handle endpoint management, while send_log, send_metric, and send_trace target specific telemetry signals. Mimic_tool and generate_load are for simulation, and list_endpoints/list_mimic_profiles/status are for querying, all with non-overlapping functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as add_endpoint, list_endpoints, send_log, and mimic_tool. This uniformity makes the set predictable and easy to understand, with no deviations in naming conventions.

Tool Count5/5

With 11 tools, this server is well-scoped for OpenTelemetry management and simulation. It covers endpoint configuration, telemetry emission, mimicry, and status reporting without being overly sparse or bloated, with each tool serving a clear and necessary role.

Completeness5/5

The tool set provides complete coverage for the OpenTelemetry domain, including CRUD operations for endpoints (add, remove, clear, list), sending all signal types (logs, metrics, traces), simulation capabilities (mimic, generate_load), and querying (status, list profiles). There are no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server implementation that enables dynamic configuration of OpenTelemetry Collectors, allowing users to add, remove, and configure receivers, processors, and exporters through MCP tools.
    12
    52
    GPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    A mock MCP server for testing MCP client implementations and development workflows. Supports tools, prompts, and resources across multiple transport protocols (stdio, HTTP, SSE).
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for analyzing OpenTelemetry traces with performance and error diagnosis, supporting loading from files, AWS X-Ray, and CloudWatch.
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that gives AI agents access to your application's OpenTelemetry traces for querying, analysis, and debugging.
    5
    12
    2
    MIT

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/michigan-public-tech-org/otel_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server