Prometheus MCP服务器

一个用Go编写的Prometheus模型上下文协议(MCP)服务器,使AI助手能够通过标准化的MCP接口查询和分析Prometheus指标。

  • by cgoolsby
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 cgoolsby/prometheus-mcp

使用说明

普罗米修斯MCP服务器

用Go编写的Prometheus模型上下文协议(MCP)服务器。该服务器使AI助手能够通过标准化的MCP接口查询和分析Prometheus指标。

特性

  • 执行PromQL即时查询
  • 在一段时间内执行PromQL范围查询
  • 按标签匹配发现系列
  • 探索标签名称和值
  • 访问度量元数据
  • 获取有关刮擦目标的信息
  • 访问警报和记录规则
  • 获取Prometheus服务器状态信息

安装

先决条件

  • 达到1.20或更高
  • 正在运行的Prometheus实例

从源头构建

# Clone the repository
git clone https://github.com/cgoolsby/prometheus-mcp.git
cd prometheus-mcp

# Build the project
go build -o prometheus-mcp ./cmd/server

# Run the server
./prometheus-mcp

配置

可以使用环境变量配置服务器:

  • PROMETHEUS_HOST:Prometheus实例的基本URL(默认值:http://localhost:9090)

使用AI助手

此MCP服务器可以与支持模型上下文协议的AI助手(如Claude)一起使用。

与Claude Desktop一起使用

  1. 将服务器配置添加到Claude Desktop:
    • 在 macOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "prometheus-mcp-server": {
      "command": "/path/to/prometheus-mcp",
      "env": {
        "PROMETHEUS_HOST": "http://your-prometheus-instance:9090"
      }
    }
  }
}

可用功能

服务器提供以下功能:

  • mcp__instant_query:执行即时PromQL查询
  • mcp__range_query:在一段时间内执行范围PromQL查询
  • mcp__get_series:按标签匹配查找系列
  • mcp__get_label_values:获取特定标签的值
  • mcp__get_metadata:获取指标的元数据
  • mcp__get_targets:获取有关刮擦目标的信息
  • mcp__get_alerts:获取有关警报的信息
  • mcp__get_rules:获取有关记录和警报规则的信息
  • mcp__get_status:获取Prometheus服务器的状态信息

发展

# Run tests
go test ./...

# Build the project
go build -o prometheus-mcp ./cmd/server

# Run end-to-end tests
./scripts/e2e_test.sh
# or
make e2e-test

预提交钩子

此存储库包含预提交挂钩,以确保代码质量。要启用它们,请运行:

git config core.hooksPath .githooks

您可以通过设置环境变量跳过预提交钩子中的端到端测试:

SKIP_E2E_TESTS=true git commit -m "Your commit message"

教程

关于如何将Prometheus MCP服务器与本地Prometheus实例和Ollama用于LLM集成的详细教程,请参阅 docs/tutorial.md 文件。

许可证

麻省理工学院

项目结构

├── cmd/                 # Command-line applications
│   └── server/          # Main MCP server application
├── docs/                # Documentation
│   └── tutorial.md      # Tutorial for using the server
├── examples/            # Example code
│   └── demo.go          # Go demo showing MCP server usage
├── internal/            # Internal packages
│   └── server/          # Server implementation
├── pkg/                 # Public packages
│   ├── mcp/             # MCP protocol implementation
│   └── prometheus/      # Prometheus client
├── scripts/             # Utility scripts
│   └── e2e_test.sh      # End-to-end test script
└── .githooks/           # Git hooks
    └── pre-commit       # Pre-commit hook for quality checks

贡献

欢迎投稿!请按照以下步骤进行贡献:

  1. 分叉存储库
  2. 为您的功能或错误修复创建新分支
  3. 实施您的更改
  4. 为您的更改添加测试
  5. 确保所有测试通过(make test 和 make e2e-test)
  6. 提交您的更改(预提交钩子将运行质量检查)
  7. 推到您的分支
  8. 创建拉取请求

代码的风格

此项目遵循标准的Go编码约定。请确保您的代码:

  • 格式为 go fmt
  • 通行证 go vet
  • 有适当的评论和文件
  • 包括对新功能的测试

报告问题

如果您发现错误或有功能请求,请使用以下信息创建问题:

  • 清晰、描述性的标题
  • 问题或功能请求的详细描述
  • 重现问题的步骤(针对错误)
  • 预期行为
  • 实际行为
  • 环境信息(操作系统、Go版本、Prometheus版本)