Prometheus MCP Server

A Go-based MCP server that exposes Prometheus query capabilities via the Model Context Protocol.
Installation
go install github.com/yshngg/prometheus-mcp-server@latest
Or pull the Docker image:
docker pull ghcr.io/yshngg/prometheus-mcp-server:latest
Usage
prometheus-mcp-server --prom-addr="http://localhost:9090"
Flags
| 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 |
Environment Variables
All flags can be set via environment variables: PROM_ADDR, MCP_ADDR, TRANSPORT, AUTH_TOKEN.
MCP Client Configuration
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@latestor pull the Docker image withdocker 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"
]
}
}
}
Client-specific configuration
<details> <summary>Claude Desktop</summary>
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"
]
}
}
}
</details>
<details> <summary>OpenCode</summary>
Add to opencode.json (<a href="https://opencode.ai/docs/mcp-servers">guide</a>):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"prometheus": {
"type": "local",
"command": [
"prometheus-mcp-server",
"--prom-addr",
"http://localhost:9090"
]
}
}
}
</details>
<details> <summary>HTTP Transport</summary>
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=http
Your client must then include Authorization: Bearer my-token in requests to /mcp.
</details>
Tools
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
Resources
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 |
Resource Templates
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 |
Prompts
| Name | Arguments | Description | | ----------------------- | ------------------- | ------------------------------------------------- | | all-available-metrics | prefix (optional) | Lists all metric names in the Prometheus instance |
License
Apache License 2.0











