Every time something looked off in production, I'd switch between 4 tabs:
Prometheus → check metrics, kubectl → check pods, Grafana → check dashboards, terminal → check logs.
So I built MCP DevOps Pack — 3 MCP servers that let Claude Desktop talk to your infra directly.
## What's included
| Package | What it does |
|---------|-------------|
| @peachjed/mcp-prometheus | PromQL queries, firing alerts, rule inspection |
| @peachjed/mcp-kubernetes | List pods, get logs, describe resources, watch events |
| @peachjed/mcp-grafana | Search dashboards, list datasources, check alert states |
## Install
bash
npm install -g @peachjed/mcp-prometheus @peachjed/mcp-kubernetes @peachjed/mcp-grafana
Configure Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"prometheus": {
"command": "mcp-prometheus",
"env": { "PROMETHEUS_URL": "http://localhost:9090" }
},
"kubernetes": {
"command": "mcp-kubernetes"
},
"grafana": {
"command": "mcp-grafana",
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_TOKEN": "your-token"
}
}
}
}
What you can ask Claude
- "What's the current CPU usage across all nodes?"
- "Show me the last 50 lines from pod api-server-xyz in production"
- "Are there any firing alerts right now?"
- "List all dashboards in the Infrastructure folder"
How it works
Each server is a small TypeScript process that runs locally via stdio. Claude Desktop spawns it automatically when
needed. The Kubernetes server uses your existing ~/.kube/config — no extra auth setup.
Stack
- TypeScript + @modelcontextprotocol/sdk
- @kubernetes/client-node for the k8s server
- Prometheus and Grafana via their HTTP APIs
Source
GitHub: https://github.com/Jedsadakorn-Suma/mcp-devops-pack
npm: @peachjed/mcp-prometheus, @peachjed/mcp-kubernetes, @peachjed/mcp-grafana
Feedback welcome — especially if you use a different observability stack.
Top comments (0)