Prometheus指标查询服务器
通过标准化的Model Context Protocol接口提供对Prometheus指标和查询的访问,允许AI助手执行PromQL查询并分析指标数据。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"prometheus": {
"args": [
"--directory",
"\u003cfull path to prometheus-mcp-server directory\u003e",
"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"
}
}
}
}
该服务需要配置环境变量:PROMETHEUS_PASSWORD、PROMETHEUS_TOKEN、PROMETHEUS_URL、PROMETHEUS_USERNAME
服务介绍
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