项目简介

Prometheus MCP 服务器是一个基于 Model Context Protocol (MCP) 实现的后端应用,专门用于与 Prometheus 监控系统进行交互。它将 Prometheus 的查询和元数据发现功能封装成 MCP 工具,使得大型语言模型 (LLM) 客户端能够通过标准化的 JSON-RPC 协议访问和操作 Prometheus 数据。该服务器支持通过标准输入/输出 (stdio) 或作为命令行工具运行,并提供了便捷的 Docker 部署方式。

主要功能点

  • 即时查询与范围查询: 允许LLM执行Prometheus的即时查询(获取某一时间点的数据)和范围查询(获取一段时间内的数据序列)。
  • 指标发现: 能够列出Prometheus中所有可用的指标名称。
  • 元数据获取: 提供关于特定指标的详细元数据,如类型、帮助信息和单位。
  • 序列选择器: 支持根据一系列标签匹配器获取匹配的时间序列信息。
  • 标签值获取: 能够获取指定标签名称的所有可用标签值。
  • 会话管理与能力声明: 实现MCP协议的会话初始化和服务器能力声明。
  • Prometheus指标导出: 可选地暴露内部度量指标,以便Prometheus自身监控此MCP服务器的运行状态。

安装步骤

  • 通过Cargo安装 (需要Rust环境):
    1. 确保您的系统安装了 Rust。
    2. 打开终端,运行 'cargo install prometheus-mcp'。
    3. 安装完成后,您可以通过 'prometheus-mcp --help' 检查安装是否成功。
  • 使用预编译二进制文件:
    1. 访问项目的 GitHub Releases 页面下载适合您操作系统和架构的最新版本二进制文件。
    2. 解压文件,将可执行文件(例如 'prometheus-mcp')放置到系统 PATH 环境变量中的任意目录,或直接运行。
  • 使用Docker (推荐):
    1. 确保您的系统安装了 Docker。
    2. 从 Docker Hub 或 GHCR 拉取镜像: 'docker pull brenoepics/prometheus-mcp:latest'
    3. 运行服务器: 'docker run --rm -it brenoepics/prometheus-mcp:latest --mcp --prometheus-url http://host.docker.internal:9090' (注意:'http://host.docker.internal:9090' 用于 Docker 容器访问宿主机上的 Prometheus,Linux 用户可能需要使用 '--network host' 或 '--add-host=host.docker.internal:host-gateway' 参数)。

服务器配置

MCP客户端(如Claude Desktop)需要通过以下JSON配置连接此服务器。您需要将 'command' 指定为 'prometheus-mcp' 可执行文件的路径或 Docker 命令,并传递必要的参数。

  • 基本配置(通过Docker):

    {
      "mcpServers": {
        "prometheus": {
          "command": "docker",
          "args": [
            "run", "--rm", "-i", "brenoepics/prometheus-mcp:latest",
            "--mcp",
            "--prometheus-url", "http://host.docker.internal:9090" // 替换为您的Prometheus服务器地址
          ]
        }
      }
    }
  • 包含基本认证及内部指标暴露的配置(通过Docker):

    {
      "mcpServers": {
        "prometheus": {
          "command": "docker",
          "args": [
            "run", "--rm", "-i",
            "-p", "9091:9091", // 将容器端口9091映射到宿主机9091,用于访问metrics
            "-e", "PROMETHEUS_USERNAME=api", // 替换为您的Prometheus用户名
            "-e", "PROMETHEUS_PASSWORD=secret", // 替换为您的Prometheus密码
            "brenoepics/prometheus-mcp:latest",
            "--mcp",
            "--prometheus-url", "https://prom.example.com", // 替换为您的Prometheus服务器地址
            "--metrics-exporter", // 启用内部metrics导出
            "--metrics-port", "9091" // 指定metrics端口
          ]
        }
      }
    }
  • 配置参数说明:

    • '--mcp': 启动MCP服务器模式(必须)。
    • '--prometheus-url <URL>': 指定Prometheus服务器的URL地址,例如 'http://localhost:9090'。也可以通过环境变量 'PROMETHEUS_URL' 设置。
    • '--prometheus-username <USERNAME>': Prometheus基本认证的用户名。也可以通过环境变量 'PROMETHEUS_USERNAME' 设置。
    • '--prometheus-password <PASSWORD>': Prometheus基本认证的密码。也可以通过环境变量 'PROMETHEUS_PASSWORD' 设置。
    • '--metrics-exporter': 启用服务器的内部性能指标导出功能,可通过 '/metrics' 路径访问。
    • '--metrics-port <PORT>': 当 '--metrics-exporter' 启用时,指定指标导出的端口,默认为 '9091'。

基本使用方法 (作为MCP服务器)

  1. 按照上述“安装步骤”启动 'prometheus-mcp' 服务器(例如,使用 Docker 命令)。
  2. 在您的 MCP 客户端(如 Claude Desktop)中配置好服务器的启动命令。
  3. LLM 客户端即可通过调用 'prometheus_query'、'prometheus_list_metrics' 等工具来获取 Prometheus 监控数据。例如,LLM可能会自动生成并调用:
    • 'prometheus_query({"query": "up"})'
    • 'prometheus_list_metrics({})'
    • 'prometheus_get_metadata({"metric": "node_cpu_seconds_total"})'

信息

分类

开发者工具