Skip to main content
Glama
driosalido
by driosalido

🚨 Karma MCP Server

License: MIT Python 3.11+ MCP Protocol Docker Support Just

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]

Related MCP server: OpenTelemetry MCP Server

🎯 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

  1. 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 platforms
  1. Configure 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"
      }
    }
  }
}
  1. 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:8080
  1. Restart 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-mcp

Kubernetes 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

check_karma

Verify Karma connectivity

"Is Karma accessible?"

list_alerts

List all active alerts

"Show me all alerts"

get_alerts_summary

Statistical summary by severity/state

"Give me an alert summary"

get_alert_details

Detailed info about specific alert

"Details about KubePodCrashLooping"

list_clusters

List all K8s clusters with counts

"Which clusters have alerts?"

list_alerts_by_cluster

Filter by cluster

"Show teddy-prod alerts"

list_active_alerts

Show only active alerts

"What's currently firing?"

list_suppressed_alerts

Show silenced/inhibited

"What alerts are suppressed?"

get_alerts_by_state

Filter by state (active/suppressed/all)

"Show all suppressed alerts"

search_alerts

Search alerts by name pattern

"Find all OOM alerts"

silence_alert

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

prompts://alert-analysis

Alert Analysis

Comprehensive guidelines for troubleshooting common K8s alerts

prompts://incident-response

Incident Response

Escalation procedures and communication templates

prompts://kubernetes-context

K8s Context

Deep Kubernetes knowledge for alert interpretation

prompts://business-impact

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-setup

Task 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 info

Manual 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 install

Project 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_URL environment variable to your Karma instance

  • Troubleshooting: 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!

Available Tools

14 tools
check_karmaA

Check connection to Karma server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose all behavioral traits. It only states 'Check connection', leaving out details like read-only nature, expected response format, or behavior on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is appropriately sized for the tool's simplicity and front-loaded with the action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is mostly complete. However, it could hint at the type of result (e.g., success/failure) to aid agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. The description adds no parameter info because none exists, which is acceptable. It doesn't need to compensate for missing schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Check' and explicitly states the resource 'connection to Karma server'. It clearly distinguishes from sibling tools, which all relate to alerts or silences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., other health checks) or prerequisites. The description assumes the agent knows to call this before other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_silenceA

Create a new silence for specific alerts

Args: cluster: Target cluster name (e.g., 'teddy-prod') alertname: Name of the alert to silence duration: Duration of silence (e.g., '2h', '30m', '1d') comment: Comment explaining why the alert is being silenced matchers: Additional matchers in format 'key=value,key2=value2' (optional)

Returns: Silence creation result with silence ID

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterYes
alertnameYes
durationNo2h
commentNoSilenced via MCP
matchersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the creation behavior and return value (silence ID), but does not disclose side effects (e.g., duplicate handling) or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured docstring with Args and Returns sections. It is concise, front-loaded with the purpose, and every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and an output schema, the description covers parameter explanations and return value. It lacks edge cases and error handling, but is sufficient for basic usage given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaning for all five parameters, including examples for duration and format for matchers. This goes beyond the bare schema, though it could provide more detail on allowed values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a new silence for specific alerts', using a specific verb and resource. It distinguishes from sibling tools like delete_silence and list_silences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies usage by its name but lacks guidance on prerequisites or when not to use it, e.g., checking existing silences with list_silences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_silenceA

Delete (expire) an existing silence

Args: silence_id: ID of the silence to delete cluster: Cluster where the silence exists

Returns: Deletion result

ParametersJSON Schema
NameRequiredDescriptionDefault
silence_idYes
clusterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description indicates the operation is mutating ('delete / expire'), but lacks details on side effects, authorization needs, or error handling. Given no annotations, it provides basic transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very concise: a one-line summary followed by an Args section and Returns. No unnecessary words, and the structure is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation with two required parameters and no annotations, the description is adequate. It explains the action and parameters, and the output schema provides return info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description adds meaning by stating 'ID of the silence to delete' and 'Cluster where the silence exists', which goes beyond the schema's parameter names. However, no additional format or constraints are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Delete (expire) an existing silence', specifying the verb (delete) and resource (silence), and distinguishes itself from siblings like 'create_silence' and 'list_silences'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage when a silence needs to be removed, but no explicit guidance on when to use versus alternatives or prerequisites. It's straightforward for a delete operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alert_detailsC

Get detailed information about a specific alert

Args: alert_name: Name of the alert to get details for

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist. The description only states 'get detailed information', implying a read operation, but does not disclose side effects, permissions, rate limits, or failure modes. The output schema exists but behavior beyond that is opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (two sentences) but under-specified. It is concise but lacks sufficient detail. The structure is clear but the brevity hurts completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and an output schema, the description covers the basic purpose. However, it does not explain what 'detailed information' includes or any constraints (e.g., alert must exist). Completeness is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description merely restates the parameter name ('alert_name: Name of the alert to get details for') without adding type, constraints, or examples. Does not compensate for the schema's lack of description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'get detailed information' and a clear resource 'specific alert'. It distinguishes from siblings like 'get_alert_details_multi_cluster' and list tools. However, it doesn't explicitly differentiate itself when both single and multi-cluster versions exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings. No mention of prerequisites or context. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alert_details_multi_clusterA

Get detailed information about a specific alert across multiple clusters

Args: alert_name: Name of the alert to search for (e.g., 'KubePodCrashLooping') cluster_filter: Optional cluster name filter. If empty, searches all clusters.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_nameYes
cluster_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description only indicates a read operation ('Get detailed information') but lacks disclosure of behavior on missing alerts, performance implications, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the purpose. The Args section repeats some schema info, but overall efficient. Could be slightly tighter by avoiding redundant parameter descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed. The description covers core functionality and parameters. Missing explicit differentiation from sibling tool 'get_alert_details' reduces completeness slightly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the text compensates by explaining 'alert_name' as the name to search (with example) and noting 'cluster_filter' is optional. Slight lack of precision (e.g., matching format) but adds clear meaning beyond schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed information for a specific alert across multiple clusters. It distinguishes from sibling tools like 'get_alert_details' (which presumably targets a single cluster) and other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via parameter hints (cluster_filter optional, all clusters if empty) but does not explicitly specify when to prefer this tool over alternatives like 'get_alert_details'. No exclusions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alerts_by_stateC

Get alerts filtered by state (active, suppressed, or all)

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It does not disclose pagination, ordering, error handling for invalid states, or whether the output is limited. Only the filtering behavior is mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One-sentence description is concise and directly conveys purpose. While brief, it is not wasteful; every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema existing (though content not shown), the description covers basic purpose. However, given multiple sibling tools with overlapping functionality, more details on state parameter behavior and output would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds value by listing valid state values (active, suppressed, all). However, it does not explain format or behavior if value is invalid, and no enum constraint is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves alerts filtered by state, listing valid values (active, suppressed, all). It is specific and distinct from generic list tools, but could better differentiate from siblings like list_active_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like list_active_alerts or search_alerts_by_container. The description implies filter-by-state use case but lacks explicit when-to-use or when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alerts_summaryA

Get a summary of alerts grouped by severity and state

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It only states the output grouping, but fails to mention that it is a read-only operation, any scope (e.g., all alerts or filtered), or potential limitations. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is clear and directly states the tool's functionality without any fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple summary tool with no parameters and an output schema, the description is largely complete. It could mention whether the summary covers all alerts or a specific subset (e.g., time range), but the core purpose is well communicated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, so description does not need to add parameter information. Schema description coverage is 100% trivially. The description adds value by specifying grouping details. Baseline 4 for zero-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns a summary of alerts grouped by severity and state. The verb 'get' and resource 'summary of alerts' with specific grouping criteria distinguish it from sibling tools that list individual alerts or details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when an aggregate overview is needed, but does not explicitly state when to use this tool versus alternatives like list_alerts or get_alert_details. No 'when not to use' guidance or naming of siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_active_alertsA

List only active (non-suppressed) alerts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose all behavioral traits. It only states the filtering criterion (active only) without mentioning read-only nature, side effects, or any other behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence. Every word adds value and no unnecessary content exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema provided, the description covers the essential purpose. However, it lacks details about ordering, pagination, or scope limitations, but these are minor given the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is 100% (empty). The description adds meaning by specifying the output scope (active alerts), which is appropriate for a zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'active (non-suppressed) alerts', and it distinguishes from sibling tools like 'list_suppressed_alerts' and 'list_alerts'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching only active alerts, but it does not explicitly state when to use this over alternatives like 'list_alerts' or 'list_suppressed_alerts'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_alertsB

List all active alerts in Karma

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. Only states 'list', but no details on read-only nature, pagination, authentication, or definition of 'active'. Lacks depth beyond basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy, front-loaded with key action and object. Efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists but description gives no return details. With many siblings, more context (e.g., what 'active' means) would improve completeness. Adequate but minimal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema coverage is 100%. Description adds no extra meaning, but baseline for 0 params is 4. No contradiction or missing info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (list), resource (alerts), and scope (all active, in Karma). However, does not differentiate from siblings like list_active_alerts or get_alerts_by_state, which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings. Given many similar tools (list_active_alerts, get_alerts_by_state), explicit context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_alerts_by_clusterA

List alerts filtered by specific cluster

Args: cluster_name: Name of the cluster to filter by (e.g., 'teddy-prod', 'edge-prod')

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It implies a read-only operation but does not disclose pagination, ordering, limits, or whether it returns only active alerts. However, the output schema exists (signal indicates true), which partially compensates for missing behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the purpose. The Args section is somewhat redundant but includes useful examples. It could be more concise by integrating examples into the main sentence, but overall lacks unnecessary verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter) and presence of an output schema, the description is fairly complete. However, it misses context on sorting, pagination, error handling, and prerequisites (e.g., cluster must exist). Sibling tools suggest a rich ecosystem, so more guidance would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for the single parameter 'cluster_name'. The description adds examples ('e.g., 'teddy-prod', 'edge-prod''), providing concrete value beyond the schema's type and title, helping the agent understand valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List alerts filtered by specific cluster', providing a specific verb (List) and resource (alerts) with a distinct filter. It distinguishes from siblings like 'list_alerts' and 'list_active_alerts' by specifying the cluster filter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It does not mention scenarios where other tools (e.g., 'get_alerts_by_state', 'list_alerts') would be more appropriate, nor does it state any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_clustersA

List all available Kubernetes clusters in Karma

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only says it lists clusters. It doesn't disclose behavior like read-only nature, required permissions, or response structure. However, the presence of an output schema partially mitigates this by defining return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 6-word sentence, perfectly concise and front-loaded with the verb and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema, the description minimally but adequately covers purpose and scope. It could mention that the result is a list of cluster identifiers, but the output schema handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters; the schema coverage is 100%. The description does not need to add param information, so it meets the baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'available Kubernetes clusters', and the context 'in Karma'. It distinguishes itself from sibling tools which focus on alerts and silences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like list_alerts_by_cluster. It does not mention prerequisites or scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_silencesA

List all active silences across clusters or for a specific cluster

Args: cluster: Optional cluster name to filter silences (e.g., 'teddy-prod')

Returns: Formatted list of active silences with details

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It adds the 'active' qualifier and describes the return as 'formatted list with details', but omits authentication, rate limits, or error conditions. Basic behavior is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a front-loaded main sentence, followed by an Args/Returns structure. Every sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, parameter, and return value. With an output schema existing, the return is already defined. It is adequate for a simple list tool, though edge cases are not mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description explains the only parameter 'cluster' with purpose and an example value ('teddy-prod'), adding significant meaning beyond the schema's default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all active silences, with an optional cluster filter. The verb 'list' and resource 'active silences' are specific, and the tool is distinguished from siblings like 'list_suppressed_alerts' by name and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the optional cluster filter but does not explicitly state when to use this tool versus alternatives like 'create_silence' or 'check_karma'. Usage is implied but lacks explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_suppressed_alertsC

List only suppressed alerts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description should disclose behavioral details like pagination or the meaning of 'suppressed'. It does not. The output schema exists but is not referenced, leaving the agent without expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at three words, but it may be too minimal. It is front-loaded and not verbose, though some elaboration would be beneficial.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and the existence of an output schema, the description is still incomplete. It does not clarify what constitutes a suppressed alert or how results are returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With no parameters and full schema coverage (0 params), the description adds no additional meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'suppressed alerts', distinguishing it from siblings like 'list_active_alerts'. However, it does not define what 'suppressed' means, which could cause ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'list_alerts_by_state' or 'list_active_alerts'. The description gives no context about prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_alerts_by_containerA

Search for alerts by container name across multiple clusters

Args: container_name: Name of the container to search for cluster_filter: Optional cluster name filter (e.g., 'teddy-prod', 'edge-prod'). If empty, searches all clusters.

ParametersJSON Schema
NameRequiredDescriptionDefault
container_nameYes
cluster_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It states the tool searches across multiple clusters, suggests read-only behavior (search), but does not explicitly confirm read-only, nor mention side effects, rate limits, or authentication. Some context is given but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured as a docstring, with a brief summary sentence followed by parameter details. It uses minimal words and front-loads the purpose, with no irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool, the description covers the core behavior and parameter roles. An output schema exists, so return values are not required. However, it lacks details on pagination or result limits, which could be relevant for a search tool. Overall, mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning the schema only provides names and types. The description adds clear explanations for both parameters: container_name as 'Name of the container to search for' and cluster_filter as 'Optional cluster name filter...'. This significantly adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Search for alerts by container name across multiple clusters.' It specifies the verb 'Search', the resource 'alerts', and the method 'by container name', which distinguishes it from sibling tools like 'list_alerts' or 'get_alerts_by_state'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It only describes the function and parameters, with a note on cluster_filter being optional, but lacks when-not or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a distinct purpose: health check, silence management, alert listing/filtering by various criteria, cluster listing, and container search. No overlapping ambiguity.

Naming Consistency5/5

All tools use consistent lowercase underscore-separated verb_noun naming (e.g., create_silence, list_alerts, get_alert_details). No mixed conventions.

Tool Count5/5

14 tools cover all necessary operations for a Karma alert management server: connection check, silence CRUD, alert listing with various filters, and cluster info. Well-scoped.

Completeness5/5

The tool set covers the full range of Karma operations: checking server health, managing silences (create/delete), listing and filtering alerts by state, cluster, container, and getting details. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to query Prometheus metrics and Loki logs for intelligent alert investigation and troubleshooting. Provides service discovery, metric querying, log searching, and correlation tools to help identify root causes of issues.
    9
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with and manage Kubernetes clusters, supporting operations on pods, deployments, services, configmaps, secrets, namespaces, metrics, and events with built-in safety features for destructive actions.
    9
    18
    1
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables Claude AI to interact with Prometheus Alertmanager for alert retrieval, silence management, and alert grouping through natural language.
    6
    68
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/driosalido/mcp-karma'

If you have feedback or need assistance with the MCP directory API, please join our Discord server