项目简介
本项目是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于与 Prometheus 监控系统交互。它将 Prometheus 的查询和元数据获取功能封装为一系列易于大型语言模型 (LLM) 或其他 MCP 客户端调用的“工具”。通过这个服务器,AI 应用可以标准化地访问 Prometheus 数据,进行自动化分析和决策。
主要功能点
本服务器提供以下主要功能工具:
- 搜索指标: 根据正则表达式模式搜索匹配的指标名称列表。
- 获取标签: 获取指定指标所拥有的所有标签名称(不包括内部标签)。
- 获取标签值: 获取指定指标下某个特定标签的所有可能值。
- 即时查询: 执行 PromQL 查询,返回当前时刻的指标数据。
- 范围查询: 执行 PromQL 查询,返回一段时间范围内的时序数据序列。
- 图表查询: 执行 PromQL 范围查询,并将结果渲染成图片(Base64 编码)返回,便于可视化。
所有查询结果通常以 JSON 格式返回,图表查询返回图片数据,便于 AI 系统解析和处理。
安装步骤
- 前提条件: 确保您的系统已安装 Go 编程环境。
- 获取代码: 克隆本项目代码仓库到本地。
- 配置 Prometheus 地址: 设置 'PROMETHEUS_URL' 环境变量,指向您要连接的 Prometheus 服务器的 HTTP 地址。例如,在 Linux/macOS 系统中,打开终端执行:
请将 'http://your_prometheus_server:9090' 替换为您实际的 Prometheus 地址。export PROMETHEUS_URL=http://your_prometheus_server:9090 - 启动服务器: 在项目根目录下,使用 Go 命令启动服务器,并指定传输协议(本项目支持 SSE):
或者,如果您下载的是仓库提供的包含启动脚本的发行版,可以使用 Node.js 脚本启动:go run cmd/server/main.go sse
服务器默认将在本地的 8081 端口启动,并暴露 SSE 接口,例如 'http://localhost:8081/sse'。您也可以通过命令行参数或环境变量配置日志文件路径等。node dist/index.js sse
服务器配置
MCP 客户端需要配置如何连接并使用此 MCP 服务器。这通常涉及在客户端的配置文件中指定服务器的详细信息,包括:
- 服务器名称: 一个用于在客户端中唯一标识此服务器的名称。
- 启动命令 ('command'): 指定用于启动此服务器进程的可执行文件路径。例如,可能是 'go'(如果直接运行源码)或 'node'(如果使用提供的启动脚本)。
- 启动参数 ('args'): 传递给启动命令的参数列表。这应包含运行服务器所需的子命令(例如 'sse')和必要的配置,如 Prometheus 服务器地址。Prometheus 地址可以通过 '--prometheus-url' 参数传递,或者如果客户端支持,可以配置环境变量 'PROMETHEUS_URL'。例如,参数列表可能包含 'run', 'cmd/server/main.go', 'sse', '--prometheus-url', 'http://your_prometheus_server:9090' (直接运行 Go 源码) 或 'dist/index.js', 'sse' (使用 Node.js 脚本,依赖环境变量设置 Prometheus 地址)。请查阅您的 MCP 客户端文档以了解具体的配置格式和参数传递方式。
- 传输方式 ('transport'): 指明客户端与服务器通信使用的协议,本项目为 Server-Sent Events (SSE)。
- 连接地址 ('url'): 如果使用 SSE 或 WebSocket 等基于网络的传输方式,需要配置服务器监听的完整 URL,例如 'http://localhost:8081/sse'。
请根据您的 MCP 客户端要求,使用相应的 JSON 或其他格式配置上述信息。
基本使用方法
服务器启动并由 MCP 客户端加载后,LLM 或其他应用即可通过 MCP 协议向该服务器发送 JSON-RPC 请求,调用暴露的工具(如 'query'、'search_metrics' 等),并根据工具定义传递相应的参数。服务器将执行操作(如调用 Prometheus API)并将结果以 JSON-RPC 响应的形式返回给客户端。客户端(通常是 LLM)可以解析这些结果,进行进一步的分析、生成报告或执行其他任务。
信息
分类
开发者工具