Prometheus模型上下文协议服务器
  
Prometheus的基于Golang的模型上下文协议(MCP)服务器实现,支持与Prometheus度量和查询的自然语言交互。
用Go构建, prometheus-mcp-server 提供了一个强大的、类型安全的接口,该接口与Prometheus HTTP API保持完全一致,允许您通过与兼容MCP的客户端进行自然语言对话来查询和管理普罗米修斯实例。
______________________________________________________________________
目录
- 命令行标志
______________________________________________________________________
特性
- 🔥 Golang实施:采用Go 1.23+构建,性能、可靠性和类型安全
- 📊 完整的Prometheus API覆盖范围:与Prometheus HTTP API v1完全兼容
- ⚡ 即时查询:在特定时间点执行Prometheus查询
- 📈 范围查询:检索定义时间范围内的历史度量数据
- 🔍 元数据查询:发现时间序列、标签名称和标签值
- 🎯 目标和规则管理:监视目标、规则和警报配置
- 🛠️ TSDB管理:高级数据库操作,包括快照和系列删除
- 🌐 多种运输方式:支持HTTP、服务器发送事件(SSE)和stdio
- 🤖 MCP集成:与Claude Desktop等MCP兼容客户端无缝通信
______________________________________________________________________
建筑
prometheus-mcp-server 被设计为 Golang微服务 它充当MCP客户端和Prometheus服务器之间的桥梁。它提供:
- 类型安全的API绑定 使用镜像Prometheus API响应的Go结构
- 模块化封装结构 可维护性和可扩展性
- 全面的错误处理 通过适当的Go错误传播
- 清晰地分离关注点 在传输、API客户端和业务逻辑之间
______________________________________________________________________
需求
- 转到1.23.0 或更高
- 跑步 普罗米修斯服务器 (v2.x)
- 兼容的MCP客户端(Claude Desktop、自定义实现等)
______________________________________________________________________
安装
使用Docker(推荐)
从GitHub容器注册表中提取预构建映像:
# Pull the latest image
docker pull ghcr.io/yshngg/prometheus-mcp-server:latest
# Run with stdio transport (for desktop clients)
docker run --rm ghcr.io/yshngg/prometheus-mcp-server:latest --prom-addr="http://host.docker.internal:9090"
# Run with HTTP transport
docker run --rm -p 8080:8080 ghcr.io/yshngg/prometheus-mcp-server:latest --prom-addr="http://host.docker.internal:9090" --transport=http --mcp-addr="0.0.0.0:8080"或者,在本地构建:
docker build -t prometheus-mcp-server .
docker run -p 8080:8080 prometheus-mcp-server --prom-addr="http://prometheus:9090" --transport=http下载预构建二进制文件
从GitHub下载最新版本:
- 首选
prometheus-mcp-server发布 - 从以下网址下载适用于您平台的二进制文件 资产 部分
- 提取并运行:
# Linux/macOS example
tar -xzf prometheus-mcp-server-.linux-amd64.tar.gz
./prometheus-mcp-server --prom-addr="http://localhost:9090"
# Windows example
unzip prometheus-mcp-server-.windows-amd64.zip
prometheus-mcp-server.exe --prom-addr="http://localhost:9090"从源头构建
git clone https://github.com/yshngg/prometheus-mcp-server.git
cd prometheus-mcp-server
make build
# Binary will be available as ./prometheus-mcp-server使用Go安装
安装 prometheus-mcp-server 二进制直接从源:
go install github.com/yshngg/prometheus-mcp-server@latest确保 $GOPATH/bin 在你的 $PATH.
______________________________________________________________________
用法
通过指定Prometheus地址和首选传输来运行服务器:
# Default (stdio transport) - ideal for desktop clients
prometheus-mcp-server --prom-addr="http://localhost:9090"
# HTTP transport - for web-based integrations
prometheus-mcp-server --prom-addr="http://localhost:9090" --transport=http --mcp-addr="localhost:8080"
# SSE transport - for real-time streaming (deprecated, use HTTP)
prometheus-mcp-server --prom-addr="http://localhost:9090" --transport=sse --mcp-addr="localhost:8080"命令行标志
| 标志 | 描述 | 默认值 |
|---|---|---|
-help | 显示帮助信息。 | 无 |
-mcp-addr | MCP服务器监听的地址 | localhost:8080 |
-prom-addr | 普罗米修斯服务器URL | http://localhost:9090 |
-transport | 通信运输(stdio, http, sse). | stdio |
-version | 打印版本并退出。 | 无 |
______________________________________________________________________
API兼容性
prometheus-mcp-server 维持 100%兼容性 使用Prometheus HTTP API v1。每个工具和端点都直接对应于官方的Prometheus API:
查询和数据检索
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| 即时查询 | /api/v1/query | GET/POST | 执行即时查询 |
| 范围查询 | /api/v1/query_range | GET/POST | 执行范围查询 |
元数据和发现
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| 按标签查找系列 | /api/v1/series | GET/POST | 查找匹配的时间序列 |
| 列出标签名称 | /api/v1/labels | GET/POST | 列出所有标签名称 |
| 列出标签值 | /api/v1/label/:name/values | GET | 列出特定标签的值 |
| 目标发现 | /api/v1/targets | GET | 获取目标信息 |
| 目标元数据查询 | /api/v1/targets/metadata | GET | 从目标获取元数据 |
| 度量元数据查询 | /api/v1/metadata | GET | 获取度量元数据 |
规则和警报
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| 警报查询 | /api/v1/alerts | GET | 获取所有活动警报 |
| 规则查询 | /api/v1/rules | GET | 获取记录/警报规则 |
| 警报管理器发现 | /api/v1/alertmanagers | GET | 获取警报管理器信息 |
状态和配置
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| 配置 | /api/v1/status/config | GET | 获取当前配置 |
| 旗帜 | /api/v1/status/flags | GET | 获取运行时标志 |
| 构建信息 | /api/v1/status/buildinfo | GET | 获取构建信息 |
| 运行时信息 | /api/v1/status/runtimeinfo | GET | 获取运行时信息 |
| TSDB统计数据 | /api/v1/status/tsdb | GET | 获取TSDB统计信息 |
| WAL重播统计数据 | /api/v1/status/walreplay | 获取 | 获取WAL重播状态 |
TSDB管理
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| TSDB快照 | /api/v1/admin/tsdb/snapshot | POST/PUT | 创建TSDB快照 |
| 删除系列 | /api/v1/admin/tsdb/delete_series | POST/PUT | 删除时间序列数据 |
| 清理墓碑 | /api/v1/admin/tsdb/clean_tombstones | POST/PUT | 清除已删除的数据 |
管理API
| 工具 | 普罗米修斯端点 | HTTP方法 | 目的 |
|---|---|---|---|
| 健康检查 | /-/healthy | GET/HEAD | 检查普罗米修斯的健康状况 |
| 准备就绪检查 | /-/ready | GET/HEAD | 检查是否准备就绪 |
| 重新加载 | /-/reload | PUT/POST | 重新加载配置 |
| 退出 | /-/quit | PUT/POST | 优雅关机 |
所有查询参数、响应格式和错误代码都符合官方的Prometheus API规范。
______________________________________________________________________
绑定块
工具
表达式查询 (普罗米修斯核心功能):
- 即时查询:在单个时间点评估即时查询
- 范围查询:在一段时间内计算表达式查询
元数据查询 (系列和标签发现):
- 按标签查找系列:返回与特定标签集匹配的时间序列列表
- 列出标签名称:返回标签名称列表
- 列出标签值:返回所提供标签名称的标签值列表
- 目标元数据查询:返回当前从目标中抓取的指标的元数据
- 度量元数据查询:返回当前从目标中抓取的指标的元数据(没有目标信息)
发现与监控:
- 发现目标:返回普罗米修斯目标发现的当前状态概述
- 警报查询:返回所有活动警报的列表
- 规则查询:返回当前加载的警报和记录规则列表
- 警报管理器发现:返回Prometheus警报管理器发现的当前状态概述
状态和配置:
- 配置:返回当前加载的配置文件
- 旗帜:返回Prometheus配置的标志值
- 运行时信息:返回有关Prometheus服务器的各种运行时信息属性
- 构建信息:返回有关Prometheus服务器的各种构建信息属性
- TSDB统计数据:返回有关Prometheus TSDB的各种基数统计信息
- WAL重播统计数据:返回有关WAL重播的信息
TSDB管理API (高级操作):
- TSDB快照:将所有当前数据的快照创建为快照/`
-` - 删除系列:删除时间范围内选定系列的数据
- 清理墓碑:从磁盘中删除已删除的数据并清理现有的墓碑
管理API:
- 健康检查:检查普罗米修斯健康状况
- 准备检查:检查Prometheus是否已准备好为流量提供服务(即响应查询)
- 重新加载:触发重新加载Prometheus配置和规则文件
- 退出:触发普罗米修斯的优雅关机
提示
- 所有可用指标:返回Prometheus实例暴露的每个指标的列表
______________________________________________________________________
贡献
欢迎投稿!这是一个 Golang项目,因此请确保:
- 遵循Go最佳实践和惯例
- 为新功能添加适当的测试
- 保持API与普罗米修斯的兼容性
- 根据需要更新文档
请提交一个pull请求或打开一个问题来讨论改进。
开发环境
git clone https://github.com/yshngg/prometheus-mcp-server.git
cd prometheus-mcp-server
go mod download
make build______________________________________________________________________
许可证
此项目根据Apache许可证2.0获得许可。请参阅 许可证 文件以获取详细信息。
______________________________________________________________________

致谢
- 用Go构建 使用官方 Prometheus Go客户端库
- 由...驱动 模型上下文协议Go SDK
- 受启发于 普罗米修斯 -监测和警报的事实标准
