loading…
Search for a command to run...
loading…
MCP server for Prometheus metrics and observability. Give Claude (or any MCP-capable agent) read access to your Prometheus instance — query metrics with PromQL,
MCP server for Prometheus metrics and observability. Give Claude (or any MCP-capable agent) read access to your Prometheus instance — query metrics with PromQL, inspect active alerts, and explore scrape targets without leaving the conversation. Tools: prometheus_list_metrics, prometheus_query, prometheus_query_range, prometheus_list_alerts, prometheus_list_targets.
PyPI version Python versions License: MIT Tests
MCP server for Prometheus metrics and observability. Give Claude (or any MCP-capable agent) read access to your Prometheus instance — query metrics with PromQL, inspect active alerts, and explore scrape targets — without leaving the conversation.
The existing Prometheus integrations require custom scripts or direct API knowledge. This server:
readOnlyHint: true — zero risk of modifying Prometheus data.structuredContent) for programmatic use + Markdown (content) for human-readable display.| Tool | Endpoint | Description |
|---|---|---|
prometheus_list_metrics |
GET /api/v1/label/__name__/values |
List all metric names with optional substring filter (cap 500) |
prometheus_query |
GET /api/v1/query |
Execute an instant PromQL query |
prometheus_query_range |
GET /api/v1/query_range |
Execute a PromQL range query returning time-series |
prometheus_list_alerts |
GET /api/v1/alerts |
List active and pending alerts |
prometheus_list_targets |
GET /api/v1/targets |
List scrape targets by health and job |
pip install prometheus-mcp
Or run directly without installing:
uvx prometheus-mcp
All configuration is via environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
PROMETHEUS_URL |
Yes | — | Prometheus server URL, e.g. https://prometheus.example.com (no trailing slash) |
PROMETHEUS_TOKEN |
No | — | Bearer token (takes precedence over Basic auth) |
PROMETHEUS_USERNAME |
No | — | HTTP Basic auth username |
PROMETHEUS_PASSWORD |
No | — | HTTP Basic auth password |
PROMETHEUS_SSL_VERIFY |
No | true |
Set false for self-signed certificates |
Copy .env.example to .env and fill in your values.
Add to your MCP config (claude_desktop_config.json or .claude/mcp.json):
{
"mcpServers": {
"prometheus": {
"command": "prometheus-mcp",
"env": {
"PROMETHEUS_URL": "https://prometheus.example.com",
"PROMETHEUS_TOKEN": "your-token-here"
}
}
}
}
Or with uvx (no install required):
{
"mcpServers": {
"prometheus": {
"command": "uvx",
"args": ["prometheus-mcp"],
"env": {
"PROMETHEUS_URL": "https://prometheus.example.com"
}
}
}
}
docker run --rm -e PROMETHEUS_URL=https://prometheus.example.com prometheus-mcp
Once configured, ask Claude:
prometheus_list_metricsReturns all metric names Prometheus knows about. Use pattern to filter by substring (case-insensitive). Start here when you don't know which metrics are available. Output is capped at 500 metrics with a truncation hint.
prometheus_queryExecute an instant PromQL expression and get current values. Returns result type (vector/scalar/matrix/string), sample count, and per-sample labels and values.
Parameters:
query (required) — PromQL expression, e.g. up, rate(http_requests_total[5m])time (optional) — RFC3339 or Unix timestamp; defaults to nowprometheus_query_rangeExecute a PromQL expression over a time window. Returns one series per matching time series with timestamped values. Total data points across all series are capped at 5000.
Parameters:
query (required) — PromQL expressionstart / end (required) — RFC3339 or Unix timestampsstep (required) — resolution like 15s, 1m, 5mPrometheus rejects steps that would produce > 11,000 points per series (HTTP 422). Increase step or narrow the range if this happens.
Note: The Prometheus range API does not support filtering by branch or commit — filters are expressed purely in PromQL label matchers.
prometheus_list_alertsReturns all active/pending alerts with labels (including alertname, severity), state, activation time, and current value. Includes a state summary (firing vs pending counts).
prometheus_list_targetsReturns scrape targets with job name, instance address, health (up/down/unknown), last scrape duration in milliseconds, and any error message. Includes a per-job summary. Filter by state: active (default), dropped, or any.
requests.Session with connection pooling.trust_env = False to bypass environment proxies (Prometheus is typically an internal service).prometheus_query_range caps output at 5000 total points across all series — use a larger step for long windows.prometheus_list_metrics returns up to 500 metrics after filtering.git clone https://github.com/mshegolev/prometheus-mcp
cd prometheus-mcp
pip install -e '.[dev]'
pytest tests/ -v
ruff check src tests
ruff format src tests
MIT — see LICENSE.
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"mshegolev-prometheus-mcp": {
"command": "npx",
"args": []
}
}
}