Kubernetes and Helm management server via MCP. Manages Kubernetes Cluster workloads and Helm releases through the Model Context Protocol.
This K8s/Helm MCP server has 16 tools with basic but inconsistent definition quality. Tool names follow verb_noun convention reasonably well (getAPIResources, listResources, getResource, describeResource, getPodsLogs, etc.), and all tools have descriptions. However, descriptions are often generic and lack specificity about WHEN to use each tool or HOW they differ from similar tools. Parameter schemas are present but lack depth, most parameters have type and description, but several critical parameters are missing constraint documentation (enums, ranges, validation rules). Output schemas are not documented anywhere in the provided code, making it impossible for LLMs to plan chained calls. Error handling information is absent from tool descriptions. Security considerations are not addressed (e.g., how credentials are injected, what permissions each tool requires). The tools cover a good surface area for K8s/Helm operations (CRUD, metrics, logs, helm lifecycle), but the definitions lack the polish needed for confident LLM usage at scale.
Creates a new resource or updates an existing one based on the provided manifest.
Fetches the description (manifest) of a specific resource from the Kubernetes cluster based on the provided kind, name, and namespace.
Retrieves API resources from the Kubernetes cluster based on the provided context and parameters (includeNamespaceScoped, includeClusterScoped).
Retrieves events from the Kubernetes cluster based on the provided namespace and optional filters.
Retrieves resource usage metrics for a specific node from the Kubernetes cluster based on the provided node name.
Retrieves CPU and Memory metrics for a specific pod from the Kubernetes cluster based on the provided namespace and pod name.
Retrieves logs for a specific pod from the Kubernetes cluster based on the provided name and namespace.
Output schemas not documented. No tool returns documented return types or field definitions. LLMs cannot infer what fields to extract for downstream chaining.
createOrUpdateResource has ambiguous naming ('or'). Combines two distinct operations (create and update) into one tool, violating single responsibility. Should be split into separate tools.
Descriptions lack specificity about WHEN to use each tool. For example, getResource vs describeResource both fetch resource details but descriptions don't explain the functional difference. 'describe' typically implies detailed manifest while 'get' is lighter, but this is not stated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Retrieves a specific resource from the Kubernetes cluster based on the provided kind, name, and namespace.
Get details of a specific Helm release
Get the history of a Helm release
Install a Helm chart to the Kubernetes cluster
List all Helm releases in the cluster or a specific namespace
Rollback a Helm release to a previous revision
Uninstall a Helm release from the Kubernetes cluster
Upgrade an existing Helm release
Lists resources in the Kubernetes cluster based on the provided kind, namespace, and labelSelector.
Parameter constraints missing. 'labelSelector' in listResources accepts free-form strings with no validation guidance; 'namespace' defaults to empty string but semantics of empty vs required are unclear; helm 'values' is type object but no description of structure or constraints.
No error handling guidance in tool descriptions. Tools don't document what to do on common failures: resource not found, permission denied, invalid manifest, helm chart not found. LLMs have no recovery path.
Destructive operations lack confirmation steps. helmUninstall and helmRollback are irreversible but have no mention of confirmation, dry-run, or rollback mechanisms in their descriptions.
No pagination or result limit documentation. listResources and getAPIResources may return unbounded results. No mention of page, offset, limit, or total_count parameters.
No permission or scope declarations. Tools don't state which RBAC roles or API permissions they require (e.g., 'get pods', 'create deployments'). Impossible to configure least-privilege agents.
Inconsistent parameter naming conventions. Some use camelCase (includeNamespaceScoped, labelSelector) while others use snake_case (podName, containerName). This inconsistency confuses LLMs when mapping between tools.