Prometheus模型上下文协议服务器

一个生产级的Prometheus模型上下文协议(MCP)服务器,支持AI代理查询指标、分析警报和执行SRE操作。

  • by bcfmtolgahan
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 bcfmtolgahan/prometheus-mcp-server

使用说明

普罗米修斯MCP服务器

A生产级 模型上下文协议(MCP)服务器 对于Prometheus,使AI代理能够查询指标、分析警报和执行SRE操作。

特性

  • 38 MCP工具:完整的Prometheus API覆盖范围以及智能分析工具
  • SRE黄金信号:用于错误率、延迟、吞吐量和饱和度的内置工具
  • 智能分析:异常检测、容量预测、度量相关性
  • PromQL助手:查询验证、解释、建议和优化
  • 警报管理器集成:管理警报和静音
  • 多个传输:stdio(克劳德桌面)、HTTP/SSE(Kubernetes、AWS)
  • 生产就绪:重试、连接池、超时、TLS支持
  • Kubernetes原生:Helm chart、Terraform模块、HPA、PDB

快速开始

安装

pip install prometheus-mcp-server

使用Claude Desktop运行

添加到您的Claude Desktop配置(~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "prometheus": {
      "command": "prometheus-mcp-server",
      "args": ["--url", "http://localhost:9090"]
    }
  }
}

作为HTTP服务器运行

# Run with HTTP transport for Kubernetes/AWS deployment
prometheus-mcp-server --transport http --port 8000

# With Prometheus URL
export PROMETHEUS_MCP_URL=http://prometheus:9090
prometheus-mcp-server --transport http

码头工人

docker run -p 8000:8000 \
  -e PROMETHEUS_MCP_URL=http://prometheus:9090 \
  ghcr.io/bcfmtolgahan/prometheus-mcp-server:latest

可用工具(共38个)

核心查询工具(3)

工具 说明
prometheus_query 执行即时PromQL查询
prometheus_query_range 在一段时间内执行范围PromQL查询
prometheus_query_exemplars 用于跟踪相关性的查询示例

警报和规则工具(2)

工具 说明
prometheus_get_alerts 获取活动警报(触发/待定)
prometheus_get_rules 获取警报和记录规则

目标工具(2)

工具 说明
prometheus_get_targets 获取刮刮目标和健康状态
prometheus_get_target_metadata 获取目标指标的元数据

元数据工具(5)

工具 说明
prometheus_get_metric_names 列出所有度量名称
prometheus_get_label_names 获取所有标签名称
prometheus_get_label_values 获取特定标签的值
prometheus_get_metric_metadata 获取度量类型、帮助、单位
prometheus_find_series 查找时间序列匹配选择器

状态和健康工具(3)

工具 说明
prometheus_health_check 检查普罗米修斯的健康状况和准备情况
prometheus_get_status 获取服务器状态(配置、标志、运行时、TSDB)
prometheus_get_alertmanagers 获取已发现的Alertmanager实例

SRE黄金信号工具(6)

工具 说明
prometheus_get_error_rate 计算错误率百分比
prometheus_get_latency_percentiles 获取p50、p90、p99延迟
prometheus_get_throughput 计算每秒请求数
prometheus_get_saturation 获取CPU/内存/磁盘饱和
prometheus_calculate_sli 计算SLI并与SLO进行比较
prometheus_check_error_budget 检查错误预算消耗

分析工具(5)

工具 说明
prometheus_analyze_service 综合服务健康分析
prometheus_find_anomalies 统计异常检测
prometheus_compare_periods 比较时间段之间的指标
prometheus_capacity_forecast 预测未来的容量需求
prometheus_find_correlations 查找指标之间的相关性

PromQL帮助工具(4)

工具 说明
prometheus_validate_query 验证PromQL语法
prometheus_explain_query 解释查询的作用
prometheus_suggest_query 获取用例的查询建议
prometheus_optimize_query 获取查询优化提示

警报管理器工具(4)

工具 说明
alertmanager_get_alerts 从Alertmanager获取警报
alertmanager_get_silences 列出所有沉默
alertmanager_create_silence 创造新的沉默
alertmanager_delete_silence 删除现有静默

危险/管理工具(4)

工具 说明
prometheus_delete_series 删除时间序列数据
prometheus_clean_tombstones 从磁盘中清除已删除的数据
prometheus_create_snapshot 创建TSDB快照
prometheus_reload_config 重新加载Prometheus配置

备注:默认情况下禁用危险工具。启用 --enable-dangerous-tools 旗帜。

配置

环境变量

# Prometheus Connection
PROMETHEUS_MCP_URL=http://localhost:9090

# Transport
PROMETHEUS_MCP_TRANSPORT=stdio  # stdio, http, sse
PROMETHEUS_MCP_HOST=0.0.0.0
PROMETHEUS_MCP_PORT=8000

# Authentication
PROMETHEUS_MCP_AUTH_TYPE=none  # none, basic, bearer
PROMETHEUS_MCP_AUTH_USERNAME=admin
PROMETHEUS_MCP_AUTH_PASSWORD=secret

# Features
PROMETHEUS_MCP_ENABLE_DANGEROUS_TOOLS=false

# Logging
PROMETHEUS_MCP_LOG_LEVEL=INFO
PROMETHEUS_MCP_LOG_FORMAT=json

CLI选项

prometheus-mcp-server --help

Options:
  --url TEXT                    Prometheus server URL
  --transport [stdio|http|sse]  Transport type
  --host TEXT                   Host for HTTP transport
  --port INTEGER                Port for HTTP transport
  --enable-dangerous-tools      Enable dangerous admin tools
  --log-level TEXT              Log level

Kubernetes部署

使用Helm

helm install prometheus-mcp ./deploy/helm/prometheus-mcp-server \
  --set prometheus.url=http://prometheus-server:9090 \
  --set replicaCount=2

使用地形

module "prometheus_mcp_server" {
  source = "./modules/prometheus-mcp-server"

  prometheus_url = "http://prometheus:9090"
  namespace      = "mcp-servers"
  replica_count  = 2
}

示例用法

使用克劳德桌面

问克劳德:

  • “目前正在发出哪些警报?”
  • “显示过去一小时的CPU使用情况”
  • “api网关服务的错误率是多少?”
  • “查找内存使用中的异常情况”
  • “计算我们结账服务的SLI”

编程式用法

# Query current cluster health
result = await prometheus_query(query="up")

# Check error rate for a service
error_rate = await prometheus_get_error_rate(job="api-gateway", window="5m")

# Analyze service health
analysis = await prometheus_analyze_service(job="checkout-service")

# Get latency percentiles
latencies = await prometheus_get_latency_percentiles(job="api-gateway")

# Find anomalies
anomalies = await prometheus_find_anomalies(
    query="rate(http_requests_total[5m])",
    threshold_stddev=2.0
)

# Create a silence for maintenance
silence = await alertmanager_create_silence(
    matchers="alertname=HighCPU,job=batch-processor",
    duration="2h",
    comment="Scheduled maintenance"
)

建筑

┌─────────────────────────────────────────────────────────┐
│                    MCP Client                           │
│              (Claude Desktop, AI Agent)                 │
└────────────────────────┬────────────────────────────────┘
                         │ MCP Protocol (stdio/HTTP)
                         ▼
┌─────────────────────────────────────────────────────────┐
│              Prometheus MCP Server                      │
│  ┌──────────────────────────────────────────────────┐   │
│  │              38 MCP Tools                        │   │
│  │  • Query & Metadata    • SRE Golden Signals      │   │
│  │  • Alerts & Rules      • Analysis Tools          │   │
│  │  • PromQL Helpers      • Alertmanager            │   │
│  └──────────────────────┬───────────────────────────┘   │
│                         │                               │
│  ┌──────────────────────▼───────────────────────────┐   │
│  │              Prometheus Client                   │   │
│  │    • Connection pooling  • Retry logic           │   │
│  │    • Authentication      • TLS support           │   │
│  └──────────────────────┬───────────────────────────┘   │
└─────────────────────────┼───────────────────────────────┘
                          │ HTTP/HTTPS
                          ▼
┌─────────────────────────────────────────────────────────┐
│           Prometheus / Alertmanager                     │
└─────────────────────────────────────────────────────────┘

发展

设置

git clone https://github.com/bcfmtolgahan/prometheus-mcp-server.git
cd prometheus-mcp-server

python -m venv .venv
source .venv/bin/activate

pip install -e ".[dev]"

运行测试

pytest                           # All tests
pytest --cov                     # With coverage
pytest tests/unit/               # Unit tests only
pytest tests/integration/        # Integration tests

代码质量

ruff check .                     # Linting
ruff format .                    # Formatting
mypy src/                        # Type checking

贡献

欢迎投稿!请阅读我们的 贡献指南.

  1. 克隆该仓库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

致谢