MCP server for interacting with Kubernetes clusters via kubectl
The server provides 23 tools with moderate definition quality. Most tools have proper JSON Schema input definitions with type information and descriptions. However, there are significant gaps: (1) many parameter descriptions are generic or minimal (e.g., kubectl_generic description is a single sentence); (2) output schemas are not documented, LLMs cannot determine what fields to expect from tool results; (3) several tools combine multiple concerns or lack clear error recovery guidance; (4) tool descriptions lack WHEN/WHY guidance needed for proper selection; (5) no pagination or result limits documented for list operations; (6) destructive operations (cleanup, kubectl_delete, node_management, kubectl_generic) lack confirmation/dry-run patterns. The naming convention is generally good (verb_noun_noun format), but some names are ambiguous (kubectl_generic accepts arbitrary commands with no validation, essentially bypassing the structured API). Parameter descriptions are present but often lack constraints, numeric ranges, enum values, and format specifications are missing in many cases.
Cleanup all managed resources
Execute a command inside a Kubernetes pod
Explain a Kubernetes resource type or field
Install a Helm chart to a Kubernetes cluster
Apply a Kubernetes YAML manifest from a string or file
Manage Kubernetes contexts
Create a Kubernetes resource from a manifest
Delete Kubernetes resources
kubectl_generic tool allows arbitrary kubectl commands with no validation, undermining the structured tool API design. LLMs can pass injection payloads or invalid commands without guard rails.
Output schemas are not documented for any tool. LLMs cannot determine what fields to expect in responses, forcing them to guess and making multi-step compositions fragile.
Destructive operations (cleanup, kubectl_delete, uninstall_helm_chart, node_management) lack dry-run or confirmation/multi-round-trip patterns. Agents cannot safely preview consequences before committing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Describe a Kubernetes resource in detail
Execute a generic kubectl command
Get Kubernetes resources with flexible filtering and output options
Get logs from a Kubernetes resource (pod, deployment, etc.)
Patch a Kubernetes resource
Reconnect to the Kubernetes cluster
Manage rollouts of Kubernetes resources
Scale a Kubernetes resource to a specified number of replicas
List available Kubernetes API resources
Manage Kubernetes nodes (drain, cordon, uncordon)
Test connectivity to the Kubernetes cluster
Start port forwarding to a Kubernetes resource
Stop an active port forwarding session
Uninstall a Helm chart release
Upgrade a Helm chart release
List operations (kubectl_get, list_api_resources, kubectl_logs with tail) do not declare pagination, result limits, or total count in parameter/response documentation. Large result sets can exhaust context windows.
Tool descriptions lack WHEN and WHY guidance. E.g., 'Manage Kubernetes contexts' tells LLM nothing about when to call kubectl_context vs kubectl_reconnect. Descriptions should explain selection criteria.
Parameter descriptions lack specificity on constraints. E.g., 'Number of replicas to scale to' (kubectl_scale) gives no range; 'Output format' (kubectl_get) lists no valid values. LLMs hallucinate invalid inputs.
cleanup tool has empty input schema and vague description ('Cleanup all managed resources'). Unclear what 'managed' means, what is deleted, and whether there is a confirmation step.
filename parameters in kubectl_apply, kubectl_create, kubectl_delete accept local filesystem paths. Tool documentation warns these are rejected for remote transport, but no validation guards this at call time. LLMs may pass paths without knowing they fail remotely.
error_reporting feature is marked true but no explicit error categorization (retryable vs user-fixable vs fatal) is visible in tool definitions. LLMs cannot determine safe retry strategies.
kubect_rollout 'toRevision' parameter is a number but no bounds or validation guidance provided. LLMs could pass negative or out-of-range values.