返回市场
告警管理器-mcp-服务器

告警管理器-mcp-服务器

作者:ntk148v11 星标更新:2025-11-04

项目介绍

<div align="center"> <h1>Prometheus Alertmanager MCP</h1> <p> <a href="https://github.com/ntk148v/alertmanager-mcp-server/blob/master/LICENSE"> <img alt="GitHub license" src="https://img.shields.io/github/license/ntk148v/alertmanager-mcp-server?style=for-the-badge"> </a> <a href="https://github.com/ntk148v/alertmanager-mcp-server/stargazers"> <img alt="GitHub stars" src="https://img.shields.io/github/stars/ntk148v/alertmanager-mcp-server?style=for-the-badge"> </a> </div>

目录

1. 简介

Prometheus Alertmanager MCP是一个用于Prometheus Alertmanager的模型上下文协议(MCP)服务器。它使AI助手和工具能够通过编程方式安全地查询和管理Alertmanager资源。

2. 特性

  • 查询Alertmanager状态、警报、静默、接收者和警报组
  • 创建、更新和删除静默
  • 创建新的警报
  • 支持身份验证(通过环境变量进行基本认证)
  • 支持Docker容器化

3. 快速开始

3.1. 先决条件

  • Python 3.12+
  • uv(用于快速依赖管理)。
  • Docker(可选,用于容器化部署)。
  • 确保你的Prometheus Alertmanager服务器可以从你将运行此MCP服务器的环境中访问。

3.2. 使用Smithery安装

要通过Smithery自动安装Prometheus Alertmanager MCP服务器到Claude Desktop:

npx -y @smithery/cli install @ntk148v/alertmanager-mcp-server --client claude

3.3. 本地运行

  • 克隆仓库:
# 克隆仓库
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git
  • 配置Prometheus服务器的环境变量,可以通过.env文件或系统环境变量设置:
# 设置环境变量(参见.env.sample)
ALERTMANAGER_URL=http://your-alertmanager:9093
ALERTMANAGER_USERNAME=your_username  # 可选
ALERTMANAGER_PASSWORD=your_password  # 可选

传输配置

你可以通过传输选项和主机/端口设置来控制MCP服务器如何与客户端通信。这些可以使用命令行标志(优先级更高)或环境变量设置。

  • MCP_TRANSPORT: 传输模式。可以是stdiohttpsse。默认值:stdio
  • MCP_HOST: 当运行httpsse传输时绑定的主机/接口(由嵌入式uvicorn服务器使用)。默认值:0.0.0.0
  • MCP_PORT: 当运行httpsse传输时监听的端口。默认值:8000

示例:

使用环境变量设置默认值(CLI标志仍会覆盖):

MCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=8080 python3 -m src.alertmanager_mcp_server.server

或者直接传递标志以覆盖环境变量:

python3 -m src.alertmanager_mcp_server.server --transport http --host 127.0.0.1 --port 9000

注意:

  • stdio传输通过标准输入/输出进行通信,并忽略主机/端口。

  • http(流式HTTP)和sse传输通过ASGI应用(uvicorn)提供服务,因此在使用这些传输时会尊重主机/端口设置。

  • 将服务器配置添加到客户端配置文件中。例如,对于Claude Desktop:

{
  "mcpServers": {
    "alertmanager": {
      "command": "uv",
      "args": [
        "--directory",
        "<full path to alertmanager-mcp-server directory>",
        "run",
        "src/alertmanager_mcp_server/server.py"
      ],
      "env": {
        "ALERTMANAGER_URL": "http://your-alertmanager:9093s",
        "ALERTMANAGER_USERNAME": "your_username",
        "ALERTMANAGER_PASSWORD": "your_password"
      }
    }
  }
}
  • 或者使用make命令安装:
$ make install
  • 重启Claude Desktop以加载新配置。
  • 现在你可以让Claude使用自然语言与Alertmanager交互:
    • "显示当前警报"
    • "筛选与CPU问题相关的警报"
    • "获取此警报的详细信息"
    • "为此警报创建一个持续2小时的静默"

3.4. Docker运行

  • 使用预构建镜像运行(也可以自己构建):
$ docker run -e ALERTMANAGER_URL=http://your-alertmanager:9093 \
    -e ALERTMANAGER_USERNAME=your_username \
    -e ALERTMANAGER_PASSWORD=your_password \
    -p 8000:8000 ghcr.io/ntk148v/alertmanager-mcp-server
  • 在Claude Desktop中使用Docker运行:
{
  "mcpServers": {
    "alertmanager": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "ALERTMANAGER_URL",
        "-e", "ALERTMANAGER_USERNAME",
        "-e", "ALERTMANAGER_PASSWORD",
        "ghcr.io/ntk148v/alertmanager-mcp-server:latest"
      ],
      "env": {
        "ALERTMANAGER_URL": "http://your-alertmanager:9093s",
        "ALERTMANAGER_USERNAME": "your_username",
        "ALERTMANAGER_PASSWORD": "your_password"
      }
    }
  }
}

此配置通过使用-e标志仅传递变量名,将环境变量从Claude Desktop传递到Docker容器,并在env对象中提供实际值。

4. 工具

MCP服务器提供了用于查询和管理Alertmanager的工具,遵循其API v2

  • 获取状态:get_status()
  • 列出警报:get_alerts()
  • 列出静默:get_silences()
  • 创建静默:post_silence(silence_dict)
  • 删除静默:delete_silence(silence_id)
  • 列出接收者:get_receivers()
  • 列出警报组:get_alert_groups()

详情请参阅src/alertmanager_mcp_server/server.py

5. 开发

欢迎贡献!如果你有任何建议或改进,请打开一个问题或提交一个拉取请求。

该项目使用uv来管理依赖。根据你的平台安装uv。

# 克隆仓库
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git
$ cd alertmanager-mcp-server
$ make setup
# 运行测试
$ make test
# 在开发模式下运行
$ mcp dev
$ TRANSPORT_MODE=sse mcp dev

# 安装到Claude Desktop
$ make install

6. 许可证

Apache 2.0


<div align="center"> <sub>由 <a href="https://github.com/ntk148v">@ntk148v</a> 制作 ❤️</sub> </div>