A Go-based MCP server that exposes Prometheus query capabilities via the Model Context Protocol.
go install github.com/yshngg/prometheus-mcp-server@latestOr pull the Docker image:
docker pull ghcr.io/yshngg/prometheus-mcp-server:latestprometheus-mcp-server --prom-addr="http://localhost:9090"| Flag | Default | Description |
|---|---|---|
-prom-addr |
http://localhost:9090 |
Prometheus server URL |
-mcp-addr |
localhost:8080 |
MCP server listen address |
-transport |
stdio |
stdio or http |
-auth-token |
`` | Bearer token for MCP endpoint authentication (optional) |
-version |
Print version |
All flags can be set via environment variables: PROM_ADDR, MCP_ADDR, TRANSPORT, AUTH_TOKEN.
Add the following config to your MCP client:
{
"mcpServers": {
"prometheus": {
"command": "prometheus-mcp-server",
"args": ["--prom-addr", "http://localhost:9090"]
}
}
}Note
Install the binary via go install github.com/yshngg/prometheus-mcp-server@latest or pull the Docker image with docker pull ghcr.io/yshngg/prometheus-mcp-server:latest.
If you don't have the binary installed, use Docker:
{
"mcpServers": {
"prometheus": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/yshngg/prometheus-mcp-server:latest",
"--prom-addr",
"http://host.docker.internal:9090"
]
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"prometheus": {
"command": "prometheus-mcp-server",
"args": ["--prom-addr", "http://localhost:9090"]
}
}
}With Docker:
{
"mcpServers": {
"prometheus": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/yshngg/prometheus-mcp-server:latest",
"--prom-addr",
"http://host.docker.internal:9090"
]
}
}
}OpenCode
Add to opencode.json (guide):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"prometheus": {
"type": "local",
"command": [
"prometheus-mcp-server",
"--prom-addr",
"http://localhost:9090"
]
}
}
}HTTP Transport
Run the server with HTTP transport:
prometheus-mcp-server --transport=http --mcp-addr="localhost:8080"Then configure your client to use http://localhost:8080/mcp.
For authenticated access, set AUTH_TOKEN:
AUTH_TOKEN=my-token prometheus-mcp-server --transport=httpYour client must then include Authorization: Bearer my-token in requests to /mcp.
Expression: instant_query, range_query
Metadata: find_series_by_labels, list_label_names, list_label_values, target_metadata_query, metric_metadata_query
Discovery: target_discovery, alert_query, rule_query, alertmanager_discovery
TSDB Admin: tsdb_snapshot, delete_series, clean_tombstones
Management: health_check, readiness_check, reload, quit
The server exposes Prometheus data as URI-addressable resources under the prom:/// scheme:
| URI | Description |
|---|---|
prom:///config |
Currently loaded configuration (YAML) |
prom:///flags |
Command-line flag values |
prom:///runtime-info |
Runtime information |
prom:///build-info |
Build information |
prom:///tsdb-stats |
TSDB cardinality statistics |
prom:///wal-replay-stats |
WAL replay state |
URI templates for dynamic data access:
| Template | Description |
|---|---|
prom:///api/v1/query?query={promql} |
Instant PromQL query result |
prom:///api/v1/label/{name}/values |
Label values for a given label name |
| Name | Arguments | Description |
|---|---|---|
all-available-metrics |
prefix (optional) |
Lists all metric names in the Prometheus instance |
Apache License 2.0