uptrace_query_metrics
Retrieve and analyze system metrics like CPU usage and request rates using UQL/PromQL queries with time range filtering and aggregation options.
Instructions
Query metrics using UQL/PromQL-compatible syntax. Use this to retrieve metric values like CPU usage, request rates, etc.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| time_gte | Yes | Start time in ISO format (YYYY-MM-DDTHH:MM:SSZ) | |
| time_lt | Yes | End time in ISO format (YYYY-MM-DDTHH:MM:SSZ) | |
| metrics | Yes | List of metric definitions with aliases (e.g., ['system_cpu_utilization as $cpu']) | |
| query | Yes | List of query expressions (e.g., ['avg($cpu) as cpu_avg']) | |
| group_by | No | Optional list of attributes to group by | |
| limit | No | Maximum number of results (default: 100) |
Implementation Reference
- src/uptrace_mcp/server.py:1018-1056 (handler)The handler logic for 'uptrace_query_metrics' that processes arguments, calls the Uptrace client, and returns formatted text content.
elif name == "uptrace_query_metrics": try: time_gte = parse_datetime(arguments["time_gte"]) time_lt = parse_datetime(arguments["time_lt"]) except (KeyError, ValueError) as e: return [TextContent(type="text", text=f"Error: {str(e)}")] metrics = arguments.get("metrics") query = arguments.get("query") group_by = arguments.get("group_by") limit = arguments.get("limit", 100) logger.info(f"Querying metrics: {metrics}") if group_by: result = client.query_metrics_groups( time_gte=time_gte, time_lt=time_lt, metrics=metrics, query=query, group_by=group_by, limit=limit, ) else: result = client.query_metrics( time_gte=time_gte, time_lt=time_lt, metrics=metrics, query=query, limit=limit ) import json return [ TextContent( type="text", text=f"# Metrics Query Results\n\n```json\n{json.dumps(result, indent=2)}\n```", ) ] else: return [TextContent(type="text", text=f"Unknown tool: {name}")] - src/uptrace_mcp/server.py:352-376 (registration)Tool registration and input schema definition for 'uptrace_query_metrics'.
Tool( name="uptrace_query_metrics", description="Query metrics using UQL/PromQL-compatible syntax. Use this to retrieve metric values like CPU usage, request rates, etc.", inputSchema={ "type": "object", "properties": { "time_gte": { "type": "string", "description": "Start time in ISO format (YYYY-MM-DDTHH:MM:SSZ)", }, "time_lt": { "type": "string", "description": "End time in ISO format (YYYY-MM-DDTHH:MM:SSZ)", }, "metrics": { "type": "array", "items": {"type": "string"}, "description": "List of metric definitions with aliases (e.g., ['system_cpu_utilization as $cpu'])", }, "query": { "type": "array", "items": {"type": "string"}, "description": "List of query expressions (e.g., ['avg($cpu) as cpu_avg'])", }, "group_by": {