# Prometheus指标查询服务器
## 基本信息
- Slug: `pab1it0-prometheus-mcp-server`
- Source: modelscope
- Publisher: @pab1it0/prometheus-mcp-server
- Categories: monitoring / developer-tools
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@pab1it0/prometheus-mcp-server
## 简介
通过标准化的Model Context Protocol接口提供对Prometheus指标和查询的访问，允许AI助手执行PromQL查询并分析指标数据。
## 安装提示

```bash
3. 将服务器配置添加到您的客户端配置文件中。例如，对于 Claude Desktop： ```json { "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" } } } }
```

## MCP Server 详情

# Prometheus MCP 服务器

一个用于 Prometheus 的 [Model Context Protocol](https://modelcontextprotocol.io) (MCP) 服务器。

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

## 特性

- [x] 对 Prometheus 执行 PromQL 查询
- [x] 发现和探索指标
  - [x] 列出可用指标
  - [x] 获取特定指标的元数据
  - [x] 查看即时查询结果
  - [x] 以不同的步长间隔查看范围查询结果
- [x] 认证支持
  - [x] 从环境变量中获取基本认证
  - [x] 从环境变量中获取 Bearer token 认证
- [x] Docker 容器化支持

- [x] 为 AI 助手提供交互式工具

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

## 使用方法

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

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

```env
# 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
```


3. 将服务器配置添加到您的客户端配置文件中。例如，对于 Claude Desktop：

```json
{
  "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 镜像：

```bash
docker build -t prometheus-mcp-server .
```


### 使用 Docker 运行

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

#### 直接使用 docker run：

```bash
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` 文件，然后运行：

```bash
docker-compose up
```


### 在 Claude Desktop 中使用 Docker 运行

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

```json
{
  "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`](https://github.com/astral-sh/uv) 来管理依赖项。请根据您的平台按照说明安装 `uv`：

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

你可以通过以下命令创建一个虚拟环境并安装依赖项：

```bash
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 运行测试：

```bash
# 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

---

