/ 目錄 / 演練場 / MKP (Model Kontext for K8s)
● 官方 StacklokLabs ⚡ 即開即用

MKP (Model Kontext for K8s)

作者 StacklokLabs · StacklokLabs/mkp

Kubernetes MCP from Stacklok — native API client, not a kubectl wrapper.

MKP is a Kubernetes MCP server written in Go that talks directly to the API server (not by shelling out to kubectl). That means structured outputs, less prompt pollution, and proper RBAC enforcement based on the agent's serviceaccount.

為什麼要用

核心特性

即時演示

實際使用效果

mkp-mcp.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mkp-mcp": {
      "command": "mkp",
      "args": [
        "serve"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mkp-mcp": {
      "command": "mkp",
      "args": [
        "serve"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mkp-mcp": {
      "command": "mkp",
      "args": [
        "serve"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mkp-mcp": {
      "command": "mkp",
      "args": [
        "serve"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mkp-mcp",
      "command": "mkp",
      "args": [
        "serve"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "mkp-mcp": {
      "command": {
        "path": "mkp",
        "args": [
          "serve"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add mkp-mcp -- mkp serve

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: MKP (Model Kontext for K8s)

Find which pod is OOMKilling and propose a fix

👤 K8s operators ⏱ ~15 min intermediate

何時使用: You're paged for memory pressure and don't have a dashboard up.

前置條件
  • Server/skill installed and authenticated — See repo README
步驟
  1. Spot the OOMs
    Find pods in any namespace with restartCount > 3 in the last hour. Show pod, namespace, last termination reason.✓ 已複製
    → Targeted list, likely with OOMKilled in the reason
  2. Propose the fix
    Get the limits/requests for the worst offender. Tell me what to raise and write an apply_manifest dry-run patch.✓ 已複製
    → Resource diff + a dry-run apply

結果: Targeted patch ready to apply, RBAC-checked.

注意事項
  • MKP only exposes what the bound SA can do — MKP only exposes what the bound SA can do — to enable apply_manifest you must bind an SA with patch permission.
搭配使用: portainer-mcp

組合

與其他 MCP 搭配,撬動十倍槓桿

mkp-mcp + portainer-mcp

Pair with portainer-mcp for complementary capabilities

Use this server together with portainer-mcp to complete a multi-step task.✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_resources kind, namespace, label_selector Inventory any resource type 1 API call
get_logs pod, container, tail_lines Triage a pod 1 API call
apply_manifest yaml, dry_run Deploy a change (dry-run first) 1 API call

成本與限制

運行它的成本

API 配額
See provider docs for rate limits
每次呼叫 Token 數
Varies by tool
費用
See repo README for pricing details
提示
Cache tool results and avoid repeated identical calls.

安全

權限、密鑰、影響範圍

憑證儲存: Use environment variables; never commit secrets
資料出站: Tool calls go to the provider's API as documented

故障排查

常見錯誤與修復

Forbidden on list pods

Bind a Role/ClusterRole with pods:get,list,watch to the SA mkp uses. Use kubectl auth can-i to verify.

驗證: kubectl auth can-i list pods
context not found

Set KUBECONFIG to a file with the right context, or pass --context.

驗證: kubectl config get-contexts

替代方案

MKP (Model Kontext for K8s) 對比其他方案

替代方案何時用它替代權衡
containers/kubernetes-mcp-serverYou want the most-starred optionSimilar feature set; pick by org preference

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills