Prometheus MCP服务器

一个为Prometheus提供的模型上下文协议(MCP)服务器,允许AI助手执行PromQL查询并分析指标数据。

  • by AlexDr7
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AlexDr7/multi-prometheus-mcp-server

使用说明

普罗米修斯MCP服务器

A. 模型上下文协议 普罗米修斯的MCP服务器。

这通过标准化的MCP接口提供了对Prometheus指标和查询的访问,允许AI助手执行PromQL查询并分析您的指标数据。

特性

  • [x] 对Prometheus执行PromQL查询

  • [x] 发现和探索指标

    • [x] 列出可用指标
    • [x] 获取特定指标的元数据
    • [x] 查看即时查询结果
    • [x] 查看具有不同步长间隔的范围查询结果
  • [x] 身份验证支持

    • [x] 来自环境变量的基本身份验证
    • [x] 来自环境变量的承载令牌身份验证
  • [x] Docker容器化支持

  • [x] 为AI助手提供交互式工具

工具列表是可配置的,因此您可以选择要向MCP客户端提供哪些工具。 如果你不使用某些功能,或者你不想占用太多的上下文窗口,这很有用。

入门指南

先决条件

  • Prometheus服务器可从您的环境访问
  • MCP兼容客户端(Claude Desktop、VS Code、Cursor、Windsurf等)

安装方法

Claude Desktop

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "prometheus": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "PROMETHEUS_URL",
        "ghcr.io/pab1it0/prometheus-mcp-server:latest"
      ],
      "env": {
        "PROMETHEUS_URL": "<your-prometheus-url>"
      }
    }
  }
}
Claude Code

通过Claude Code CLI安装:

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
VS Code / Cursor / Windsurf

在相应的IDE中添加到MCP设置中:

{
  "prometheus": {
    "command": "docker",
    "args": [
      "run",
      "-i",
      "--rm",
      "-e",
      "PROMETHEUS_URL",
      "ghcr.io/pab1it0/prometheus-mcp-server:latest"
    ],
    "env": {
      "PROMETHEUS_URL": "<your-prometheus-url>"
    }
  }
}
Docker Desktop

运行Prometheus MCP服务器的最简单方法是通过Docker Desktop:

  1. 通过MCP目录:访问 Docker Hub上的Prometheus MCP服务器 然后单击上面的按钮

  2. 通过MCP工具包:使用Docker Desktop的MCP Toolkit扩展来发现和安装服务器

  3. 使用环境变量配置您的连接(请参阅下面的配置选项)

Manual Docker Setup

直接使用Docker运行:

# 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

配置选项

变量 描述 必填
PROMETHEUS_URL Prometheus服务器的URL 是
PROMETHEUS_URL_SSL_VERIFY 设置为False以禁用SSL验证 否
PROMETHEUS_DISABLE_LINKS 设置为True可禁用查询结果中的Prometheus UI链接(保存上下文标记) 否
PROMETHEUS_USERNAME 基本身份验证的用户名 否
PROMETHEUS_PASSWORD 基本身份验证密码 否
PROMETHEUS_TOKEN 用于身份验证的承载令牌 否
ORG_ID 多租户设置的组织ID 否
PROMETHEUS_MCP_SERVER_TRANSPORT 传输模式(stdio、http、sse) 否(默认:stdio)
PROMETHEUS_MCP_BIND_HOST HTTP传输主机 否(默认值:127.0.0.1)
PROMETHEUS_MCP_BIND_PORT HTTP传输端口 否(默认值:8080)
PROMETHEUS_CUSTOM_HEADERS 自定义标头为JSON字符串 否

发展

欢迎投稿!请查看我们的 贡献指南 有关如何开始、编码标准和拉取请求过程的详细信息。

此项目使用 uv 管理依赖关系。安装 uv 按照您平台的说明进行操作:

curl -LsSf https://astral.sh/uv/install.sh | sh

然后,您可以创建一个虚拟环境,并使用以下命令安装依赖项:

uv venv
source .venv/bin/activate  # On Unix/macOS
.venv\Scripts\activate     # On Windows
uv pip install -e .

测试

该项目包括一个全面的测试套件,可确保功能并帮助防止回归。

使用pytest运行测试:

# Install development dependencies
uv pip install -e ".[dev]"

# Run the tests
pytest

# Run with coverage report
pytest --cov=src --cov-report=term-missing

添加新功能时,请同时添加相应的测试。

工具

所有工具都支持可选 prometheus_url 参数,允许您根据请求动态指定Prometheus服务器URL,从而在不更改部署配置的情况下查询不同的Prometheus实例。

工具 类别 描述
health_check 系统 用于容器监视和状态验证的健康检查端点。接受可选 prometheus_url 参数。
execute_query 查询 对Prometheus执行PromQL即时查询。接受可选 prometheus_url 参数。
execute_range_query 查询 使用开始时间、结束时间和步长间隔执行PromQL范围查询。接受可选 prometheus_url 参数。
list_metrics 发现 列出Prometheus中所有可用的指标,并支持分页和过滤。接受可选 prometheus_url 参数。
get_metric_metadata 发现 获取特定指标的元数据。接受可选 prometheus_url 参数。
get_targets 发现 获取所有刮擦目标的信息。接受可选 prometheus_url 参数。

动态普罗米修斯URL

您可以为每个请求提供不同的Prometheus URL:

# Query Prometheus server in Atlanta region
execute_query(query="up", prometheus_url="http://sos-proms01-atl01.example.com:9090")

# Query Prometheus server in Bangalore region
execute_query(query="up", prometheus_url="http://sos-proms01-blr01.example.com:9090")

# Use the default configured URL (from PROMETHEUS_URL environment variable)
execute_query(query="up")

这允许单个MCP服务器部署查询多个Prometheus实例,而不会发生工具名称冲突。

许可证

麻省理工学院