返回市场
普罗米修斯-mcp

普罗米修斯-mcp

作者:cgoolsby2 星标更新:2025-05-10

项目介绍

Prometheus MCP Server

这是一个用Go语言编写的Prometheus Model Context Protocol (MCP)服务器。该服务器使AI助手能够通过标准化的MCP接口查询和分析Prometheus指标。

功能

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

安装

先决条件

  • Go 1.20或更高版本
  • 运行中的Prometheus实例

从源代码构建

# 克隆仓库
git clone https://github.com/cgoolsby/prometheus-mcp.git
cd prometheus-mcp

# 构建项目
go build -o prometheus-mcp ./cmd/server

# 运行服务器
./prometheus-mcp

配置

服务器可以通过环境变量进行配置:

与AI助手一起使用

此MCP服务器可以与支持Model Context Protocol的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:获取抓取目标信息
  • m_cpc__get_alerts`:获取警报信息
  • mcp__get_rules:获取记录和警报规则的信息
  • mcp__get_status:获取Prometheus服务器的状态信息

开发

# 运行测试
go test ./...

# 构建项目
go build -o prometheus-mcp ./cmd/server

# 运行端到端测试
./scripts/e2e_test.sh
# 或者
make e2e-test

提交前钩子

此仓库包含提交前钩子以确保代码质量。要启用它们,请运行:

git config core.hooksPath .githooks

您可以在提交前钩子中跳过端到端测试,设置一个环境变量:

SKIP_E2E_TESTS=true git commit -m "您的提交消息"

教程

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

许可证

MIT

项目结构

├── cmd/                 # 命令行应用程序
│   └── server/          # 主MCP服务器应用程序
├── docs/                # 文档
│   └── tutorial.md      # 使用服务器的教程
├── examples/            # 示例代码
│   └── demo.go          # 展示MCP服务器使用的Go示例
├── internal/            # 内部包
│   └── server/          # 服务器实现
├── pkg/                 # 公共包
│   ├── mcp/             # MCP协议实现
│   └── prometheus/      # Prometheus客户端
├── scripts/             # 实用脚本
│   └── e2e_test.sh      # 端到端测试脚本
└── .githooks/           # Git钩子
    └── pre-commit       # 质量检查的提交前钩子

贡献

欢迎贡献!请遵循以下步骤进行贡献:

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

代码风格

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

  • 使用 go fmt 格式化
  • 通过 go vet
  • 包含适当的注释和文档
  • 新功能包括测试

报告问题

如果您发现了一个bug或有功能请求,请创建一个包含以下信息的问题:

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