mshegolev/prometheus-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROMETHEUS_URL | Yes | Prometheus server URL, e.g., https://prometheus.example.com (no trailing slash) | |
| PROMETHEUS_TOKEN | No | Bearer token for authentication (takes precedence over Basic auth) | |
| PROMETHEUS_PASSWORD | No | HTTP Basic auth password | |
| PROMETHEUS_USERNAME | No | HTTP Basic auth username | |
| PROMETHEUS_SSL_VERIFY | No | Set 'false' for self-signed certificates | true |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| prometheus_list_metricsA | List all metric names known to Prometheus, with optional substring filter. Wraps Use this first to discover valid metric names before writing PromQL
expressions for Examples:
- Use when: "What metrics does Prometheus have about HTTP requests?"
→ Returns:
dict with |
| prometheus_queryA | Execute an instant PromQL query against Prometheus. Wraps Examples:
- Use when: "Is the payment service up right now?"
→ Returns:
dict with |
| prometheus_query_rangeA | Execute a PromQL range query returning time-series data points. Wraps Prometheus may reject the query with HTTP 422 (bad_data) if the step produces too many data points (> 11,000 per series). Increase the step or narrow the time range if this happens. Note: The Prometheus API does not support filtering by branch or commit in this endpoint — filters are expressed purely in PromQL label matchers. Examples:
- Use when: "Show me CPU usage over the last hour with 1-minute resolution"
→ Returns:
dict with |
| prometheus_list_alertsA | List all active and pending alerts from Prometheus. Wraps Examples:
- Use when: "Are there any firing alerts right now?"
→ check Returns:
dict with |
| prometheus_list_targetsA | List Prometheus scrape targets, summarised by job and health. Wraps Examples:
- Use when: "Which targets are currently down?"
→ filter Returns:
dict with |
| prometheus_get_metric_metadataA | Get metric metadata (HELP text, TYPE, UNIT) from Prometheus. Wraps Use this to understand what a metric measures, its type (counter, gauge,
histogram, summary), and unit — essential for writing correct PromQL.
For example, knowing a metric is a counter means you should use Examples:
- Use when: "What does http_requests_total measure?"
→ Returns:
dict with |
| prometheus_list_label_valuesA | List all values for a specific label from Prometheus. Wraps Use this to discover what entities exist for a given label dimension — for example, which jobs are running, which instances are scraped, or which namespaces have metrics. This is essential for building targeted PromQL queries during investigation. Examples:
- Use when: "What jobs does Prometheus scrape?"
→ Returns:
dict with |
| prometheus_list_rulesA | List recording and alerting rules from Prometheus. Wraps Use this to understand the alerting configuration, find recording rules that pre-compute useful aggregations, and investigate which rules are currently firing or have health issues. Examples:
- Use when: "What alerting rules are configured?"
→ Returns:
dict with |
| alertmanager_list_silencesA | List all silences from Alertmanager. Wraps Use this to understand which alerts are currently silenced and why.
During incident handoffs, knowing what's silenced is critical — a
silenced alert is invisible in Prometheus Examples:
- Use when: "Is the HighCPU alert silenced?"
→ search silences for matching matchers.
- Use when: "Who silenced alerts for the payment service?"
→ check Returns:
dict with |
| alertmanager_list_alertsA | List alerts from Alertmanager with suppression state. Wraps Unlike Examples:
- Use when: "Why isn't the HighCPU alert firing?"
→ check if it's suppressed (silencedBy or inhibitedBy).
- Use when: "Show all suppressed alerts"
→ filter by Returns:
dict with |
| alertmanager_get_statusA | Get Alertmanager cluster status, version, and config. Wraps Examples:
- Use when: "Is Alertmanager healthy?"
→ check Returns:
dict with |
| alertmanager_list_alert_groupsA | List alert groups from Alertmanager showing routing topology. Wraps Examples:
- Use when: "Why did I get one notification instead of many?"
→ check which alerts are in the same group.
- Use when: "What receiver handles payment alerts?"
→ find the group and check its receiver.
- Don't use when: You want individual alert details
(call Returns:
dict with |
| correlate_alerts_across_instancesA | Correlate alerts across multiple Prometheus instances. Identifies related alerts that fire simultaneously or in sequence across different Prometheus instances using temporal windows and label similarity. Use this to:
Examples: - "Are there related alerts firing across our US and EU clusters?" - "Show me alerts that might be related to this HighCPU alert" Returns: CorrelationResult with correlated alerts, groups, and cascades. |
| group_alerts_by_serviceA | Group alerts by service identifiers across all instances. Clusters related alerts into service-level incident analysis bundles. Use this to:
Examples: - "Which services are currently experiencing alerts?" - "Group all alerts by service for my incident report" Returns: AlertGroupResult with alerts grouped by service identifier. |
| detect_cascading_alertsA | Detect cascading alert patterns with directional dependency inference. Identifies alert propagation patterns that indicate dependency failures. Use this to:
Examples: - "What alerts typically fire after DatabaseConnectionFailed?" - "Show me the failure propagation chain in this incident" Returns: CascadeDetectionResult with detected cascades and root causes. |
| federation_list_instancesA | List all configured Prometheus and Alertmanager instances with health status |
| prometheus_health_checkA | Check Prometheus liveness and readiness. Calls Use this to verify Prometheus is actually running before investigating blank query results. A failed health check means Prometheus is down; a failed readiness check means it's starting up or shutting down. Examples:
- Use when: "Why are all my queries returning empty results?"
→ check if Prometheus is healthy first.
- Use when: Setting up a new MCP connection — verify the target
is reachable and healthy.
- Don't use when: You want metric values (call Returns:
dict with |
| prometheus_get_cardinalityA | Get TSDB statistics and cardinality data from Prometheus. Wraps Use this to investigate cardinality explosions — the #1 operational Prometheus problem. High series counts slow queries and increase memory. Examples:
- Use when: "Why is Prometheus using so much memory?"
→ check Returns:
dict with |
| prometheus_get_runtime_infoA | Get Prometheus runtime information. Wraps Examples:
- Use when: "Why is Prometheus slow?" → check goroutine count
and time series count.
- Use when: "What's the retention policy?" → check Returns:
dict with |
| prometheus_get_build_infoA | Get Prometheus build information. Wraps Examples:
- Use when: "What version of Prometheus is running?" → check Returns:
dict with |
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/mshegolev/prometheus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server