Skip to main content

kube-assistant-mcp

Agentic Kubernetes troubleshooting — as a CLI and as an MCP server.

kube-assistant-mcp connects a local LLM (via Ollama) or a hosted one (OpenAI-compatible) to your Kubernetes cluster. It scans for failing Pods (CrashLoopBackOff, OOMKilled, ImagePullBackOff, ...), correlates logs + events, explains the root cause in plain language, and proposes concrete, runnable fixes — or generates ready-to-use Deployment/Helm manifests.

It ships two ways to use it:

  • CLIkube-assistant scan / diagnose / fix / generate
  • MCP server — the same capabilities exposed as tools for Cursor or Claude Desktop, so an AI agent can diagnose and (with your explicit confirmation) fix your cluster in natural language.
$ kube-assistant scan -n production
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Namespace  ┃ Pod          ┃ Issue            ┃ Restarts ┃ Severity ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ production │ api-7f8c9d   │ CrashLoopBackOff │ 14       │ critical │
│ production │ worker-2     │ OOMKilled        │ 3        │ high     │
└────────────┴──────────────┴──────────────────┴──────────┴──────────┘

Why

Debugging a failing Pod is a repetitive, mechanical loop: describelogs --previousget events → guess → fix. This tool automates the mechanical part and hands the LLM only the relevant, structured context it needs to actually help — instead of dumping a whole terminal session into a chat window.

Features

  • Detection — classifies container states (waiting/terminated reasons) into known failure types with a severity score.
  • Log analysis — regex-based pattern matching for common root causes (OOM, connection refused, DNS failure, missing env vars, permission errors, bad config, port conflicts, unhandled exceptions) — works even with the LLM turned off.
  • LLM diagnosis — sends a compact, structured JSON payload (issue + log tail + recent events) to Ollama or an OpenAI-compatible endpoint and gets back a plain-language explanation plus a list of concrete fixes.
  • Guarded auto-fix — every mutating action (pod restart, resource patch) is dry-run by default and requires an explicit confirm=True / --yes before it touches the cluster.
  • Manifest generation — emits a Deployment+Service YAML pair, or a minimal, valid Helm chart skeleton.
  • MCP server — built with FastMCP; drop it into Cursor or Claude Desktop and diagnose your cluster conversationally.

Installation

pip install kube-assistant-mcp

Requires Python 3.10+ and a working kubeconfig (the same one kubectl uses).

For LLM-powered diagnosis, either:

  • run Ollama locally (ollama pull llama3.1), or
  • export OPENAI_API_KEY and pass --llm-backend openai.

CLI usage

# List every failing pod in the cluster (or one namespace)
kube-assistant scan -n production

# Deep-dive: logs + events + LLM root-cause explanation + fix suggestions
kube-assistant diagnose api-7f8c9d -n production

# Same, but skip the LLM call and only use the rule-based fixes
kube-assistant diagnose api-7f8c9d -n production --no-llm

# Preview a fix (default: dry-run, no cluster mutation)
kube-assistant fix api-7f8c9d -n production --strategy restart

# Actually apply it (still asks for interactive confirmation unless -y)
kube-assistant fix api-7f8c9d -n production --strategy restart --no-dry-run

# Raise a Deployment's memory limit
kube-assistant fix api-7f8c9d -n production --strategy memory-patch \
    --deployment api --memory-limit 1Gi --no-dry-run

# Generate a plain manifest or a Helm chart
kube-assistant generate myapp --image myrepo/myapp:1.4.0 --kind manifest
kube-assistant generate myapp --image myrepo/myapp:1.4.0 --kind helm

Using it as an MCP server (Cursor / Claude Desktop)

Start it directly:

kube-assistant serve

Or point your MCP client config at it. Example for Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "kube-assistant": {
      "command": "kube-assistant",
      "args": ["serve"]
    }
  }
}

Exposed tools: list_failing_pods, get_pod_logs, diagnose_pod, apply_fix (dry-run by default, needs confirm=true), generate_manifest.

Configuration

Env var Default Purpose
KUBE_ASSISTANT_LLM_BACKEND ollama ollama or openai
KUBE_ASSISTANT_LLM_MODEL llama3.1 Model name
KUBE_ASSISTANT_LLM_BASE_URL http://localhost:11434 Ollama endpoint
OPENAI_API_KEY Required when backend=openai

Architecture

CLI (Typer) ──┐
              ├──> K8sClient (kubernetes python client)
MCP (FastMCP)─┘         │
                         ▼
                  LogAnalyzer (regex patterns)
                         │
                         ▼
              RuleBasedFixer  +  LLMClient (Ollama / OpenAI)
                         │
                         ▼
                 AutoFixer (dry-run gated apply)
                         │
                         ▼
                ManifestGenerator (YAML / Helm)

Development

git clone https://github.com/yonatani94/kube-assistant-mcp
cd kube-assistant-mcp
pip install -e ".[dev]"
pytest

The test suite mocks the Kubernetes API and the LLM backend, so pytest runs with no cluster and no network access.

Safety notes

This tool can delete Pods and patch Deployments. It is designed defensively:

  • Every write path defaults to dry_run=True.
  • A mutation only happens when the caller passes both dry_run=False and confirm=True (CLI: --no-dry-run + interactive confirm or --yes; MCP: confirm=true).
  • It never deletes namespaces, PVCs, or Secrets.

Still, review the generated plan before confirming, especially in production namespaces.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kube_assistant_mcp-0.1.0.tar.gz (28.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kube_assistant_mcp-0.1.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file kube_assistant_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: kube_assistant_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 28.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for kube_assistant_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 43cf749a903986fbe3159f5b70e41662b3e386f68e31c795f978dd6cee384f5c
MD5 778c752a50b9b3583c99404a25cbabcf
BLAKE2b-256 1ae59f36b05a7b8f50b324b96db537fe502755612390be230d41327fa597bbb6

See more details on using hashes here.

File details

Details for the file kube_assistant_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kube_assistant_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e89c71b6d31fed51d7aab1b3501a1b6e8553f764532d5ee380412487539bf8b7
MD5 c677d413598f9c940f1e3f097e257973
BLAKE2b-256 76e28812e135d3fe64117cab3f81507533fa8396a8fbbbc84f56380fc69b571e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page