这是一个用于 Prometheus 的 模型上下文协议(MCP)服务器。
它提供了通过标准化的 MCP 接口访问您的 Prometheus 指标和查询的功能,允许 AI 助手执行 PromQL 查询并分析您的指标数据。
对 Prometheus 执行 PromQL 查询
发现和探索指标
支持身份验证
支持 Docker 容器化
提供交互式工具给 AI 助手
工具列表是可配置的,您可以选择要提供给 MCP 客户端的工具。如果您不使用某些功能或不想占用太多上下文窗口,这非常有用。
在您的 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>"
}
}
}
}
</details>
<details>
<summary><b>Claude Code</b></summary>
通过 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
</details>
<details>
<summary><b>VS Code / Cursor / Windsurf</b></summary>
在相应的 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>"
}
}
}
</details>
<details>
<summary><b>Docker Desktop</b></summary>
运行 Prometheus MCP 服务器最简单的方法是通过 Docker Desktop:
<a href="https://hub.docker.com/open-desktop?url=https://open.docker.com/dashboard/mcp/servers/id/prometheus/config?enable=true"> <img src="https://img.shields.io/badge/+%20添加到-Docker%20Desktop-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="添加到 Docker Desktop" /> </a>通过 MCP 目录:访问 Docker Hub 上的 Prometheus MCP 服务器,然后点击上方的按钮
通过 MCP 工具包:使用 Docker Desktop 的 MCP 工具包扩展来发现和安装服务器
使用环境变量配置您的连接(参见配置选项部分)
直接使用 Docker 运行:
# 使用环境变量
docker run -i --rm \
-e PROMETHEUS_URL="http://your-prometheus:9090" \
ghcr.io/pab1it0/prometheus-mcp-server:latest
# 使用身份验证
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
</details>
| 变量 | 描述 | 是否必需 |
|---|---|---|
PROMETHEUS_URL | 您的 Prometheus 服务器的 URL | 是 |
PROMETHEUS_URL_SSL_VERIFY | 设置为 False 以禁用 SSL 验证 | 否 |
PROMETHEUS_DISABLE_LINKS | 设置为 True 以禁用查询结果中的 Prometheus UI 链接(节省上下文令牌) | 否 |
PROMETHEUS_USERNAME | 基本认证的用户名 | 否 |
P_OMETHEUS_PASSWORD | 基本认证的密码 | 否 |
PROMETHEUS_TOKEN | 身份验证的 Bearer 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 # 在 Unix/macOS 上
.venv\Scripts\activate # 在 Windows 上
uv pip install -e .
该项目包含一个全面的测试套件,确保功能并帮助防止回归。
使用 pytest 运行测试:
# 安装开发依赖项
uv pip install -e ".[dev]"
# 运行测试
pytest
# 运行带有覆盖率报告的测试
pytest --cov=src --cov-report=term-missing
当添加新功能时,请也添加相应的测试。
| 工具 | 类别 | 描述 |
|---|---|---|
health_check | 系统 | 用于容器监控和状态验证的健康检查端点 |
execute_query | 查询 | 对 Prometheus 执行 PromQL 即时查询 |
execute_range_query | 查询 | 执行具有开始时间、结束时间和步长间隔的 PromQL 范围查询 |
list_metrics | 发现 | 列出 Prometheus 中所有可用的指标,支持分页和过滤 |
get_metric_metadata | 发现 | 获取特定指标的元数据 |
get_targets | 发现 | 获取关于所有抓取目标的信息 |
MIT