Mezmo MCP Server (Model Context Protocol)
Mezmo MCP is a remote Model Context Protocol (MCP) server that lets AI assistants and IDE chat agents interact with the Mezmo observability platform via the Model Context Protocol. Use it for streamlined observability, log analysis, and root-cause analysis in your favorite tools. Add Mezmo MCP and you can:- 🕵️ Run advanced Root-cause analysis over recent logs
- 📦 List, describe, create, and edit Pipelines
- 🔌 Tap live pipeline traffic for inspection
- 📤 Export and filter Logs with powerful query syntax
- 🔎 Review AI Investigations for your account
Overview
Mezmo MCP is a remote MCP server that connects AI assistants and IDE chat to Mezmo so you can run advanced root-cause analysis, discover and build pipelines, and export logs without hosting anything yourself. It’s built for observability use cases and works across many popular MCP clients, including AURA, Mezmo’s own agentic SRE harness.Available Tools & Examples
1. Log Analysis & Root Cause Detection
analyze_logs_for_root_cause_relative_time
Fetches, processes (deduplicates, clusters), and analyzes logs to determine potential root causes for incidents within a relative time range.
Use cases:
- Investigating recent incidents
- Finding root causes of system failures
- Analyzing error patterns
analyze_logs_for_root_cause_time_range
Similar to the relative time version but uses absolute time ranges.
Example:
“What caused the database connection pool to be exhausted between 10 AM and 11 AM today in the backend app?“
2. Log Deduplication
deduplicate_logs_relative_time
Removes duplicate log entries within a relative time range.
Example:
“Deduplicate the error logs from the payment service in the last 15 minutes”
deduplicate_logs_time_range
Deduplicates logs within an absolute time range.
Example:
“Remove duplicate exception logs from the web frontend between 2 PM and 3 PM yesterday”
3. Log Grouping & Aggregation
group_logs_by_field
Groups logs by a specific field and returns distribution of values with optional metric aggregation.
Use cases:
- “Which apps generate the most errors?”
- “What is the p95 latency per host?”
- “Which pods are producing the most logs?”
4. Log Visualization
get_log_histogram
Returns a time-series histogram of log volume over time.
Use cases:
- Visualizing log activity patterns
- Identifying spikes or anomalies
- Understanding when incidents occurred
5. Field Discovery
list_log_fields
Lists available structured fields that can be used in log queries.
Use cases:
- Discovering available fields for queries
- Finding field names like “app”, “host”, “level”, “namespace”, “pod”, “node”
_ms (timing metrics)”
“Is there an ‘app’ field in the logs?”
“Show me fields that start with ‘request’ and end with ‘time‘“
6. Pipeline Management
list_pipelines
Lists available Mezmo v3 pipelines.
Example:
“Show me all the Mezmo pipelines”
“What pipelines are configured?”
get_pipeline
Gets details for a specific Mezmo v3 pipeline, including root-level DAG/configuration fields such as sources, transforms, and sinks when returned by the Pipeline API.
Parameters:
pipeline_id(required): UUID of the pipeline
create_pipeline
Creates an empty draft Mezmo pipeline. Sources, transforms, and destinations are added separately, and this tool does not publish the pipeline.
Parameters:
title(required): Pipeline titledeploy_type(optional): Pipeline deploy type. Defaults tosaasdeployment_groups(optional): Deployment groups for the pipeline
Pipeline node discovery
Use these tools to discover and inspect the source, transform/processor, and destination/sink schemas available from the Pipeline API before building a pipeline:get_node_catalog: Returns the rawGET /pipeline/nodecatalog.search_pipeline_node_schemas: Searches source, transform/processor, and destination/sink node schemas bykindand/or a free-textquery, without surfacing nested JSON Schema fragments as selectable nodes.get_pipeline_node_schema: Inspects a single node schema (node_type, optionalkind) before constructing a Pipeline API body.
Building and editing pipelines
add_pipeline_source: Adds a source node to an existing pipeline from catalog/schema-backed payload fields (pipeline_id,node_type, optionaltitle,description,user_config,extra_fields).add_pipeline_transform: Adds a transform/processor node, wired to upstream nodes via raw UUIDs or aliases (pipeline_id,node_type,inputs, optionaltitle,description,user_config,extra_fields).add_pipeline_destination: Adds a destination node, mapped to the Pipeline API sink endpoint (same parameters asadd_pipeline_transform).create_pipeline_access_key: Creates a source gateway access key (gateway_route_id,title, optionalkey_type,extra_fields). Generated secret values are redacted from the MCP response.update_pipeline_component: Updates an existing source, transform/processor, or destination/sink with a rawPUTpayload (pipeline_id,component_id,kind,payload). Inspectget_pipelineand the relevant node schema first.delete_pipeline_component: Deletes an existing source, transform/processor, or destination/sink (pipeline_id,component_id,kind). Use explicit confirmation before calling this, since it’s destructive.
create_pipeline_from_manifest
Creates a pipeline end to end from a manifest: creates the pipeline, adds sources, optionally creates generated access keys, adds transforms/processors, adds destinations/sinks, and publishes only when publish is explicitly true.
Parameters:
title(required): Pipeline titledeploy_type,deployment_groups,config(optional): Same ascreate_pipelinesources,transforms,destinations(optional): Arrays of node specs, each with analias,type, optionaltitle,description,user_config,inputs, andaccess_keypublish(optional): Publish the pipeline once created. Defaults tofalse
inputs can reference other nodes by alias (for example alias.Default or alias.outputs[0]) or by raw UUID, letting the agent wire the whole DAG in one call.
Example:
“Create a pipeline named ‘payments-pipeline’ with an HTTP source feeding a JSON parser transform and a Datadog destination, and publish it”
tap_pipeline_component
Taps live events from a deployed pipeline component via /pipeline/{pipeline_id}/tap/{component_id}.
Parameters:
pipeline_id(required): UUID of the pipelinecomponent_id(required): UUID of the source or processor component to taptimeout(optional): Seconds to wait for events. Defaults to2limit(optional): Maximum events to return, capped at100to keep agent context bounded. Defaults to100
get_pipeline first to identify a source or processor component ID, and treat returned event data as potentially sensitive.
Example:
“Tap the http-source component on pipeline 123e4567-e89b-12d3-a456-426614174000 and show me a sample of live events”
pause_pipeline / unpause_pipeline
Sets a pipeline’s processing_status to disabled or enabled respectively. Neither tool publishes or edits the pipeline DAG.
Parameters:
pipeline_id(required): UUID of the pipeline
publish_pipeline
Publishes a pipeline’s current draft configuration.
Parameters:
pipeline_id(required): UUID of the pipeline
publish_pipeline is never called automatically by create_pipeline_from_manifest unless publish is explicitly set to true, so draft pipelines stay unpublished until you confirm.7. Time Utilities
get_current_time
Returns the current server time in various formats.
Example:
“What time is it right now?”
“Get the current timestamp”
Use cases:
- Determining time ranges for log analysis
- Converting between time formats
relative_time_to_time_range
Converts relative time expressions to absolute time ranges in milliseconds.
Examples:
“Convert ‘last 5 minutes’ to an absolute time range”
“What’s the timestamp range for ‘2 hours ago’?“
8. Trace Analysis
These tools analyze OpenTelemetry trace data across your entire account, so you don’t need to specify a source or component. Trace, span, and failure data lags behind real time by roughly a couple of minutes. The degraded-edge and latency-summary tools (find_degraded_service_edges and list_service_latency_summaries) draw on latency summaries that can lag further, sometimes by hours, and fill in windows retroactively as backlogs drain, so very recent activity may not appear immediately.
These trace tools appear in the tool list, and are callable, only when Mezmo has analyzed trace data from your account within roughly the last 24 hours (the default look-back window). If your account has no recent analyzed trace data, the tools are hidden and do not appear. Mezmo evaluates availability automatically, and there is no feature flag to turn on. If an agent calls one of these tools while it is unavailable, the server responds with a
tool not found error, the same as for an unknown tool.-
get_service_graph: Gets the service graph showing service-to-service calls by operation. Takes no arguments. The graph is built from completed traces, so a missing edge does not prove that the call never happens. -
list_failed_traces: Lists failed traces within a time range, optionally filtered by service. Supports an optionallimit(1 to 500, default100). Only traces with at least one failed span are indexed, so an empty result means no failures, not no traffic. -
get_trace_spans: Gets the spans for a giventrace_id. Obtain thetrace_idfromlist_failed_tracesorget_service_failures(both described in this section). Supports optionallimit(1 to 500, default250),failed_only(defaultfalse, returns only failing spans), andinclude_attributes(defaultfalse, includes span attributes). -
find_degraded_service_edges: Detects service-call edges with degraded latency by comparing a current period to a baseline period, and surfaces newly appearing edges. Returns edges where the selected percentile metric increased beyond the threshold you set. Use it to spot service-to-service calls that are changing behavior. Parameters:current_from_time(required): Start of the current window, as an RFC3339 timestamp (for example,2023-01-01T00:00:00Z).current_to_time(required): End of the current window, as an RFC3339 timestamp.baseline_from_time(required): Start of the baseline window, as an RFC3339 timestamp.baseline_to_time(required): End of the baseline window, as an RFC3339 timestamp.metric(optional): Percentile to compare. One ofp50,p90,p95, orp99. Defaults top99.threshold(optional): Minimum ratio of current to baseline latency that counts as degraded, so2.0means current latency is at least twice the baseline. Defaults to2.0.limit(optional): Maximum number of edges to return, from 1 to 100. Defaults to20.min_sample_count(optional): Edges with fewer samples are treated as low confidence and suppressed. Defaults to30.include_low_confidence(optional): Include low-confidence rows. Defaults tofalse.
-
list_service_latency_summaries: Fetches bucketed latency summaries for operations between a service and its target. Each result is a timestamped bucket with latency metrics likep50,p95, andp99, plus a mean. -
get_service_failure_rates: Gets service failure rates as a histogram over the window you provide, optionally grouped by service, edge, or operation. -
get_service_failures: Fetches individual service failure records, optionally filtered by service, edge, or operation.
9. Correlated Timeline
get_correlated_timeline_relative_time
Builds a correlated timeline of logs across multiple sources within a relative time range. Groups logs by a source field (like app, host, or any custom field) to help with root cause investigation.
Use cases:
- Investigating incidents across multiple services or hosts
- Understanding the sequence of events leading to a failure
- Correlating errors across apps in a distributed system
get_correlated_timeline_time_range
Same as above, but uses absolute time ranges.
Example:
“Build a timeline of all warnings and errors between 10 AM and 11 AM today, grouped by host”
Key options
- Grouping field: Logs are grouped by
_appby default. You can also group by_host,level, or any custom field - Deduplication mode: Use
templatemode (default) to show one example per unique log pattern, ornonefor raw chronological order - Limits: Control how many logs per source and total timeline events to return
10. AI Investigations
An AI investigation is an AI-generated root-cause and analysis record for your account. Mezmo triggers investigations internally, for example from a Pipeline Node Alert. These two tools read and list existing investigations; they do not create them. Your account needs the appropriate investigation permission to use these tools; this is managed through your account’s roles and permissions.list_ai_investigations
Lists AI-generated investigations for your account.
Parameters:
state(optional): filter by investigation state; one oftriggered,investigating, orcompletedlast_id(optional): pagination cursor; the id of the last investigation from the previous pageupdated_since(optional): an RFC3339 date-time; returns only investigations updated since thenlimit(optional): maximum number of results, from 1 to 1000. Defaults to1000
last_id.
Example:
“List my completed AI investigations from the last day”
“Show me AI investigations that are still investigating”
get_ai_investigation
Gets details for a specific AI investigation by id. A returned investigation includes its state and the AI’s root-cause findings, such as a confidence score and suggested resolution.
Parameters:
investigation_id(required): the id of the investigation to retrieve
Query Syntax
Many MCP tools accept aquery parameter that filters logs. You can combine text search with fielded queries to find specific logs.
Text Search
For basic searches, provide keywords. The query matches any logs containing those terms (case-insensitive, with automatic prefix-matching):timeout matches timeout, timeouts, and timeout_error without needing a wildcard.
Fielded Search
Usefield:value syntax to search specific structured fields:
Common Fields
These fields are available in most log data:Nested Fields
For nested or JSON fields, use dotted paths:Numeric Comparisons
Query numeric fields using comparison operators:Field Existence
Usefield:* to match logs where a specific field is present:
Combining Queries
Combine multiple conditions to narrow your search:Query Protection for Large Log Volumes
Mezmo MCP protects against queries that would process too much data. This keeps performance fast and ensures queries finish quickly.How It Works
When you run a tool that processes logs, Mezmo MCP checks how many entries match your query:- Confirmation prompt: If your query matches a large number of logs, the server asks you to confirm before proceeding. You can narrow your query or confirm to continue.
- Query rejection: If your query matches an extremely large number of logs, the request is rejected. Try narrowing your time range or adding more specific filters.
Affected Tools
These tools have query protection:analyze_logs_for_root_cause_relative_time/analyze_logs_for_root_cause_time_rangededuplicate_logs_relative_time/deduplicate_logs_time_rangeget_correlated_timeline_relative_time/get_correlated_timeline_time_rangeget_log_histogramgroup_logs_by_field
Tips for Working with Large Datasets
If you see a confirmation prompt or rejection:- Narrow your time range. Try “last 1 hour” instead of “last 24 hours”.
- Add filters. Use fielded search to target specific logs (for example,
app,host,level,namespace, orpod). See Query Syntax for the full list. - Confirm when appropriate. If you’ve reviewed the log count and want to proceed, confirm the prompt.
Retention Window Limits
Queries must fall within your account’s retention window. If you query logs outside this window, you’ll receive an error showing the valid time range. For example, querying logs from 6 months ago on a 7-day retention account will fail.Best Practices
- Start broad for root-cause analysis
- If the query is too narrow, our RCA can’t do its thing. Cast a wide net, and if needed, specify app/service/level in subsequent queries.
- Prefer
analyze_logs_for_root_causeordeduplicate_logtools for insights - These tools deduplicate and groups similar logs for better summaries, allowing the results to fit into finite LLM context windows.
- Use relative time ranges
- Prefer values like
last_15_minutes,last_hourwhen supported. - Keep prompts simple; add filters gradually
- Add filters step by step. See Query Syntax for available fields.
- Use
export_logsfor raw data only - For dashboards or offline analysis, use
export_logs; otherwise prefer RCA.
Installation
Requirements
- A Mezmo Service Key (generate one in your Mezmo dashboard under Settings > API Keys; see Mezmo docs for details)
- Node.js ≥ 18 (only needed for clients that use the
mcp-remotebridge) - One of the supported MCP clients below
- Supports remote URL? → configure it with a
urlthat points tohttps://mcp.mezmo.com/mcpand include theAuthorizationheader. - StdIO-only client? → use the
mcp-remotebridge:
Client Configurations
AURA
AURA is Mezmo’s open-source agentic SRE harness. It’s MCP-native, so you can point an AURA agent at the Mezmo MCP server and its tools become available at runtime for root-cause analysis, log queries, and pipeline management. Add a[mcp.servers.mezmo] block to your AURA config (config.toml or a file in your configs/ directory):
incident-response-mezmo.toml example for a full agent that pairs Mezmo with other MCP servers.
Cursor
Cursor natively supports remote MCP servers, so you only need a remote configuration. Install Mezmo MCP Server in Cursor Clicking the Install MCP Server badge opens Cursor and automatically adds themezmo entry to your ~/.cursor/mcp.json with a placeholder for the Service Key. After it’s created, edit the file and replace <SERVICE KEY> with your actual Mezmo service key. Restart Cursor for changes to take effect. The final configuration should look like the example below.
Windsurf
Windsurf also supports remote servers via theserverUrl field.
Trae
VS Code’s Copilot Chat or Visual Studio 2022
Zed
Gemini CLI
Claude Code
Claude Desktop
BoltAI
Windows (CMD)
Augment Code
Add a new MCP and enter:Roo Code
Roo Code supports remote URLs:ZenCoder
Amazon Q Developer CLI
Qodo Gen
JetBrains AI Assistant
Warp
OpenCode
Codex CLI
Add to~/.codex/config.toml:
workspace-write for example, add this:
codex --sandbox workspace-write or set a default mode with:
Troubleshooting
1. npx argument-escaping bug
Some clients pass command-line arguments to npx without quoting spaces. This can split the Authorization header (e.g. Bearer and the token become separate arguments) and cause authentication failures.
Work-around: store the header in an environment variable and pass it without spaces:
2. Lost connection to the Mezmo MCP server
If your client shows an error such as “server disconnected” or stops responding to MCP commands:- Disable or remove the Mezmo MCP entry in your client settings.
- Re-enable (or re-add) the same entry, or simply restart the client.
3. 401/403 authentication errors
- Verify the
Authorizationheader is present and formatted asBearer <SERVICE KEY>. - If using
npx mcp-remote, prefer the environment variable approach to avoid splitting the header. - Regenerate your Service Key in Mezmo and try again if issues persist.
Next Steps
Once your client is configured you can immediately run natural-language commands such asanalyze my logs from the last 30 minutes and determine root cause for any issues that you findlist all my pipelinesshow me details for pipeline <pipeline title>deduplicate error logs from the last 30 minutes for app "my-app-frontend"create a pipeline that ingests from HTTP, drops unnecessary data, and stores the rest in Log Analysistap the source component on <pipeline title> and show me a sample of live events

