Prometheus Alertmanager MCP
目录
- 3.1.先决条件 - 3.2.通过Smithery安装 - 3.3.本地跑 -
1.导言
普罗米修斯警报管理器MCP是 模型上下文协议 普罗米修斯警报管理器的(MCP)服务器。它使AI助手和工具能够以编程方式安全地查询和管理Alertmanager资源。
2.特点
- \[x\] 查询Alertmanager状态、警报、静音、接收器和警报组
- \[x\] 智能分页支持 在处理大量警报时防止LLM上下文窗口溢出
- \[x\] 创建、更新和删除静默
- \[x\] 创建新警报
- \[x\] 身份验证支持(通过环境变量进行基本身份验证)
- \[x\] 多租户支持(通过
X-Scope-OrgIdMimir/CoCortex的头部) - \[x\] Docker容器化支持
3.快速入门
3.1.先决条件
- Python 3.12+
- 紫外线 (用于快速依赖管理)。
- Docker(可选,用于容器化部署)。
- 确保您的Prometheus Alertmanager服务器可以从运行此MCP服务器的环境中访问。
3.2.通过Smithery安装
通过以下方式自动安装Prometheus Alertmanager MCP Server for Claude Desktop 铁匠铺:
npx -y @smithery/cli install @ntk148v/alertmanager-mcp-server --client claude3.3.本地跑
- 克隆存储库:
# Clone the repository
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git- 通过.env文件或系统环境变量为Prometheus服务器配置环境变量:
# Set environment variables (see .env.sample)
ALERTMANAGER_URL=http://your-alertmanager:9093
ALERTMANAGER_USERNAME=your_username # optional
ALERTMANAGER_PASSWORD=your_password # optional
ALERTMANAGER_TENANT=your_tenant_id # optional, for multi-tenant setups多租户支持
对于多租户Alertmanager部署(例如Grafana Mimir、Cortex),您可以通过两种方式指定租户ID:
- 静态配置:设置
ALERTMANAGER_TENANT环境变量 - 根据请求:包括
X-Scope-OrgId发送给MCP服务器的请求中的标头
这 X-Scope-OrgId header优先于静态配置,允许根据请求动态切换租户。
传输配置
您可以使用传输选项和主机/端口设置来控制MCP服务器如何与客户端通信。这些可以通过命令行标志(优先)或环境变量进行设置。
- MCP_TRANSPORT:传输模式。其中之一
stdio,http,或sse默认值:stdio. - MCP_HOST:运行时要绑定的主机/接口
http或sse传输(由嵌入式uvicorn服务器使用)。违约:0.0.0.0. - MCP_PORT:运行时要监听的端口
http或sse运输。违约:8000.
示例:
使用环境变量设置默认值(CLI标志仍然覆盖):
MCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=8080 python3 -m src.alertmanager_mcp_server.server或者直接传递标志来覆盖env变量:
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",
"",
"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 \
-e ALERTMANAGER_TENANT=your_tenant_id \
-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"
}
}
}
}此配置通过使用以下命令将环境变量从Claude Desktop传递到Docker容器 -e 仅使用变量名标记,并在 env 对象。
4.工具
MCP服务器公开了用于查询和管理Alertmanager的工具,如下所示 其API v2:
- 获取状态:
get_status() - 列出警报:
get_alerts(filter, silenced, inhibited, active, count, offset)
- 分页支持:返回分页结果以避免压倒性的LLM上下文 - count:每页警报数(默认值:10,最大值:25) - offset:要跳过的警报数(默认值:0) - 退货: { "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } }
- 列出沉默:
get_silences(filter, count, offset)
- 分页支持:返回分页结果以避免压倒性的LLM上下文 - count:每页沉默次数(默认值:10,最大值:50) - offset:要跳过的静默次数(默认值:0) - 退货: { "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } }
- 创造沉默:
post_silence(silence_dict) - 删除静音:
delete_silence(silence_id) - 列出接收者:
get_receivers() - 列出警报组:
get_alert_groups(silenced, inhibited, active, count, offset)
- 分页支持:返回分页结果以避免压倒性的LLM上下文 - count:每页的警报组数(默认值:3,最大值:5) - offset:要跳过的警报组数(默认值:0) - 退货: { "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } } - 注意:警报组的限制较低,因为它们包含每个组中的所有警报
分页优势
在处理具有许多警报、静音或警报组的环境时,分页功能有助于:
- 防止上下文溢出:默认情况下,每次请求只返回10个项目
- 高效浏览:LLM可以使用以下命令迭代结果
offset和count参数 - 智能限制:每页最多50个项目,防止过度使用上下文
- 清晰导航:
has_more标志指示何时有其他页面可用
示例:如果你有100个警报,LLM可以将它们分为可管理的块(例如,一次10个),只加载分析所需的内容。
看 src/altermanager_mcpserver/server.py 获取API的完整详细信息。
5.发展
欢迎投稿!如果您有任何建议或改进,请打开问题或提交拉取请求。
此项目使用 紫外线 管理依赖关系。按照您平台的说明安装uv。
# Clone the repository
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git
$ cd alertmanager-mcp-server
$ make setup
# Run test
$ make test
# Run in development mode
$ mcp dev src/alertmanager_mcp_server/server.py
# Install in Claude Desktop
$ make install6.许可证
______________________________________________________________________
Made with ❤️ by @ntk148v
