Prometheus MCP Server

by pab1it0

492 stars
778 downloads
Not rated
GitHub

About

A Model Context Protocol (MCP) server that enables AI agents and LLMs to query and analyze Prometheus metrics through standardized interfaces.

Details

Author
pab1it0
GitHub stars
492
Downloads
778
Categories
Cloud Service, Infrastructure, Other, Developer Tools, AI

- Execute instant and range PromQL queries against Prometheus
- Discover and explore metrics with pagination and filtering
- Get metadata for metrics and search by name or description
- View scrape target information
- Support for basic auth, bearer token, and mutual TLS authentication
- Configurable transport modes (stdio, HTTP, SSE)

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Prometheus MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install and run the server via Docker, or deploy to Kubernetes using the provided Helm chart. Configure it by setting the PROMETHEUS_URL environment variable to point to your Prometheus server, plus optional authentication and transport variables. Add the server to your MCP client’s configuration (for example, Claude Desktop or VS Code) using the Docker command shown in the README.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "prometheus mcp server": {
            "prometheus-mcp-server": {
                "command": "docker",
                "args": [
                    "run",
                    "-i",
                    "--rm",
                    "\\"
                ]
            }
        }
    }
}

McpServers

{
    "prometheus-mcp-server": {
        "command": "docker",
        "args": [
            "run",
            "-i",
            "--rm",
            "\\"
        ]
    }
}
# Prometheus MCP Server [![GitHub Container Registry](https://img.shields.io/badge/ghcr.io-pab1it0%2Fprometheus--mcp--server-blue?logo=docker)](https://github.com/users/pab1it0/packages/container/package/prometheus-mcp-server) [![Helm Chart](https://img.shields.io/badge/helm%20chart-ghcr.io-blue?logo=helm)](https://github.com/pab1it0/prometheus-mcp-server/pkgs/container/charts%2Fprometheus-mcp-server) [![GitHub Release](https://img.shields.io/github/v/release/pab1it0/prometheus-mcp-server)](https://github.com/pab1it0/prometheus-mcp-server/releases) [![Codecov](https://codecov.io/gh/pab1it0/prometheus-mcp-server/branch/main/graph/badge.svg)](https://codecov.io/gh/pab1it0/prometheus-mcp-server) ![Python](https://img.shields.io/badge/python-3.10%2B-blue) [![License](https://img.shields.io/github/license/pab1it0/prometheus-mcp-server)](https://github.com/pab1it0/prometheus-mcp-server/blob/main/LICENSE) Give AI assistants the power to query your Prometheus metrics. A [Model Context Protocol][mcp] (MCP) server that provides access to your Prometheus metrics and queries through standardized MCP interfaces, allowing AI assistants to execute PromQL queries and analyze your metrics data. [mcp]: https://modelcontextprotocol.io ## Getting Started ### Prerequisites - Prometheus server accessible from your environment - MCP-compatible client (Claude Desktop, VS Code, Cursor, Windsurf, etc.) ### Installation Methods <details> <summary><b>Claude Desktop</b></summary> Add to your Claude Desktop configuration: ```json { "mcpServers": { "prometheus": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "PROMETHEUS_URL", "ghcr.io/pab1it0/prometheus-mcp-server:latest" ], "env": { "PROMETHEUS_URL": "<your-prometheus-url>" } } } } ``` </details> <details> <summary><b>Claude Code</b></summary> Install via the Claude Code CLI: ```bash claude mcp add prometheus --env PROMETHEUS_URL=http://your-prometheus:9090 -- docker run -i --rm -e PROMETHEUS_URL ghcr.io/pab1it0/prometheus-mcp-server:latest ``` </details> <details> <summary><b>VS Code / Cursor / Windsurf</b></summary> Add to your MCP settings in the respective IDE: ```json { "prometheus": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "PROMETHEUS_URL", "ghcr.io/pab1it0/prometheus-mcp-server:latest" ], "env": { "PROMETHEUS_URL": "<your-prometheus-url>" } } } ``` </details> <details> <summary><b>Docker Desktop</b></summary> The easiest way to run the Prometheus MCP server is through Docker Desktop: <a href="https://hub.docker.com/open-desktop?url=https://open.docker.com/dashboard/mcp/servers/id/prometheus/config?enable=true"> <img src="https://img.shields.io/badge/+%20Add%20to-Docker%20Desktop-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Add to Docker Desktop" /> </a> 1. **Via MCP Catalog**: Visit the [Prometheus MCP Server on Docker Hub](https://hub.docker.com/mcp/server/prometheus/overview) and click the button above 2. **Via MCP Toolkit**: Use Docker Desktop's MCP Toolkit extension to discover and install the server 3. Configure your connection using environment variables (see Configuration Options below) </details> <details> <summary><b>Manual Docker Setup</b></summary> Run directly with Docker: ```bash # With environment variables docker run -i --rm \ -e PROMETHEUS_URL="http://your-prometheus:9090" \ ghcr.io/pab1it0/prometheus-mcp-server:latest # With authentication docker run -i --rm \ -e PROMETHEUS_URL="http://your-prometheus:9090" \ -e PROMETHEUS_USERNAME="admin" \ -e PROMETHEUS_PASSWORD="password" \ ghcr.io/pab1it0/prometheus-mcp-server:latest ``` </details> <details> <summary><b>Helm Chart (Kubernetes)</b></summary> Deploy to Kubernetes using the Helm chart from the OCI registry: ```bash helm install prometheus-mcp-server \ oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \ --version 1.0.0 \ --set prometheus.url="http://prometheus:9090" ``` With authentication: ```bash helm install prometheus-mcp-server \ oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \ --version 1.0.0 \ --set prometheus.url="http://prometheus:9090" \ --set auth.username="admin" \ --set auth.password="secret" ``` With a custom values file: ```bash helm install prometheus-mcp-server \ oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \ --version 1.0.0 \ -f values.yaml ``` See the [chart values](charts/prometheus-mcp-server/values.yaml) for all available configuration options. </details> ### Configuration Options | Variable | Description | Required | |----------|-------------|----------| | `PROMETHEUS_URL` | URL of your Prometheus server | Yes | | `PROMETHEUS_URL_SSL_VERIFY` | Set to False to disable SSL verification | No | | `PROMETHEUS_DISABLE_LINKS` | Set to True to disable Prometheus UI links in query results (saves context tokens) | No | | `PROMETHEUS_REQUEST_TIMEOUT` | Request timeout in seconds to prevent hanging requests (DDoS protection) | No (default: 30) | | `PROMETHEUS_USERNAME` | Username for basic authentication | No | | `PROMETHEUS_PASSWORD` | Password for basic authentication | No | | `PROMETHEUS_TOKEN` | Bearer token for authentication | No | | `PROMETHEUS_CLIENT_CERT` | Path to client certificate file for mutual TLS authentication | No | | `PROMETHEUS_CLIENT_KEY` | Path to client private key file for mutual TLS authentication | No | | `REQUESTS_CA_BUNDLE` | Path to CA bundle file for verifying the server's TLS certificate (standard `requests` library env var) | No | | `ORG_ID` | Organization ID for multi-tenant setups | No | | `PROMETHEUS_MCP_SERVER_TRANSPORT` | Transport mode (stdio, http, sse) | No (default: stdio) | | `PROMETHEUS_MCP_BIND_HOST` | Host for HTTP transport | No (default: 127.0.0.1) | | `PROMETHEUS_MCP_BIND_PORT` | Port for HTTP transport | No (default: 8080) | | `PROMETHEUS_MCP_STATELESS_HTTP` | Enable stateless HTTP mode for multi-replica support | No (default: False) | | `PROMETHEUS_CUSTOM_HEADERS` | Custom headers as JSON string | No | | `TOOL_PREFIX` | Prefix for all tool names (e.g., `staging` results in `staging_execute_query`). Useful for running multiple instances targeting different environments in Cursor | No | ## Available Tools | Tool | Category | Description | | --- | --- | --- | | `health_check` | System | Health check endpoint for container monitoring and status verification | | `execute_query` | Query | Execute a PromQL instant query against Prometheus | | `execute_range_query` | Query | Execute a PromQL range query with start time, end time, and step interval | | `list_metrics` | Discovery | List all available metrics in Prometheus with pagination and filtering support | | `get_metric_metadata` | Discovery | Get metadata for one metric or bulk metadata with optional filtering | | `get_targets` | Discovery | Get information about all scrape targets | The list of tools is configurable, so you can choose which tools you want to make available to the MCP client. This is useful if you don't use certain functionality or if you don't want to take up too much of the context window. ## Features - Execute PromQL queries against Prometheus - Discover and explore metrics - List available metrics - Get metadata for specific metrics - Search metric metadata by name or description in a single call - View instant query results - View range query results with different step intervals - Authentication support - Basic auth from environment variables - Bearer token auth from environment variables - Docker containerization support - Provide interactive tools for AI assistants ## Development Contributions are welcome! Please see our [Contributing Guide](CONTRIBUTING.md) for detailed information on how to get started, coding standards, and the pull request process. This project uses [`uv`](https://github.com/astral-sh/uv) to manage dependencies. Install `uv` following the instructions for your platform: ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` You can then create a virtual environment and install the dependencies with: ```bash uv venv source .venv/bin/activate # On Unix/macOS .venv\Scripts\activate # On Windows uv pip install -e . ``` ### Testing The project includes a comprehensive test suite that ensures functionality and helps prevent regressions. Run the tests with pytest: ```bash # Install development dependencies uv pip install -e ".[dev]" # Run the tests pytest # Run with coverage report pytest --cov=src --cov-report=term-missing ``` When adding new features, please also add corresponding tests. ## License MIT ---
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.