普罗米修斯MCP服务器
用于与Prometheus监控系统交互的模型上下文协议(MCP)服务器。
⚠️ 免责声明\ 这是一个测试项目,也是我的第一个MCP实现。我正在学习和试验模型上下文协议,同时构建一些东西来满足特定的功能需求。如果你正在寻找一个成熟的、生产就绪的解决方案,你可能想探索生态系统中其他已建立的MCP项目。与Cursor和Cloude-4.5-onnet共同开发的项目。
特性
- 检查Prometheus服务器连接
- 来自Prometheus的查询警报
- 承载令牌身份验证支持
安装
- 克隆此存储库
- 安装依赖项:
pip install -r requirements.txt- 配置Prometheus连接:
touch .env
# Edit .env with your Prometheus URL and token配置
服务器支持两种配置模式:
单个Prometheus服务器配置(向后兼容)
对于单个Prometheus服务器,使用以下环境变量:
PROMETHEUS_URL:普罗米修斯服务器的基本URL(例如。,https://prometheus.example.com)PROMETHEUS_TOKEN:用于身份验证的承载令牌(可选,如果您的Prometheus需要身份验证)PROMETHEUS_VERIFY_SSL:设置为false禁用自签名证书的SSL证书验证(默认值:true)
多个Prometheus服务器配置
对于多个Prometheus服务器,请使用 PROMETHEUS_SERVERS 带有JSON数组的环境变量:
export PROMETHEUS_SERVERS='[
{
"name": "production",
"description": "Production Prometheus Server",
"url": "https://prometheus-prod.example.com",
"token": "prod-bearer-token",
"verify_ssl": true
},
{
"name": "staging",
"description": "Staging Prometheus Server",
"url": "https://prometheus-staging.example.com",
"token": "staging-bearer-token",
"verify_ssl": false
},
{
"name": "development",
"description": "Development Prometheus Server",
"url": "https://prometheus-dev.example.com",
"token": "",
"verify_ssl": true
}
]'每个服务器配置包括:
name(必需):服务器的唯一标识符description(可选):人类可读的描述url(必填):Prometheus服务器的基本URLtoken(可选):用于身份验证的承载令牌verify_ssl(可选):是否验证SSL证书(默认值:true)
注: 看 servers-config-example.json JSON配置的格式化示例。
用法
运行服务器
python prometheus_mcp.py与MCP客户端一起使用
单服务器配置
添加到您的MCP客户端配置中(例如。, ~/.cursor/mcp.json):
{
"mcpServers": {
"prometheus": {
"command": "python",
"args": ["/path/to/prometheus-alerts-mcp/prometheus_mcp.py"],
"env": {
"PROMETHEUS_URL": "https://your-prometheus-server.com",
"PROMETHEUS_TOKEN": "your-bearer-token",
"PROMETHEUS_VERIFY_SSL": "false"
}
}
}
}多服务器配置
对于多台服务器,请使用 PROMETHEUS_SERVERS 环境变量:
{
"mcpServers": {
"prometheus": {
"command": "python",
"args": ["/path/to/prometheus-alerts-mcp/prometheus_mcp.py"],
"env": {
"PROMETHEUS_SERVERS": "[{\"name\":\"production\",\"description\":\"Production Server\",\"url\":\"https://prometheus-prod.example.com\",\"token\":\"prod-token\",\"verify_ssl\":true},{\"name\":\"staging\",\"description\":\"Staging Server\",\"url\":\"https://prometheus-staging.example.com\",\"token\":\"staging-token\",\"verify_ssl\":false}]"
}
}
}
}可用工具
list_server
列出所有已配置的Prometheus服务器。
退货: JSON字符串,包含可用服务器及其配置列表,包括:
- 服务器名称
- 描述
- 统一资源定位符
- 是否配置了身份验证令牌
- SSL验证设置
检查方法连接
检查与Prometheus服务器的连接并检索构建信息。
参数:
server_name(可选):要检查的服务器的名称。如果为空,则使用第一个配置的服务器。
退货: 包含连接状态和服务器信息的JSON字符串。
获取警报
通过可选的按状态、组和警报名称过滤,从Prometheus获取警报规则。
此函数返回系统中定义的所有警报规则。您可以按州、组名、警报名称进行筛选,并控制返回的详细程度。
参数:
server_name(可选):要查询的服务器的名称。如果为空,则使用第一个配置的服务器。state(可选):按警报状态筛选。可以是“启动”、“待定”或“未激活”。留空以获取所有警报规则。group_name(可选):按警报规则组名称筛选。留空以获取所有组。alert_name(可选):按特定警报名称筛选。留空以获取所有警报。extended_metadata(可选):如果False(默认),仅返回每个警报的基本字段(名称、状态、严重性、注释),从而显著减小响应大小。如果True,返回完整的元数据,包括查询、评估时间、运行状况和所有标签。使用False用于在查询许多警报时进行高效的上下文窗口管理,以及True仅当您需要特定警报的完整技术细节时。
退货: 带有警报规则的JSON字符串,包括:
- 服务器名称和描述
- 汇总统计数据(总规则、解雇、待处理、非活动计数)
- 应用过滤器
- 带有定义的警报规则组(完整或简化,基于
extended_metadata)
示例:比较多个服务器上的警报
您可以轻松比较不同Prometheus服务器上是否存在特定警报:
Comparing alerts across multiple servers
此示例显示了检查不同服务器(vsno5和vsno7)上是否存在相同的Kubernetes持久卷警报,帮助您识别环境之间的配置差异。
您还可以组合不同的过滤器以获得更高级的结果:
Using different filters with multiple servers
高级查询和上下文窗口
MCP与Prometheus Alerts API交互,检索包含所有查询的整个json。这可能会长到超过你的上下文窗口,特别是在比较多个服务器时(即使我们不获取extra_metadata):
相反,您可以指示代理按照不同的步骤进行通知:
许可证
Apache许可证2.0
版权所有2025何塞·加托·路易斯
根据Apache许可证2.0版(“许可证”)许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下网址获得许可证副本
http://www.apache.org/licenses/LICENSE-2.0除非适用法律要求或书面同意,否则软件 根据许可证分发的内容按“原样”分发, 无任何明示或暗示的保证或条件。 请参阅许可证,了解管理权限和 许可证下的限制。
作者
何塞·加托·路易斯\ 电子邮件:jgato@redhat.com
和光标与claude-4.5-连接
