Back to MCP Servers

Pmcp

A Prometheus Model Context Protocol Server.

monitoring
By yshngg
45Updated 1 week agoGoApache-2.0

Installation

npx -y pmcp

Configuration

{
  "mcpServers": {
    "pmcp": {
      "command": "npx",
      "args": ["-y", "pmcp"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes

Prometheus MCP Server

codecov

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

FlagDefaultDescription
-prom-addrhttp://localhost:9090Prometheus server URL
-mcp-addrlocalhost:8080MCP server listen address
-transportstdiostdio or http
-auth-token``Bearer token for MCP endpoint authentication (optional)
-versionPrint 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@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"
      ]
    }
  }
}

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:

URIDescription
prom:///configCurrently loaded configuration (YAML)
prom:///flagsCommand-line flag values
prom:///runtime-infoRuntime information
prom:///build-infoBuild information
prom:///tsdb-statsTSDB cardinality statistics
prom:///wal-replay-statsWAL replay state

Resource Templates

URI templates for dynamic data access:

TemplateDescription
prom:///api/v1/query?query={promql}Instant PromQL query result
prom:///api/v1/label/{name}/valuesLabel values for a given label name

Prompts

NameArgumentsDescription
all-available-metricsprefix (optional)Lists all metric names in the Prometheus instance

License

Apache License 2.0

View source on GitHub