返回市场
普罗米修斯MCP服务器

普罗米修斯MCP服务器

作者:tjhop23 星标更新:2025-11-21

项目介绍

Prometheus MCP Server

license Go Report Card golangci-lint Latest Release GitHub Downloads (all assets, all releases)

Prometheus MCP Server Logo

关于

这是一个MCP服务器,允许大型语言模型通过API与正在运行的Prometheus实例进行交互,执行诸如生成和执行PromQL查询、列出和分析指标等操作。

演示和示例

调查由MCP服务器产生的指标并建议用于SLO的记录规则

使用的提示是:

使用来自Prometheus MCP服务器的工具来调查MCP服务器的指标,并建议用于SLO的Prometheus记录规则

演示提示以调查由MCP服务器产生的指标并创建SLO规则

总结Prometheus指标/标签命名的最佳实践

使用的提示是:

总结Prometheus指标/标签命名的最佳实践

演示提示以总结Prometheus指标和标签命名的最佳实践

报告支持prometheus.demo.prometheus.io的Prometheus实例的健康状况

使用的提示是:

请提供对Prometheus服务器的全面审查和总结。审查其配置、标志、运行时/构建信息以及您认为可能有助于了解Prometheus实例状态的其他内容,包括分析指标和执行查询

演示提示以审查demo.prometheus.io Prometheus实例的健康状况

工具

Prometheus HTTP API输出JSON数据,而这个MCP服务器中的工具将这些JSON数据返回给LLM进行处理,因为它们结构良好且易于LLM理解。

如果担心令牌/上下文使用问题,此MCP服务器还支持将API的JSON数据转换为Token-Oriented Object Notation (TOON) 格式。 虽然不能保证减少令牌使用,但它旨在提高令牌效率。 如TOON文档所述,它在统一的对象数组方面表现出色;非统一/复杂对象在JSON中可能更高效。 实际的令牌使用情况取决于使用模式,请查看常见工作流以确定TOON输出是否有益。 请参阅标志以获取更多关于可用标志及其对应环境变量的信息。

完整工具列表

工具名称描述
alertmanagers获取Prometheus Alertmanager发现的概览
build_info获取Prometheus构建信息
config获取Prometheus配置
docs_list官方Prometheus文档文件列表
docs_read从prometheus/docs仓库读取包含官方Prometheus文档的指定markdown文件
docs_search搜索prometheus/docs仓库中包含官方Prometheus文档的markdown文件
exemplars_query根据给定的查询和时间范围执行示例查询
flags获取运行时标志
label_names返回在给定时间范围和匹配器内的唯一标签名称,按排序顺序
label_values执行给定标签值的查询,时间范围和匹配器
list_alerts列出所有活动警报
list_rules列出加载的所有警报和记录规则
list_targets获取Prometheus目标发现的概览
metric_metadata返回当前被刮取的指标元数据
query对Prometheus数据源执行即时查询
range_query对Prometheus数据源执行范围查询
runtime_info获取Prometheus运行时信息
series根据标签匹配器查找系列
targets_metadata返回当前被刮取的目标元数据
tsdb_stats获取TSDB的使用和基数统计
wal_replay_status获取当前WAL重放状态

注意:

因为TSDB管理API端点允许执行潜在破坏性操作,如删除数据,默认情况下它们是禁用的。为了启用TSDB管理API端点,必须使用标志--dangerous.enable-tsdb-admin-tools启动MCP服务器,以承认这些端点带来的风险。

工具名称描述
clean_tombstones从磁盘上移除已删除的数据并清理现有的墓碑
delete_series删除选定系列在时间范围内的数据
snapshot将所有当前数据快照到TSDB的数据目录下的snapshots/<datetime>-<rand>,并返回该目录作为响应

工具集

服务器暴露了许多与Prometheus交互的工具。有通过API与Prometheus交互的工具,也有额外的工具,例如阅读文档等。 默认情况下,它们都已注册并可供使用(TSDB管理API工具需要额外的标志)。

为了考虑具有较小上下文窗口的LLM,可以传递一个特定工具的白名单以注册到服务器。 以下“核心”工具始终加载:[docs_list, docs_read, docs_search, query, range_query, metric_metadata, label_names, label_values, series]。 可以通过--mcp.tools标志指定额外的工具。

例如,命令行:

prometheus-mcp-server --mcp.tools=build_info --mcp.tools=flags --mcp.tools=runtime_info

会导致加载以下工具:

  • build_info
  • docs_list
  • docs_read
  • docs_search
  • flags
  • label_names
  • label_values
  • metric_metadata
  • query
  • range_query
  • runtime_info
  • series

Prometheus兼容后端

有许多Prometheus兼容后端可用于扩展Prometheus,通常目的是提供长期存储或从多个Prometheus实例聚合查询。 一些示例可以在Prometheus文档的远程存储部分找到。

许多服务也提供了“Prometheus兼容”的API,可以使用原生PromQL查询/交互数据。 一般来说,这个MCP服务器至少应该能够与其他Prometheus API兼容的服务一起工作,执行查询并交互系列/标签/元数据端点以发现指标和标签。 除此之外,由于不同的系统实现了API的不同部分/扩展以满足各自的需求,可能会存在API差异。

示例:

  • Thanos不使用集中式配置,因此未实现配置端点,因此配置工具会失败。
  • Mimir和Cortex实现了额外的端点来管理和添加/删除规则。

为了绕过这个问题并提供更好的体验,对于一些常用的Prometheus兼容系统,该项目可能会直接支持某些系统,以提供不同的/更多的工具。 选择特定的Prometheus后端实现可以通过--prometheus.backend标志完成。 给定版本的MCP服务器可用的后端实现列表可以在--help标志的输出中找到。 资格和支持标准仍在考虑中,请打开一个问题以请求特定后端的支持/功能进行进一步讨论。

Prometheus后端实现差异
后端工具增加/删除/更改备注
prometheusn/a标准Prometheus工具。功能上等同于--mcp.tools="all"。默认的MCP服务器工具集。
thanosalertmanagers删除Thanos未实现该端点,工具返回404
thanosconfig删除Thanos不使用集中式配置,因此未实现该端点,工具返回404
thanoswal_replay_status删除Thanos未实现该端点,工具返回404
thanoslist_stores增加Thanos提供了一个额外的端点以列出存储API服务器。

资源

资源名称资源URI描述
prometheus://list_metrics列出可用的指标
prometheus://targets当前Prometheus目标发现的状态概述
prometheus://tsdb_stats来自TSDB的使用和基数统计
prometheus://docs官方Prometheus文档文件列表
prometheus://docs{/file*}按名称读取官方Prometheus文档文件

提示

尚未实现,待定

安装和使用

当完全集成到工具或作为另一个系统的工具服务器安装时,此MCP服务器最有用。 安装过程和集成支持将根据所使用的工具而有所不同。 例如:

  • 某些系统只能与MCP工具交互,而不能与资源/提示交互
  • 某些系统使用mcp.json配置文件格式来管理MCP服务器,有些则需要自定义格式
  • 某些系统不直接使用MCP,而是需要像mcp-to-openapi这样的工具来代理

请查阅正在使用/集成的工具的具体文档,以获取特定指令和支持级别。

二进制

发布页面下载适用于您的系统的版本。 请参阅标志以获取更多关于可用标志及其对应环境变量的信息。

/path/to/prometheus-mcp-server <flags>

# 或使用环境变量
PROMETHEUS_MCP_SERVER_PROMETHEUS_URL="https://$yourPrometheus:9090" /path/to/prometheus-mcp-server

Docker

请参阅标志以获取更多关于可用标志及其对应环境变量的信息。

# 标准输入传输
docker run --rm -i ghcr.io/tjhop/prometheus-mcp-server:latest --prometheus.url "https://$yourPrometheus:9090" 

# 或使用环境变量
docker run --rm -i -e PROMETHEUS_MCP_SERVER_PROMETHEUS_URL="https://$yourPrometheus:9090" ghcr.io/tjhop/prometheus-mcp-server:latest
# 可流式传输的HTTP传输(也支持SSE)
docker run --rm -p 8080:8080 ghcr.io/tjhop/prometheus-mcp-server:latest --prometheus.url "https://$yourPrometheus:9090" --mcp.transport "http" --web.listen-address ":8080"

# 或使用环境变量
docker run --rm -p 2023:2023 -e PROMETHEUS_MCP_SERVER_PROMETHEUS_URL="https://$yourPrometheus:9090" -e PROMETHEUS_MCP_SERVER_MCP_TRANSPORT="http" -e PROMETHEUS_MCP_SERVER_WEB_LISTEN_ADDRESS=":8080" ghcr.io/tjhop/prometheus-mcp-server:latest

系统包

发布页面下载适用于您的系统的版本。构建的系统包中包含一个Systemd服务文件。

# 安装系统包(假设基于Debian)
apt install /path/to/package
# 创建单元覆盖,添加任何所需的标志或环境变量
systemctl edit prometheus-mcp-server.service
systemctl enable --now prometheus-mcp-server.service

注意:虽然为几个系统构建了包,但目前没有计划尝试将包提交到上游包仓库。

监控

指标

一旦运行,服务器将在配置的监听地址和监控路径(默认为:8080/metrics)上暴露Prometheus指标。 请参阅标志以获取更多信息,了解如何更改监听接口、端口或监控路径。

<details> <summary>Prometheus MCP Server 指标</summary>
指标名称类型描述标签
prom_mcp_build_infoGauge一个带有常量'1'值的指标,带有版本、提交和构建日期的标签,这些标签是从哪个prometheus-mcp-server构建的。version, commit, build_date, goversion
prom_mcp_server_readyGauge如果MCP服务器准备好,则为静态'1'的信息指标,否则为'0'。
prom_mcp_api_calls_failed_totalCounter每个端点的Prometheus API失败总数。target_path
prom_mcp_api_call_duration_secondsHistogram每个端点的Prometheus API调用持续时间,以秒为单位。target_path
prom_mcp_tool_calls_failed_totalCounter每个工具的失败总数。tool_name
prom_mcp_tool_call_duration_secondsHistogram每个工具的调用持续时间,以秒为单位。tool_name
prom_mcp_resource_calls_failed_totalCounter每个资源的失败总数。resource_uri
prom_mcp_resource_call_duration_secondsHistogram每个资源的调用持续时间,以秒为单位。resource_uri
go_*Gauge/Counter来自client_golang库的标准Go运行时指标。
process_*Gauge/Counter来自client_golang库的标准进程指标。
</details>

日志

本项目大量使用结构化、分层日志。 请参阅标志以获取更多信息,了解如何设置日志格式、级别和可选文件。

开发

使用Devbox + Direnv的开发环境

如果您使用DevboxDirenv,那么只需进入仓库目录即可设置所需软件。

使用Ollama的本地LLM

请参阅mcp.json以获取一个用于工具的MCP配置示例。 需要安装ollama

注意

若要覆盖默认的LLM(ollama:gpt-oss:20b),请在运行make之前运行export OLLAMA_MODEL="ollama:your_model"以覆盖它。

<details> <summary>使用MCP Inspector和本地ollama实例:</summary>

需要安装MCP Inspector

make inspector
</details> <details> <summary>使用mcphost和本地ollama实例:</summary>

需要安装mcphost

make mcphost
</details>

使用gemini-cli的Gemini

请参阅settings.json以获取一个示例配置文件,用于使用gemini-cli运行prometheus-mcp-server。 需要安装gemini-cli

<details> <summary>使用`gemini-cli`和托管模型:</summary>
make gemini
</details>

手动设置

所需软件:

构建

包含的Makefile有几个目标以帮助开发:

~/go/src/github.com/tjhop/prometheus-mcp-server (main [ ]) -> make

用法:
  make <目标>

目标:
  help                           打印此帮助消息
  submodules                     确保初始化并更新git子模块
  tidy                           整理模块
  fmt                            应用go代码样式格式化程序
  lint                           运行检查器
  binary                         构建二进制文件
  build                          别名为`binary`
  build-all                      测试发布流程,使用goreleaser,不会上传/发布
  container                      使用goreleaser构建容器镜像,别名为`build-all`
  image                          使用goreleaser构建容器镜像,别名为`build-all`
  test                           运行测试
  mcphost                        使用mcphost运行prometheus-mcp-server,针对本地ollama模型
  inspector                      使用inspector运行prometheus-mcp-server,在