Provides tools for monitoring and analyzing Kubernetes cluster alerts through Karma Alert dashboard, including listing alerts by cluster, filtering by severity and state, and retrieving detailed alert information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Karma MCP Servershow me all critical alerts in production"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π¨ Karma MCP Server
Bring AI-powered intelligence to your Kubernetes alerts. Karma MCP Server enables Claude to directly interact with your Karma Alert Dashboard, providing natural language queries, analysis, and management of Prometheus/Alertmanager alerts.
π What is This?
Karma MCP Server is a bridge that connects Claude Desktop (or any MCP-compatible client) to your Karma Alert Dashboard. This allows you to:
π£οΈ Ask questions in natural language about your alerts: "How many critical alerts are there in production?"
π Search and filter across multiple Kubernetes clusters simultaneously
π Get instant insights about alert patterns and trends
π Accelerate incident response with AI-powered alert analysis
π Automate routine checks without leaving your conversation
Example Interactions with Claude
You: "Show me all critical alerts in the production cluster"
Claude: [Lists and analyzes critical alerts with context]
You: "Which pods are crash looping?"
Claude: [Shows KubePodCrashLooping alerts with namespace, pod details, and suggestions]
You: "Search for OOM killed containers across all clusters"
Claude: [Performs multi-cluster search and provides memory optimization tips]π― Key Features
Core Alert Management
β Real-time alert listing with severity, state, and cluster information
β Multi-cluster support - search across all your Kubernetes clusters at once
β Smart filtering by cluster, namespace, severity, and alert state
β Detailed alert inspection with annotations, labels, and runbook links
β Statistical summaries showing alert distribution and trends
Advanced Capabilities
π Alert name search - Search specific alerts by pattern matching
π State filtering - Filter by active, suppressed, or all states
π Cross-cluster analysis - Compare alert patterns between environments
Integration Features
π MCP Protocol support for AI assistants
π³ Docker support with multi-architecture images
βΈοΈ Kubernetes-ready deployment
π¦ Installation
Quick Start with Claude Desktop
Install via UV (recommended)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/driosalido/karma-mcp.git
cd karma-mcp
uv sync --all-extras
# Optional: Install Just task runner for easier development
brew install just # macOS
# See: https://github.com/casey/just#installation for other platformsConfigure Claude Desktop, Claude Code, or Cursor
Local Installation (Stdio Mode)
Add to your MCP client configuration:
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"karma": {
"command": "uv",
"args": ["run", "python", "-m", "karma_mcp.server"],
"cwd": "/path/to/karma-mcp",
"env": {
"KARMA_URL": "http://your-karma-instance:8080"
}
}
}
}Claude Code (add to project's claude_desktop_config.json or global config):
{
"mcpServers": {
"karma": {
"command": "uv",
"args": ["run", "python", "-m", "karma_mcp.server"],
"cwd": "/path/to/karma-mcp",
"env": {
"KARMA_URL": "http://your-karma-instance:8080"
}
}
}
}Cursor (via MCP extension or custom configuration):
{
"mcpServers": {
"karma": {
"command": "uv",
"args": ["run", "python", "-m", "karma_mcp.server"],
"cwd": "/path/to/karma-mcp",
"env": {
"KARMA_URL": "http://your-karma-instance:8080"
}
}
}
}Remote HTTP Server (Alternative)
If you have deployed the HTTP server version, use SSE transport:
{
"mcpServers": {
"karma": {
"transport": {
"type": "sse",
"url": "https://your-karma-mcp-server.com/mcp/sse"
}
}
}
}Connect to your Karma instance
# If Karma is in Kubernetes
kubectl port-forward svc/karma 8080:80 -n monitoring
# Or set your Karma URL directly
export KARMA_URL=http://your-karma-instance:8080Restart Claude Desktop and start asking about your alerts!
Docker Installation
# Using pre-built image
docker run -d \
-e KARMA_URL=http://your-karma:8080 \
-p 8000:8000 \
driosalido/karma-mcp:latest
# Or build locally
docker build -f docker/Dockerfile -t karma-mcp .
docker run -d -e KARMA_URL=http://karma:8080 karma-mcpKubernetes Deployment
# Deploy using Docker image
kubectl create deployment karma-mcp \
--image=driosalido/karma-mcp:latest
kubectl set env deployment/karma-mcp \
KARMA_URL=http://karma.monitoring:80π οΈ Available MCP Tools
The following tools are available for Claude to use:
Tool | Description | Example Query |
| Verify Karma connectivity | "Is Karma accessible?" |
| List all active alerts | "Show me all alerts" |
| Statistical summary by severity/state | "Give me an alert summary" |
| Detailed info about specific alert | "Details about KubePodCrashLooping" |
| List all K8s clusters with counts | "Which clusters have alerts?" |
| Filter by cluster | "Show teddy-prod alerts" |
| Show only active alerts | "What's currently firing?" |
| Show silenced/inhibited | "What alerts are suppressed?" |
| Filter by state (active/suppressed/all) | "Show all suppressed alerts" |
| Search alerts by name pattern | "Find all OOM alerts" |
| Create alert silence | "Silence KubePodCrashLooping for 2h" |
π§ AI-Enhanced Analysis
The Karma MCP Server includes specialized prompts that help Claude provide more valuable alert analysis:
π Available Prompt Resources
Resource | Purpose | Description |
| Alert Analysis | Comprehensive guidelines for troubleshooting common K8s alerts |
| Incident Response | Escalation procedures and communication templates |
| K8s Context | Deep Kubernetes knowledge for alert interpretation |
| Business Impact | Prioritization framework based on service criticality |
π― Enhanced Capabilities
With these prompts, Claude can:
π Correlate related alerts across clusters and namespaces
π¨ Prioritize by business impact (prod > staging > dev)
π§ Suggest specific actions for common alert types
π Provide context about Kubernetes resource relationships
π Guide incident response with escalation procedures
π API Integration
The server runs as an MCP server using stdio protocol for communication with Claude Desktop. For programmatic access, you can call the MCP tools directly from your Python code:
from karma_mcp.server import list_alerts, get_alerts_summary
# Example usage
alerts = await list_alerts()
summary = await get_alerts_summary()π§ͺ Testing
# Run unit tests
uv run pytest tests/unit/
# Run with coverage
uv run pytest --cov=karma_mcp tests/
# Run integration tests (requires Karma instance)
KARMA_URL=http://localhost:8080 uv run pytest tests/integration/
# Manual testing with real Karma server
KARMA_URL=http://localhost:8080 uv run python -c "
import asyncio
from karma_mcp.server import list_alerts, get_alerts_summary
asyncio.run(list_alerts())
"π§ Development
Setting up the development environment
# Clone the repository
git clone https://github.com/driosalido/karma-mcp.git
cd karma-mcp
# Install dependencies (includes dev dependencies)
uv sync --all-extras
# Install Just task runner (modern alternative to Make)
# macOS
brew install just
# Other platforms: https://github.com/casey/just#installation
# Set up development environment
just dev-setupTask Runner: Just vs Make
This project uses Just as the modern task runner (alternative to Make). Key benefits:
β No tab/space issues (common Make problem)
β Better variable handling and environment integration
β Cleaner syntax and cross-platform compatibility
β Built-in command listing with
justβ Modern features like default values and string interpolation
# See all available commands
just
# Common development tasks
just test-unit # Run unit tests (78 tests)
just lint # Code linting
just format # Code formatting
just check # All quality checks
just test-with-karma # Test with real Karma server
just docker-build-local # Build Docker image
just version # Show version infoManual Development Commands
If you prefer direct commands or don't have Just installed:
# Run tests
uv run pytest tests/unit/ -v
# Code quality
uv run ruff check src/ tests/
uv run ruff format src/ tests/
# Install pre-commit hooks
uv run pre-commit installProject Structure
karma-mcp/
βββ src/karma_mcp/
β βββ server.py # Main MCP server with all tools
βββ tests/
β βββ unit/ # Unit tests
β βββ integration/ # Integration tests
β βββ fixtures/ # Test data
βββ docker/
β βββ Dockerfile # Docker configuration
βββ scripts/
β βββ test_karma.py # Integration testing utilities
βββ justfile # Modern task runner (preferred)
βββ Makefile # Traditional Make tasks (legacy)
βββ pyproject.toml # Project dependencies and config
βββ .github/workflows/ # CI/CD pipelinesπ Real-World Use Cases
Daily Operations
Morning standup: "Show me all critical alerts from the last 24 hours"
Shift handover: "Summarize current active alerts by cluster"
Quick checks: "Are there any database-related alerts?"
Incident Response
Investigation: "Find all alerts related to the payment service"
Pattern detection: "Show me crash loops in the API namespace"
Impact analysis: "Which clusters are affected by high CPU throttling?"
Capacity Planning
Resource issues: "List all OOM killed containers this week"
Scaling decisions: "Show pods with high memory pressure"
Performance: "Find all high latency alerts"
π€ Contributing
We welcome contributions! Please see our Contributing Guide for details.
Areas we'd love help with:
π Historical trending and analytics
π Authentication support for secured Karma instances
π Additional language support for alert descriptions
π± Slack/Teams notification integrations
π€ AI-powered alert correlation and root cause analysis
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Karma Alert Dashboard - The excellent alert dashboard that makes this possible
Model Context Protocol - Anthropic's protocol for AI tool integration
FastMCP - Simplified MCP server development
The Kubernetes and Prometheus communities for their amazing monitoring ecosystem
π Documentation
Configuration: Set
KARMA_URLenvironment variable to your Karma instanceTroubleshooting: Check the GitHub Issues for common problems
Examples: See the "Real-World Use Cases" section above for query examples
π Roadmap
Completed β
Core alert querying and filtering
Multi-cluster support
State-based filtering (active/suppressed)
Docker containerization
CI/CD with GitHub Actions
Alert search by pattern
Alert silencing capability
In Progress π¨
Alert acknowledgment
Silence management (list/delete)
Future Plans π
Historical data and trending
Alert correlation analysis
Grafana integration
Authentication for secured Karma instances
Need help? Open an issue or reach out on GitHub Discussions
Like this project? Give it a β on GitHub!