P

Prometheus指标查询服务器

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

monitoringdeveloper-tools

1.2k 查看 · 2026-07-07 更新

简介

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

简介

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

Prometheus MCP 服务器

一个用于 Prometheus 的 Model Context Protocol (MCP) 服务器。

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

特性

  • 对 Prometheus 执行 PromQL 查询

  • 发现和探索指标

    • 列出可用指标
    • 获取特定指标的元数据
    • 查看即时查询结果
    • 以不同的步长间隔查看范围查询结果
  • 认证支持

    • 从环境变量中获取基本认证
    • 从环境变量中获取 Bearer token 认证
  • Docker 容器化支持

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

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

使用方法

  1. 确保您的 Prometheus 服务器可以从运行此 MCP 服务器的环境中访问。

  2. 通过 .env 文件或系统环境变量配置您的 Prometheus 服务器的环境变量:

# Required: Prometheus configuration PROMETHEUS_URL=http://your-prometheus-server:9090 # Optional: Authentication credentials (if needed) # Choose one of the following authentication methods if required: # For basic auth PROMETHEUS_USERNAME=your_username PROMETHEUS_PASSWORD=your_password # For bearer token auth PROMETHEUS_TOKEN=your_token
  1. 将服务器配置添加到您的客户端配置文件中。例如,对于 Claude Desktop:
{ "mcpServers": { "prometheus": { "command": "uv", "args": [ "--directory", "<full path to prometheus-mcp-server directory>", "run", "src/prometheus_mcp_server/main.py" ], "env": { "PROMETHEUS_URL": "http://your-prometheus-server:9090", "PROMETHEUS_USERNAME": "your_username", "PROMETHEUS_PASSWORD": "your_password" } } } }

注意:如果在 Claude Desktop 中看到 Error: spawn uv ENOENT,您可能需要指定 uv 的完整路径或在配置中设置环境变量 NO_UV=1

Docker 使用

该项目包括 Docker 支持,以便于部署和隔离。

构建 Docker 镜像

使用以下命令构建 Docker 镜像:

docker build -t prometheus-mcp-server .

使用 Docker 运行

您可以使用几种方式通过 Docker 运行服务器:

直接使用 docker run:

docker run -it --rm \ -e PROMETHEUS_URL=http://your-prometheus-server:9090 \ -e PROMETHEUS_USERNAME=your_username \ -e PROMETHEUS_PASSWORD=your_password \ prometheus-mcp-server

使用 docker-compose:

创建一个包含您的 Prometheus 凭据的 .env 文件,然后运行:

docker-compose up

在 Claude Desktop 中使用 Docker 运行

要使用容器化的服务器与 Claude Desktop,更新配置以使用带有环境变量的 Docker:

{ "mcpServers": { "prometheus": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "PROMETHEUS_URL", "-e", "PROMETHEUS_USERNAME", "-e", "PROMETHEUS_PASSWORD", "prometheus-mcp-server" ], "env": { "PROMETHEUS_URL": "http://your-prometheus-server:9090", "PROMETHEUS_USERNAME": "your_username", "PROMETHEUS_PASSWORD": "your_password" } } } }

此配置通过仅使用变量名 -e 标志并将实际值放在 env 对象中,将环境变量从 Claude Desktop 传递给 Docker 容器。

关于 Docker 实现的注意事项:Docker 设置已更新,以匹配 chess-mcp 项目的结构,该结构已被证明可以与 Claude 正确工作。新的实现使用多阶段构建过程,并直接运行入口点脚本而无需中介 shell 脚本。这种方法确保了 MCP 通信中的 stdin/stdout 的正确处理。

开发

欢迎贡献!如果您有任何建议或改进,请打开一个问题或提交一个拉取请求。

该项目使用 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 .

项目结构

该项目采用了 src 目录结构进行组织:

prometheus-mcp-server/ ├── src/ │ └── prometheus_mcp_server/ │ ├── __init__.py # Package initialization │ ├── server.py # MCP server implementation │ ├── main.py # Main application logic ├── Dockerfile # Docker configuration ├── docker-compose.yml # Docker Compose configuration ├── .dockerignore # Docker ignore file ├── pyproject.toml # Project configuration └── README.md # This file

测试

该项目包含了一个全面的测试套件,确保功能正常并有助于防止回归。

使用 pytest 运行测试:

# Install development dependencies uv pip install -e ".[dev]" # Run the tests pytest # Run with coverage report pytest --cov=src --cov-report=term-missing

测试被分为以下几类:

  • 配置验证测试
  • 服务器功能测试
  • 错误处理测试
  • 主应用程序测试

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

工具

工具类别描述
execute_query查询对 Prometheus 执行 PromQL 即时查询
execute_range_query查询使用开始时间、结束时间和步长间隔对 Prometheus 执行 PromQL 范围查询
list_metrics发现列出 Prometheus 中所有可用的指标
get_metric_metadata发现获取特定指标的元数据
get_targets发现获取所有抓取目标的信息

许可证

MIT


服务配置

[{'mcpServers': {'prometheus': {'args': ['--directory', '<full path to prometheus-mcp-server directory>', 'run', 'src/prometheus_mcp_server/main.py'], 'command': 'uv', 'env': {'PROMETHEUS_PASSWORD': 'your_password', 'PROMETHEUS_URL': 'http://your-prometheus-server:9090', 'PROMETHEUS_USERNAME': 'your_username'}}}}]

来源