ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

K8gentS — Kubernetes RCA MCP Server

โดย JDoorninkรุ่น 0.1.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.JDoornink/k8gents

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Kubernetes RCA agent that sandboxes its own AI with OPA Gatekeeper. MCP-ready for any client.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เครื่องมือนักพัฒนา
  • ต้องใส่ค่าเหล่านี้: AI_API_KEY

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • Dockerติดตั้ง Docker ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "k8gents": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AI_API_KEY",
        "-e",
        "AI_MODEL",
        "-e",
        "KUBECONFIG",
        "docker.io/jdoornink/k8gents:0.1.1"
      ],
      "env": {
        "AI_API_KEY": "ใส่ค่าของคุณ",
        "AI_MODEL": "ใส่ค่าของคุณ",
        "KUBECONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add k8gents --env AI_API_KEY='ใส่ค่าของคุณ' --env AI_MODEL='ใส่ค่าของคุณ' --env KUBECONFIG='ใส่ค่าของคุณ' -- docker run -i --rm -e AI_API_KEY -e AI_MODEL -e KUBECONFIG docker.io/jdoornink/k8gents:0.1.1

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "k8gents": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AI_API_KEY",
        "-e",
        "AI_MODEL",
        "-e",
        "KUBECONFIG",
        "docker.io/jdoornink/k8gents:0.1.1"
      ],
      "env": {
        "AI_API_KEY": "ใส่ค่าของคุณ",
        "AI_MODEL": "ใส่ค่าของคุณ",
        "KUBECONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "k8gents": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AI_API_KEY",
        "-e",
        "AI_MODEL",
        "-e",
        "KUBECONFIG",
        "docker.io/jdoornink/k8gents:0.1.1"
      ],
      "env": {
        "AI_API_KEY": "ใส่ค่าของคุณ",
        "AI_MODEL": "ใส่ค่าของคุณ",
        "KUBECONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • AI_API_KEY ความลับ จำเป็น env
    Google Gemini API key for LLM-powered root cause analysis
  • AI_MODEL env
    Gemini model to use (default: gemini-2.5-pro)
  • KUBECONFIG env
    Path to kubeconfig file. Omit to use in-cluster config or ~/.kube/config automatically.

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub JDoornink ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi

  • ดาวมากกว่า 0% ของอีก 5550 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 10% ของอีก 5550 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5550 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

K8gentS — Kubernetes RCA MCP Server ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: AI_API_KEY

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry 7 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

GitHub

server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้

โดย githubใช้กันมาก★ 34.2Kอัปเดต 5 วันที่ผ่านมา

บนเครื่องหรือคลาวด์

Desktop Commander

MCP server for terminal commands, file operations, and process management

โดย wonderwhy-erใช้กันมาก↓ 709.6K/สัปดาห์★ 10.2Kอัปเดต 17 วันที่ผ่านมา

รันบนเครื่อง

Cloudflare MCP

Cloudflare MCP servers

โดย cloudflareใช้กันมาก★ 4.4Kอัปเดต 14 เดือนที่ผ่านมา

รันบนคลาวด์✓ mcp.cloudflare.com

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

K8gentS ☸️🤖

A Human-in-the-Loop RCA Agent for Kubernetes — LLM Diagnosis, OPA-Bounded Remediation


📖 Overview

K8gentS is a Kubernetes diagnostic agent built around a single premise: an LLM is well-suited to *reason* about cluster failures, but unfit to *act* on them unsupervised. It continuously watches the cluster event stream, runs Warning-class events through a Gemini-powered root cause analysis (RCA) pipeline, and surfaces the top hypotheses with resolution steps to Slack. Every remediation is human-in-the-loop (HITL) — a reviewer approves or rejects via interactive buttons before anything mutates. Approved fixes execute inside an ephemeral Job whose blast radius is bounded by an OPA Gatekeeper admission policy at the API server, independent of RBAC. The reasoning is non-deterministic by design; the controls around it are not.

The goal: reduce MTTR on diagnosable failures without handing an LLM a kubectl apply.


🧠 The Hard Problem

Building the Kubernetes side of this is straightforward. The real challenge is making a diagnostic layer trustworthy when the engine behind it is fundamentally non-deterministic.

Traditional observability is built on guarantees. Alerts fire on known thresholds. Dashboards show reproducible numbers. Logs return consistent answers to the same query. SRE success depends on that predictability — it's what makes incident response repeatable and on-call sustainable.

An LLM-driven diagnostic layer breaks that contract. The same pod failure can produce three different plausible explanations across three different runs. Each may be coherent. Each may even be correct under different assumptions. But "plausible" is not the same as "right," and for infrastructure, the gap between them is where outages live.

Some of the specific problems I've been working through while building K8gentS:

1. Confidence scoring with an unbounded output space. The agent returns top-3 root causes with confidence metrics, but confidence in what, exactly? The model is not selecting from a fixed set of known failure modes — it's generating free-form hypotheses. A calibrated confidence score needs a reference distribution, and the distribution here is whatever the model happened to produce this run.

2. When to trust reasoning vs. fall back to deterministic checks. - THE ART Some failures (CrashLoopBackOff, OOMKilled) have well-traveled diagnostic paths and a deterministic check will be right every time. Others benefit from the model's ability to interpolate across signals. Drawing that line — and doing it at runtime — is non-trivial and where the art really lies.

3. Evaluating an agent that's supposed to find failures you didn't anticipate. The standard ML evaluation approach assumes you know what "correct" looks like. For a diagnostic agent, part of the value is catching novel failure modes — by definition, failures you couldn't pre-enumerate. So how do you decide what is wrong and what is right?

4. The "Tool in the Cluster" problem. How do you monitor the monitor? Currently the service is set to run as a service in the cluster, but what if the service itself causes resource exhaustion, or is experiencing failures itself? How can you identify if the service itself is the cause of your issue?

5. Determining the right model for this problem. With so many other types of Machine Learning models out there, is a non-deterministic large language model really the right choice or is another model better suited for infrastructure type problems?

These are the questions I'm actively working on. If you've solved any of them — or have a sharper framing than I've got — I'd like to hear it.


✨ Core Responsibilities

  1. Continuous Monitoring: Watches the cluster for error events, crashed pods, CrashLoopBackOff states, OOMKilled events, and other failure conditions such as Connectivity/DNS, Database Deadlock, or Secret/Config Missing.
  2. Automated Root Cause Analysis (RCA): Upon detecting an anomaly, it securely fetches relevant context (recent logs, pod descriptions, event history), sanitizes it of secrets/PII, and sends this context to an LLM-based reasoning engine.
  3. Notification & Confidence Scoring: Notifies your designated Slack communication channel via Socket Mode with:
  • A descriptive summary of the error.
  • The top 3 possible root causes, each with an associated confidence metric.
  • Step-by-step resolution instructions.
  1. Interactive Remediation (Opt-in): Prompts the user directly in Slack with interactive buttons: *"Approve Fix"* or *"I'll do it manually"*.
  • Default Posture - Read Only: The agent is strictly READ-ONLY, making it exceptionally secure by default.

🛠️ Architecture & Security

The agent is designed so that each layer independently limits blast radius — not as redundancy for its own sake, but because no single control is sufficient when the reasoning engine is non-deterministic.

LayerMechanismWhat it prevents
Pod securityrunAsNonRoot, read-only filesystem, all Linux capabilities droppedContainer escape, privilege escalation
RBACAgent pod is strictly read-only; write verbs live only on k8gent-executor-saAgent compromise → cluster mutation
Ephemeral executorShort-lived Jobs via k8gent-executor-sa; ttlSecondsAfterFinished=120Persistent foothold after remediation
OPA GatekeeperRego policy enforced at the API server admission layerExecutor escaping its scope, even if RBAC is misconfigured
Log sanitizationRegex sweeper strips IPs, JWTs, API keys, emails before LLM callSecrets exfiltration via LLM prompt
Rate limitingHourly circuit breakers and event debouncingNoise-driven API budget exhaustion
Ingress-free commsSlack Socket Mode; no exposed endpoints or Ingress rulesInbound attack surface

The OPA Gatekeeper policy (defined in deploy/helm/k8gents/templates/opa-gatekeeper/) explicitly blocks the executor service account from modifying serviceAccountName, enabling hostNetwork or hostPID, operating inside kube-system, or mutating any resource kind other than pods and deployments — enforced directly at the Kubernetes API admission layer, independent of RBAC.


🚀 Deployment

K8gentS ships as a Helm chart. OPA Gatekeeper is a declared chart dependency — the security sandbox installs automatically alongside the agent.

Prerequisites
  • Kubernetes v1.20+, Helm 3
  • kubectl authenticated to the target cluster
  • A Google Gemini API key (AI_API_KEY)
  • A Slack app with Socket Mode enabled (generates SLACK_BOT_TOKEN starting xoxb- and SLACK_APP_TOKEN starting xapp-)
  • Slack channel ID (SLACK_CHANNEL_ID) and a comma-separated list of approver Slack user IDs (ALLOWED_APPROVERS)
1. Configure Slack
  1. Create a Slack App at api.slack.com.
  2. Enable Socket Mode → generates an App-Level Token (xapp-...).
  3. Enable Interactive Components.
  4. Add chat:write and chat:write.public OAuth scopes → generates a Bot Token (xoxb-...).
  5. Invite the bot to your alert channel and copy the Channel ID from channel settings.
2. Build and Push the Agent Image
docker build -t your-registry/k8gent:latest .

docker push your-registry/k8gent:latest

Update image.repository in deploy/helm/k8gents/values.yaml to match your registry path.

3. Install via Helm
# Fetch chart dependencies (downloads OPA Gatekeeper)

helm dependency update deploy/helm/k8gents

Install — secrets are injected at deploy time, never stored in source

helm install k8gents deploy/helm/k8gents \ --namespace k8gent-system \ --create-namespace \ --set secrets.aiApiKey="YOUR_GEMINI_KEY" \ --set secrets.slackBotToken="xoxb-..." \ --set secrets.slackAppToken="xapp-..." \ --set secrets.slackChannelId="C12345678" \ --set secrets.allowedApprovers="U123456,U789012"

To disable the OPA sandbox (if your cluster already runs Gatekeeper with its own policies):

--set sandbox.enabled=false --set gatekeeper.enabled=false
4. Verify Installation
kubectl logs -l app=k8gents -n k8gent-system -f

You should see the watcher connect to the cluster API and the Slack Socket Mode connection initialize.


⚙️ Configuration

Key environment variables (set via --set agent.* in Helm, or directly if running locally):

VariableDefaultDescription
WATCH_NAMESPACESallComma-separated namespaces to watch, or all for cluster-wide
AI_MODELgemini-2.5-proAny model name supported by the Google GenAI SDK
LOG_LEVELINFOPython logging level
REMEDIATION_MODEapiapi (Kubernetes client, safe in-cluster) or subprocess (kubectl, local dev only)

Changing AI_MODEL requires no code changes — the agent routes all LLM calls through the configured model name dynamically.


🔮 What's Next

What's implemented and working:

  • Watch → diagnose → Slack notification with confidence scoring
  • Human-gated remediation via Slack interactive buttons
  • Ephemeral Job executor with OPA Gatekeeper admission sandbox
  • MCP server for on-demand diagnostics from AI clients — published on the MCP Registry as io.github.JDoornink/k8gents
  • Helm chart with Gatekeeper as a hard dependency

What's genuinely unsolved:

  • Confidence calibration — the current scoring reflects the model's self-reported certainty, which doesn't reliably correlate with empirical accuracy.
  • Deterministic routing — canonically diagnosable failures (CrashLoopBackOff, OOMKilled) shouldn't route through the LLM at all. Building a reliable runtime classifier for "known answer" vs. "needs reasoning" is the next structural change.
  • Evaluation — regression testing an agent designed to catch novel failures requires a framework that doesn't yet fully exist for this problem domain. Synthetic failure injection (chaos engineering) is the most promising direction, but coverage is inherently limited.
  • Post-remediation verification — after executing a fix, monitor the target namespace for 60s and post a follow-up Slack thread confirming recovery or flagging that the crash state persists.
ถาม PopNx