An enhanced MCP server with Kubernetes integration supporting cluster management, log analysis, core file diagnostics, and remote cluster connections via kubeconfig files and SSH tunnels
YAMS provides 14 tools with Kubernetes monitoring capabilities. Strengths: all tools have descriptions (10-200 chars), input schemas with types and parameter descriptions, consistent verb-noun naming (get_, list_, describe_, execute_, search_, analyze_), and clear READ_ONLY/WRITE risk classification. Significant gaps: no output schemas documented anywhere; parameter descriptions lack format constraints and range limits; error handling is generic (no recovery guidance); no examples of error responses shown; descriptions are functional but minimal (avg ~80 chars, below baseline 194 chars); no tool annotations (readOnlyHint/destructiveHint/idempotentHint); context session tools (12-14) are poorly specified with vague 'command_info' object type; no pagination support visible for list tools; execute_pod_command is WRITE but lacks dry-run/confirmation pattern.
Add a specific command output to an active context session
Analyze pod logs for errors, warnings, and patterns with detailed error extraction
Get detailed information about a specific pod in a Kubernetes cluster
Execute a command inside a running pod container and return the output
Retrieve recent events from a Kubernetes cluster with filtering options
Retrieve list of configured Kubernetes clusters with connection details and status information
Retrieve logs from a specific pod or container with optional filtering and truncation
Get CPU and memory utilization for nodes or pods in a cluster
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields without knowing return structure. Per pattern:tool and pattern:tool-chain, all tools must document what they return.
Context session tools (start_context_session, stop_context_session, add_context_to_session) have vague parameter types: 'command_info' is an untyped object with no field documentation. Per pattern:constrained-input, all object parameters must define their properties and types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List all nodes in a Kubernetes cluster with their status, resources, and labels
List pods in a Kubernetes cluster with filtering by namespace, labels, and status
List Kubernetes services with endpoint and port information
Search for core dump files on nodes or pods with size and timestamp information
Start a new context gathering session for accumulating command outputs and diagnostic data
Stop a context gathering session and return accumulated diagnostic context
Parameter descriptions lack range constraints and format hints. E.g., max_lines is integer with no min/max bounds (could invite absurd values like 1000000). error_patterns and label_selector are free strings with no validation guidance. Per pattern:param-validation-rules, include ranges and format constraints in descriptions.
execute_pod_command is WRITE risk but lacks dry-run or confirmation pattern. Agents can accidentally run destructive commands. Per pattern:confirmation-request, destructive operations should support a confirmation step.
No pagination support visible in list tools (list_cluster_nodes, list_cluster_pods, list_services, get_cluster_events). Per pattern:paginated-result, tools returning lists must accept limit and offset/cursor and return a total count to prevent context window exhaustion.
Tool descriptions are functional but minimal (avg ~75 chars, baseline 194 chars). Most lack 'WHEN to use this vs similar tools' guidance. E.g., get_pod_logs vs analyze_pod_logs distinction is unclear; difference between describe_pod and list_cluster_pods intent is ambiguous. Per pattern:tool-description, descriptions should answer: What does it do? When? Why not the alternative?
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) in schema. Per current MCP spec (2026-07-28), tools should declare their safety profile. While not mandatory, this is a current pattern that aids agent reasoning.
Error handling strategy not documented. No recovery guidance shown (e.g., 'Cluster not found. Try get_kubernetes_clusters() to list available clusters.'). Per pattern:recovery-guide, error responses must tell the LLM what to do next.
Parameter namespace is optional and defaults to 'all namespaces' but this is not explicitly stated in descriptions. Per pattern:default-values, all defaults should be clearly documented to prevent silent misuse.