项目简介

本项目是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于与 Prometheus 监控系统交互。它将 Prometheus 的查询和元数据获取功能封装为一系列易于大型语言模型 (LLM) 或其他 MCP 客户端调用的“工具”。通过这个服务器,AI 应用可以标准化地访问 Prometheus 数据,进行自动化分析和决策。

主要功能点

本服务器提供以下主要功能工具:

  • 搜索指标: 根据正则表达式模式搜索匹配的指标名称列表。
  • 获取标签: 获取指定指标所拥有的所有标签名称(不包括内部标签)。
  • 获取标签值: 获取指定指标下某个特定标签的所有可能值。
  • 即时查询: 执行 PromQL 查询,返回当前时刻的指标数据。
  • 范围查询: 执行 PromQL 查询,返回一段时间范围内的时序数据序列。
  • 图表查询: 执行 PromQL 范围查询,并将结果渲染成图片(Base64 编码)返回,便于可视化。

所有查询结果通常以 JSON 格式返回,图表查询返回图片数据,便于 AI 系统解析和处理。

安装步骤

  1. 前提条件: 确保您的系统已安装 Go 编程环境。
  2. 获取代码: 克隆本项目代码仓库到本地。
  3. 配置 Prometheus 地址: 设置 'PROMETHEUS_URL' 环境变量,指向您要连接的 Prometheus 服务器的 HTTP 地址。例如,在 Linux/macOS 系统中,打开终端执行:
    export PROMETHEUS_URL=http://your_prometheus_server:9090
    请将 'http://your_prometheus_server:9090' 替换为您实际的 Prometheus 地址。
  4. 启动服务器: 在项目根目录下,使用 Go 命令启动服务器,并指定传输协议(本项目支持 SSE):
    go run cmd/server/main.go sse
    或者,如果您下载的是仓库提供的包含启动脚本的发行版,可以使用 Node.js 脚本启动:
    node dist/index.js sse
    服务器默认将在本地的 8081 端口启动,并暴露 SSE 接口,例如 'http://localhost:8081/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)可以解析这些结果,进行进一步的分析、生成报告或执行其他任务。

信息

分类

开发者工具