k8s-telemetry-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_LOKI_URL | No | Loki endpoint | |
| MCP_LOG_LEVEL | No | Log level | INFO |
| MCP_TEMPO_URL | No | Tempo endpoint | |
| MCP_AWS_REGION | No | AWS region for CloudTrail/Config/ECR/RDS tools | us-east-1 |
| MCP_MAX_LOG_LINES | No | Max log lines per query | 500 |
| MCP_PROMETHEUS_URL | No | Prometheus endpoint | |
| MCP_DATADOG_API_KEY | No | Datadog API key (overrides Loki/Prometheus) | |
| MCP_ALERTMANAGER_URL | No | Alertmanager endpoint (required for `get_alertmanager_history`) | |
| MCP_ENABLE_SANITIZATION | No | Auto-redact PII and secrets | true |
| MCP_CLOUDWATCH_LOG_GROUP | No | CloudWatch log group (overrides Loki) | |
| MCP_MAX_QUERY_RANGE_HOURS | No | Max query time range | 24 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| query_pod_logsA | Query logs from a Kubernetes pod. Returns sanitized logs with PII/secrets redacted. Args: pod_name: Pod name or regex pattern (e.g. 'payment-service' or 'payment-.*') namespace: Kubernetes namespace container: Container name filter (optional) timeframe_minutes: How many minutes of logs to retrieve (1-1440) limit: Maximum number of log lines (1-500) |
| query_logs_customA | Execute a custom log query (LogQL for Loki, Datadog syntax, or CloudWatch Insights). Args: query: Backend-native query string timeframe_minutes: How many minutes of logs to retrieve (1-1440) limit: Maximum number of log lines (1-500) |
| get_pod_metricsB | Get metrics for a Kubernetes pod (CPU, memory, restarts, network). Args: pod_name: Pod name or regex pattern namespace: Kubernetes namespace metric_type: One of: cpu, memory, restarts, network_rx, network_tx |
| query_prometheusA | Execute a raw PromQL query against Prometheus. Args: query: PromQL expression range_query: Set to true for a time-series range query timeframe_minutes: Time range for range queries (1-1440) step: Step interval for range queries (e.g. '1m', '5m', '1h') |
| get_cluster_healthA | Get overall Kubernetes cluster health: node count, pod status, CPU/memory utilization. |
| get_traceA | Retrieve a distributed trace by ID from Tempo. Args: trace_id: Hexadecimal trace ID (16-32 characters) |
| search_tracesA | Search for distributed traces in Tempo by service, operation, or tags. Args: service_name: Filter by service name operation: Filter by operation name tags: Filter by span tags (key-value pairs) min_duration: Minimum trace duration (e.g. '100ms', '1s') max_duration: Maximum trace duration timeframe_minutes: How far back to search (1-1440) limit: Maximum traces to return (1-100) |
| analyze_logsA | Analyze logs for a service — detects errors, anomalies, and patterns with recommendations. Args: service_name: Service/pod name or regex pattern namespace: Kubernetes namespace timeframe_minutes: How many minutes of logs to analyze (1-1440) limit: Maximum log lines to analyze (1-500) |
| build_incident_timelineA | Build a chronological incident timeline combining logs, metrics, and traces. Args: service_name: Affected service name namespace: Kubernetes namespace timeframe_minutes: Time window to analyze (1-1440) |
| enrich_alertA | Enrich an alert with full context: recent logs, metrics, traces, and recommendations. Args: alert_name: Name of the alert that fired service_name: Affected service name namespace: Kubernetes namespace timeframe_minutes: Context window in minutes (1-60) |
| get_resource_costsA | Get resource cost attribution by namespace with optimization suggestions. Note: Requires Prometheus backend. Cost estimates are approximate. Args: namespace: Filter by namespace (optional — omit for all namespaces) timeframe_minutes: Usage averaging window (1-1440) |
| check_slo_statusA | Check SLO compliance — error budgets, burn rate, and availability vs. latency targets. Args: service_name: Service to check namespace: Kubernetes namespace availability_target: Target availability (0.0-1.0, default 99.9%) latency_target_ms: Target latency in milliseconds latency_percentile: Latency percentile to measure (default p99) window_hours: Measurement window in hours (1-720) |
| query_cloudtrailA | Search AWS CloudTrail events by keyword, event name, username, or resource. Requires cloudtrail:LookupEvents IAM permission. Args: keyword: Search term matched against event name event_name: Exact CloudTrail event name (e.g. 'DeleteDeployment') username: Filter by IAM username or role session name resource_name: Filter by AWS resource name or ID timeframe_minutes: How far back to search (1-1440) limit: Maximum events to return (1-50) |
| get_resource_historyA | Get the full CloudTrail audit trail for a specific AWS resource. Shows who created, modified, and deleted it. Requires cloudtrail:LookupEvents IAM permission. Args: resource_id: AWS resource ID or ARN timeframe_days: How many days back to search (1-90) limit: Maximum events to return (1-50) |
| get_configuration_historyA | Get the configuration-change history for one AWS resource, with field-level diffs. Answers "what actually changed on this resource, and when". CloudTrail records that an API call happened; AWS Config records the resulting state, so this is what tells you a security group's ingress rules went from one value to another. Each change carries a capture time and a config_item_id for citation, plus the resources AWS Config considers related — useful for establishing whether a changed resource is actually connected to a failing one. Requires AWS Config to be enabled and config:GetResourceConfigHistory. Args: resource_type: AWS Config resource type, e.g. 'AWS::EC2::SecurityGroup' resource_id: Resource ID, e.g. 'sg-0123456789abcdef0' timeframe_hours: How far back to look (1-720) limit: Maximum configuration snapshots to retrieve (1-100) |
| get_resource_complianceA | Get AWS Config compliance status for resources. Shows drift and non-compliant rules. Requires AWS Config to be enabled and config:Describe* IAM permissions. Args: resource_id: Specific resource ID (optional — omit for all rules summary) resource_type: AWS resource type e.g. 'AWS::EC2::Instance' (optional) compliance_filter: Filter by COMPLIANT, NON_COMPLIANT, or NOT_APPLICABLE |
| get_image_vulnerabilitiesA | Get vulnerability findings for a container image in ECR. Uses AWS Inspector v2 if enabled, falls back to ECR basic scan. Requires ecr:DescribeImageScanFindings and inspector2:ListFindings IAM permissions. Args: repository_name: ECR repository name image_tag: Image tag to check (default: latest) severity_filter: Severities to include e.g. ['CRITICAL', 'HIGH'] |
| get_database_insightsA | Get database performance insights for RDS or ElastiCache. Args: db_identifier: RDS instance/cluster ID or ElastiCache cluster ID db_type: 'rds' or 'elasticache' timeframe_minutes: Time window to analyze (1-1440) |
| get_k8s_eventsA | Get Kubernetes events for a namespace or pod. Answers 'why is my pod pending/OOMKilled/CrashLoopBackOff?' Requires rbac.enabled=true in Helm values. Args: namespace: Kubernetes namespace pod_name: Filter events for a specific pod (optional) event_type: Filter by 'Warning' or 'Normal' (optional) timeframe_minutes: How far back to look (1-1440) limit: Maximum events to return (1-500) |
| get_scaling_historyA | Get HPA scaling history and current autoscaler status for deployments. Requires kube-state-metrics for historical data. Args: namespace: Kubernetes namespace deployment_name: Filter to a specific deployment (optional) timeframe_minutes: How far back to look (1-1440) |
| get_node_pressureA | Get Kubernetes node pressure conditions, resource capacity, and eviction status. Identifies nodes with MemoryPressure, DiskPressure, or PIDPressure. |
| get_alertmanager_historyA | Get recent alerts and active silences from Prometheus Alertmanager. Requires MCP_ALERTMANAGER_URL to be configured. Args: service_name: Filter alerts by service name (optional) namespace: Filter alerts by namespace label (optional) timeframe_minutes: How far back to look (1-1440) include_silences: Whether to include active silences (default: true) |
| get_recent_deploymentsA | Get recent Kubernetes deployment changes — what was rolled out in the last N minutes. Useful for correlating deployments with incidents. Args: namespace: Kubernetes namespace timeframe_minutes: How far back to look (1-1440) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/kubeopsai/k8s-telemetry-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server