使用说明
普罗米修斯MCP服务器
用Go编写的Prometheus模型上下文协议(MCP)服务器。该服务器使AI助手能够通过标准化的MCP接口查询和分析Prometheus指标。
特性
- 执行PromQL即时查询
- 在一段时间内执行PromQL范围查询
- 按标签匹配发现系列
- 探索标签名称和值
- 访问度量元数据
- 获取有关刮擦目标的信息
- 访问警报和记录规则
- 获取Prometheus服务器状态信息
安装
先决条件
- 达到1.20或更高
- 正在运行的Prometheus实例
从源头构建
# Clone the repository
git clone https://github.com/cgoolsby/prometheus-mcp.git
cd prometheus-mcp
# Build the project
go build -o prometheus-mcp ./cmd/server
# Run the server
./prometheus-mcp
配置
可以使用环境变量配置服务器:
PROMETHEUS_HOST:Prometheus实例的基本URL(默认值:http://localhost:9090)
使用AI助手
此MCP服务器可以与支持模型上下文协议的AI助手(如Claude)一起使用。
与Claude Desktop一起使用
- 将服务器配置添加到Claude Desktop:
- 在 macOS 上:
~/Library/Application Support/Claude/claude_desktop_config.json - 在Windows上:
%APPDATA%/Claude/claude_desktop_config.json
- 在 macOS 上:
{
"mcpServers": {
"prometheus-mcp-server": {
"command": "/path/to/prometheus-mcp",
"env": {
"PROMETHEUS_HOST": "http://your-prometheus-instance:9090"
}
}
}
}
可用功能
服务器提供以下功能:
mcp__instant_query:执行即时PromQL查询mcp__range_query:在一段时间内执行范围PromQL查询mcp__get_series:按标签匹配查找系列mcp__get_label_values:获取特定标签的值mcp__get_metadata:获取指标的元数据mcp__get_targets:获取有关刮擦目标的信息mcp__get_alerts:获取有关警报的信息mcp__get_rules:获取有关记录和警报规则的信息mcp__get_status:获取Prometheus服务器的状态信息
发展
# Run tests
go test ./...
# Build the project
go build -o prometheus-mcp ./cmd/server
# Run end-to-end tests
./scripts/e2e_test.sh
# or
make e2e-test
预提交钩子
此存储库包含预提交挂钩,以确保代码质量。要启用它们,请运行:
git config core.hooksPath .githooks
您可以通过设置环境变量跳过预提交钩子中的端到端测试:
SKIP_E2E_TESTS=true git commit -m "Your commit message"
教程
关于如何将Prometheus MCP服务器与本地Prometheus实例和Ollama用于LLM集成的详细教程,请参阅 docs/tutorial.md 文件。
许可证
麻省理工学院
项目结构
├── cmd/ # Command-line applications
│ └── server/ # Main MCP server application
├── docs/ # Documentation
│ └── tutorial.md # Tutorial for using the server
├── examples/ # Example code
│ └── demo.go # Go demo showing MCP server usage
├── internal/ # Internal packages
│ └── server/ # Server implementation
├── pkg/ # Public packages
│ ├── mcp/ # MCP protocol implementation
│ └── prometheus/ # Prometheus client
├── scripts/ # Utility scripts
│ └── e2e_test.sh # End-to-end test script
└── .githooks/ # Git hooks
└── pre-commit # Pre-commit hook for quality checks
贡献
欢迎投稿!请按照以下步骤进行贡献:
- 分叉存储库
- 为您的功能或错误修复创建新分支
- 实施您的更改
- 为您的更改添加测试
- 确保所有测试通过(
make test和make e2e-test) - 提交您的更改(预提交钩子将运行质量检查)
- 推到您的分支
- 创建拉取请求
代码的风格
此项目遵循标准的Go编码约定。请确保您的代码:
- 格式为
go fmt - 通行证
go vet - 有适当的评论和文件
- 包括对新功能的测试
报告问题
如果您发现错误或有功能请求,请使用以下信息创建问题:
- 清晰、描述性的标题
- 问题或功能请求的详细描述
- 重现问题的步骤(针对错误)
- 预期行为
- 实际行为
- 环境信息(操作系统、Go版本、Prometheus版本)
