Manage Kubernetes Cluster workloads via MCP. Initializes the MCP server, sets up the Kubernetes client, and registers handlers for various Kubernetes operations including listing resources, getting resource details, and retrieving logs. Also manages Helm releases.
K8s MCP Server presents 22 tools with foundational schema definitions and descriptions, but falls short of production-grade quality. Naming is verb-first and mostly clear (get*, list*, create*, delete*, helm*), but descriptions vary significantly in completeness. Input schemas are present and typed for all tools, but lack depth in constraint documentation. Many parameters lack explicit enum constraints where they should have them (e.g., 'kind' in listResources accepts arbitrary strings instead of known Kubernetes kinds). Output schemas are not documented, the descriptions state 'serialized to JSON' but do not specify what fields are returned, forcing LLMs to infer structure. Error handling is absent from all tool descriptions; there is no guidance on retryability, expected failure modes, or recovery paths. Parameter relationships (e.g., 'namespace' defaults to empty string but behavior differs per tool) are undocumented. The tool set is well-composed (each tool has one responsibility, with clear naming), but lacks the precision and guardrails expected at 70+.
Creates a new resource or updates an existing one in the Kubernetes cluster using a JSON manifest string. Uses the dynamic client to attempt an update first, then create if not found.
Creates a new resource or updates an existing one in the Kubernetes cluster using a YAML manifest string. Uses the dynamic client to attempt an update first, then create if not found.
Deletes a Kubernetes resource from the cluster based on the provided kind, name, and namespace.
Fetches the description (manifest) of a specific resource from the Kubernetes cluster based on the provided kind, name, and namespace. The result is serialized to JSON and returned.
Retrieves API resources from the Kubernetes cluster based on the provided context and parameters (includeNamespaceScoped, includeClusterScoped). The result is serialized to JSON and returned.
Retrieves Kubernetes events from the cluster based on the provided namespace. Events are returned in JSON format.
No output schemas documented. Descriptions state results are 'serialized to JSON' but do not specify which fields are returned, their types, or their relationships to input parameters. LLMs cannot plan downstream calls or extract required IDs without knowing output structure.
No error handling guidance in any tool description. Descriptions do not state what can fail, whether errors are retryable, or how to recover. LLMs cannot diagnose failures or plan compensation.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 69 | - | v1 |
Retrieves Ingress resources from the Kubernetes cluster. Supports filtering by namespace and label selector.
Retrieves resource usage metrics for a specific node from the Kubernetes cluster based on the provided node name. The result is serialized to JSON and returned.
Retrieves CPU and Memory metrics for a specific pod from the Kubernetes cluster based on the provided namespace and pod name. The result is serialized to JSON and returned.
Retrieves logs for a specific pod from the Kubernetes cluster based on the provided name and namespace. The result is returned as plain text.
Retrieves a specific resource from the Kubernetes cluster based on the provided kind, name, and namespace. The result is serialized to JSON and returned.
Retrieves details about a specific Helm release from the Kubernetes cluster.
Retrieves the history of revisions for a specific Helm release from the Kubernetes cluster.
Installs a Helm chart into the Kubernetes cluster with optional values and repository URL.
Lists Helm releases from the Kubernetes cluster, optionally filtered by namespace.
Adds a new Helm repository to the system.
Lists all configured Helm repositories.
Rolls back a Helm release to a previous revision in the Kubernetes cluster.
Uninstalls a Helm release from the Kubernetes cluster.
Upgrades an existing Helm release in the Kubernetes cluster with new chart and values.
Lists resources in the Kubernetes cluster based on the provided kind, namespace, and labelSelector. The result is serialized to JSON and returned.
Performs a rollout restart on a Deployment or StatefulSet in the Kubernetes cluster.
Parameters that accept constrained values lack enums. 'kind' in listResources, getResources, describeResources, and deleteResource should enumerate valid Kubernetes kinds (Pod, Deployment, Service, etc.). Free-form strings invite hallucinated values.
Missing parameter constraints and ranges. Descriptions do not specify valid formats, lengths, or patterns. E.g., 'labelSelector' and 'fieldSelector' lack syntax documentation; 'namespace' sometimes defaults to empty (cluster-scoped) but behavior is not explicitly stated per tool.
Tool names 'createOrUpdateResourceJSON' and 'createOrUpdateResourceYAML' violate naming clarity (contain 'and', conflate two intents). These should be split into separate tools or the name should be clarified to 'applyResourceJSON' / 'applyResourceYAML'.
No pagination support or result limits documented. Tools like listResources, getAPIResources, helmList do not mention how many results are returned or how to handle large datasets. Without pagination, large clusters risk context window exhaustion.
Destructive operations (deleteResource, helmUninstall) lack confirmation or dry-run mechanics. Descriptions do not warn that these are irreversible. No recovery path is offered.
Parameter naming inconsistencies: some use 'namespace' (lowercase), others use 'Name' (capitalized). This inconsistency increases cognitive load and risks agent confusion when chaining calls.