otel-analyzer-mcp
Auto-detects and loads traces in Jaeger format, supporting performance and error analysis of Jaeger traces.
Loads and analyzes OpenTelemetry traces (OTLP JSON or Protobuf) with performance and error diagnosis capabilities.
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-analyzer-mcpsummarize trace abc123"
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 Analyzer MCP Server
MCP server for analyzing OpenTelemetry traces with performance and error diagnosis.
Features
Load traces from files, strings, AWS X-Ray, or CloudWatch GenAI observability
Auto-detect format (OTLP JSON, Jaeger, Protobuf, X-Ray)
Performance analysis: latency breakdown, slow spans, critical path
Error analysis: error detection, exception extraction, context
GenAI trace analysis: Bedrock AgentCore, token usage, model latency
MCP sampling for LLM-assisted deep analysis
Related MCP server: otel-mcp
Installation
uv tool install otel-analyzer-mcpOr for development:
uv syncUsage
Run the server:
otel-analyzer-mcpOr add to your MCP client config:
{
"mcpServers": {
"otel-analyzer-mcp": {
"command": "otel-analyzer-mcp"
}
}
}Tools
Tool | Description |
| Load from file, JSON, X-Ray trace ID, or CloudWatch |
| Search X-Ray with filter expressions |
| Search CloudWatch aws/spans for GenAI traces |
| List all loaded traces |
| Performance analysis (latency, slow spans, critical path) |
| Error analysis (errors, exceptions, context) |
| High-level trace overview |
| LLM-assisted analysis via MCP sampling |
Examples
Load a trace file:
load_trace(path="/path/to/trace.json")Search X-Ray:
search_xray(filter_expression='service("my-api") AND responseTime > 5', region="us-east-1")Search GenAI traces:
search_genai_traces(filter_query='name like /bedrock/', region="us-east-1")Load from CloudWatch:
load_trace(trace_id="abc123", source="cloudwatch", region="us-east-1")Analyze performance:
analyze_perf(trace_id="abc123")License
MIT
Available Tools
8 toolsanalyze_errsC
Analyze trace errors: error spans, exceptions, failure context.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether the tool performs a read-only analysis, requires specific permissions, or has rate limits. The output schema exists but is not referenced, leaving expected behavior unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), which borders on under-specification. While concise, it omits critical details that would justify its brevity, making it insufficient for an agent to use effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and existence of an output schema, the description is incomplete. It fails to explain what 'analyze' entails, what the output contains, or how to interpret results. Prerequisites and error handling are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It mentions 'trace errors' but does not explain the 'trace_id' parameter's format, constraints, or how it relates to the returned data. The single parameter lacks semantic enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: analyzing trace errors, including error spans, exceptions, and failure context. This specific verb-resource combination distinguishes it from sibling tools like 'analyze_perf' and 'deep_analyze'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'deep_analyze' or 'search_genai_traces'. The description does not mention prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_perfB
Analyze trace performance: latency breakdown, slow spans, critical path.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | Yes | ||
| slow_threshold_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read-only analysis operation, but does not disclose behavior for missing traces, error handling, or side effects. The output schema exists, which mitigates some transparency concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is extremely concise and front-loaded with the core purpose. Every word adds value, though it could be slightly expanded with structural markers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks parameter details, usage context, and differentiation from siblings. For a tool with 2 parameters and 7 siblings, the description is insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters (trace_id, slow_threshold_ms). The mention of 'slow spans' hints at threshold usage but fails to define the parameter's role or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes trace performance and lists specific outputs like latency breakdown, slow spans, and critical path. It distinguishes itself from siblings like analyze_errs (errors) and summarize_trace (summary) by focusing on performance details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as deep_analyze or list_traces. The description does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_analyzeC
Use MCP sampling for LLM-assisted trace analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | Yes | ||
| question | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden for behavioral disclosure. It only states the tool's purpose without mentioning side effects, permissions, rate limits, or output behavior. This is a critical gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise but overly brief. It front-loads the purpose but sacrifices detail. While no words are wasted, the lack of structure and additional information reduces its utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no annotations, and sibling tools, the description is grossly incomplete. It fails to explain the role of the LLM, the meaning of 'MCP sampling', or how the output relates to the input, making it insufficient for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description does not compensate by explaining parameters. The parameter names (trace_id, question) are somewhat intuitive, but no additional semantics or constraints are provided, leaving uncertainty about valid values or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool is for 'LLM-assisted trace analysis' using 'MCP sampling', giving a general sense of purpose but lacking specificity on what makes it 'deep' versus other analysis tools. It does not differentiate from siblings like summarize_trace or analyze_errs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description provides no context for decision-making, leaving the agent without criteria to select deep_analyze over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tracesA
List all loaded traces with summaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without disclosing behavioral traits such as scope, side effects, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 4 words, front-loaded with the core action and result. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (not shown), the description is nearly complete. It could slightly elaborate on what 'summaries' entails, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (0 params, baseline 4). The description adds 'with summaries', which provides meaning beyond the empty schema, earning a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all loaded traces with summaries, using a specific verb and resource. It is distinct from sibling tools like analyze_errs or load_trace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 search_genai_traces or summarize_trace. Lacks any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_traceA
Load a trace from file, string, X-Ray, or CloudWatch. Auto-detects format.
Args: path: File path to trace JSON data: Raw JSON string trace_id: Trace ID to fetch from X-Ray or CloudWatch source: Source for trace_id lookup: 'xray' or 'cloudwatch' (default: xray) profile: AWS profile name region: AWS region
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| data | No | ||
| trace_id | No | ||
| source | No | xray | |
| profile | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It mentions auto-detection of format and multi-source loading but omits details like required permissions, error handling, performance implications, or side effects. This is insufficient for a tool with multiple optional parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear opening line followed by a parameter list. It front-loads the purpose. However, the parameter list uses a less structured format (Args: with colons) which slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (none required) and an output schema exists, the description lacks details about what the function returns, error messages, and interactions between parameters (e.g., using both path and trace_id). It is incomplete for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining each parameter: path, data, trace_id, source (with default), profile, region. It adds meaning beyond the schema (e.g., 'Trace ID to fetch from X-Ray or CloudWatch'), but could be more specific about input formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Load a trace from file, string, X-Ray, or CloudWatch. Auto-detects format.' This provides a specific verb and resource, and distinguishes it from sibling tools like analyze_errs and search_xray which are for analysis or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists arguments but does not explicitly state when to use this tool versus alternatives. It implies usage for loading traces from given sources but lacks guidance on when not to use it or when to prefer siblings like list_traces or search_xray.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_genai_tracesA
Search CloudWatch aws/spans for GenAI traces from Bedrock AgentCore.
Args: filter_query: CloudWatch Logs Insights filter (e.g., 'name like /bedrock/') start_time: ISO format start time end_time: ISO format end time limit: Max results (default: 20) profile: AWS profile name region: AWS region
Returns GenAI traces with model info, token usage, and latency.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_query | No | ||
| start_time | No | ||
| end_time | No | ||
| limit | No | ||
| profile | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the tool returns model info, token usage, and latency, and notes that filter_query is a CloudWatch Logs Insights filter. However, it does not disclose pagination, rate limits, auth details, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, followed by a structured argument list and a return statement. Every sentence adds value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains parameters and return values (model info, token usage, latency). Given the presence of an output schema, it is mostly complete. However, it could benefit from clarifying default time range behavior or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds clear meaning for each parameter: examples for filter_query, format for start/end_time, default for limit, and context for profile/region. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool searches CloudWatch aws/spans for GenAI traces from Bedrock AgentCore, specifying the resource, action, and target. It distinguishes from siblings like search_xray (X-Ray) and list_traces (list without filtering).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it searches GenAI traces with a filter query and time range, but does not explicitly state when to use it versus alternatives like search_xray or list_traces. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_xrayC
Search X-Ray for traces matching filter expression.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_expression | No | ||
| start_time | No | ||
| end_time | No | ||
| limit | No | ||
| profile | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose whether the tool is read-only, what output format to expect (though output schema exists, its content is not described), rate limits, or required permissions. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste. Front-loaded with action and resource. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no annotation coverage, description is severely incomplete. Does not explain filter syntax, time range semantics, pagination, or region/profile usage. Output schema exists but its details are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It only mentions 'filter expression' but does not describe start_time, end_time, limit, profile, or region. No additional meaning beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies action ('search'), resource ('X-Ray'), and what it searches for ('traces matching filter expression'). It is clear but does not differentiate from sibling tools like list_traces which might also list traces, though the filter expression implies a filtered search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., when to use list_traces vs search_genai_traces). No exclusions or prerequisites mentioned. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_traceD
High-level trace overview.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description offers minimal behavioral info. It hints at a read operation but lacks detail on permissions, resource usage, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short but underspecified. The phrase 'High-level trace overview' does not earn its place as it adds little value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema, the description lacks essential context: what the overview includes, how it differs from siblings, and what the output looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fails to explain the sole parameter trace_id (e.g., format, source, required context).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'High-level trace overview' is vague and close to tautology. It does not distinguish from siblings like analyze_errs or analyze_perf, which also provide trace analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. No exclusions or context provided.
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.
8 tool updates
v0.1.1- First observed
analyze_errs - First observed
analyze_perf - First observed
deep_analyze - First observed
list_traces - First observed
load_trace - First observed
search_genai_traces - First observed
search_xray - First observed
summarize_trace
TDQS
Scored across 8 tools
Each tool targets a distinct aspect of trace management and analysis. No two tools have overlapping purposes; descriptions clearly differentiate ingestion, listing, summarizing, error analysis, performance analysis, LLM-assisted analysis, and searching by source.
Tool names follow a consistent verb_noun snake_case pattern (e.g., load_trace, list_traces, summarize_trace). Minor deviations: analyze_errs and analyze_perf use abbreviations (errs, perf) and deep_analyze uses an adjective prefix, but these are still readable and fit the general pattern.
With 8 tools, the server provides a comprehensive but focused set of operations for trace analysis: ingestion, listing, summarization, error analysis, performance analysis, LLM-assisted analysis, and source-specific searches. Each tool earns its place without redundancy.
The tool set covers the main lifecycle of trace analysis: loading, listing, summarizing, error and performance analysis, and advanced LLM analysis. It also includes source-specific search. A minor gap is the lack of a query/filter capability on loaded traces beyond the static listing, but overall the surface is well-rounded for typical observability tasks.
Maintenance
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
Cloud hosted Okahu MCP server that helps you manage genAI trace data
MCP server for building and testing AI agents with multi-model experimentation and insights.
Cloudflare Workers MCP server: agent-trace-auditor
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server for the Uptrace observability platform that enables querying traces, spans, logs, and metrics through natural language. It provides tools for error analysis, service discovery, and trace visualization within MCP-compatible clients.112-
- AlicenseAqualityDmaintenanceAn MCP server that emits OpenTelemetry traces, metrics, and logs to OTLP endpoints in various formats. It includes tool-mimicry profiles to generate realistic traffic resembling common tools like nginx, postgres, and AWS Lambda for testing and demonstration purposes.11MIT
- AlicenseNot gradedqualityDmaintenanceUnified MCP server for observability and monitoring, providing tools to query metrics, logs, and traces through Prometheus, Grafana, Loki, and Jaeger.2Mozilla Public 2.0
- AlicenseAqualityDmaintenanceMCP server that gives AI agents access to your application's OpenTelemetry traces for querying, analysis, and debugging.5122MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jsamuel1/otel-analyzer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server