Skip to main content
Glama
driosalido
by driosalido

list_silences

View active alert silences across Kubernetes clusters or filter by specific cluster to manage notification suppression in Karma Alert dashboard.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
clusterNo

Implementation Reference

  • The `list_silences` tool implementation which fetches silences from the Karma API, optionally filters by cluster, and formats the output.
    async def list_silences(cluster: str = "") -> str:
        """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
        """
        try:
            async with httpx.AsyncClient() as client:
                response = await client.post(
                    f"{KARMA_URL}/alerts.json",
                    json={},
                    headers={"Content-Type": "application/json"},
                    timeout=10.0,
                )
    
                if response.status_code == 200:
                    data = response.json()
                    silences = data.get("silences", {})
    
                    if not silences:
                        return "No active silences found"
    
                    # Filter by cluster if specified
                    if cluster:
                        cluster_lower = cluster.lower()
                        filtered_silences = {}
                        for cluster_name, cluster_silences in silences.items():
                            if cluster_lower in cluster_name.lower():
                                filtered_silences[cluster_name] = cluster_silences
                        silences = filtered_silences
    
                        if not silences:
                            return f"No active silences found for cluster: {cluster}"
    
                    # Format output
                    result = f"Active Silences{f' in {cluster}' if cluster else ''}\n"
                    result += "=" * 50 + "\n\n"
    
                    total_count = 0
                    for cluster_name, cluster_silences in silences.items():
                        if cluster_silences:
                            result += f"šŸ“ Cluster: {cluster_name}\n"
                            result += f"   Silences: {len(cluster_silences)}\n\n"
    
                            for silence_id, silence in list(cluster_silences.items())[
                                :5
                            ]:  # Limit to 5 per cluster
                                total_count += 1
                                result += f"  šŸ”• Silence ID: {silence_id[:8]}...\n"
                                result += f"     Created by: {silence.get('createdBy', 'unknown')}\n"
                                result += f"     Comment: {silence.get('comment', 'No comment')}\n"
                                result += (
                                    f"     Starts: {silence.get('startsAt', 'unknown')}\n"
                                )
                                result += f"     Ends: {silence.get('endsAt', 'unknown')}\n"
    
                                # Show matchers
                                matchers = silence.get("matchers", [])
                                if matchers:
                                    result += "     Matchers:\n"
                                    for matcher in matchers[:3]:  # Show first 3 matchers
                                        name = matcher.get("name", "")
                                        value = matcher.get("value", "")
                                        if len(value) > 50:
                                            value = value[:47] + "..."
                                        result += f"       - {name}: {value}\n"
                                result += "\n"
    
                            if len(cluster_silences) > 5:
                                result += f"   ... and {len(cluster_silences) - 5} more silences\n\n"
    
                    result += f"\nšŸ“Š Total: {total_count} active silence{'s' if total_count != 1 else ''}"
                    return result
                else:
                    return f"Error fetching silences: code {response.status_code}"
    
        except Exception as e:
            return f"Error connecting to Karma: {str(e)}"

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