通过标准化的Model Context Protocol接口提供对Prometheus指标和查询的访问,允许AI助手执行PromQL查询并分析指标数据。
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 客户端提供的工具。 如果您不使用某些功能,或者不想占用太多上下文窗口,这是非常有用的。
使用方法
-
确保您的 Prometheus 服务器可以从运行此 MCP 服务器的环境中访问。
-
通过
.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
- 将服务器配置添加到您的客户端配置文件中。例如,对于 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'}}}}]
来源
- 来源:github
- 链接:https://github.com/pab1it0/prometheus-mcp-server