Kubernetes MCP server providing tools for pod management, deployment scaling, log retrieval, and crash detection
Server has 7 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, below ideal 50-200 char range) and input schemas with types. However, descriptions are generic and lack context for LLM selection. Output schemas are undocumented, LLMs cannot predict response structure. No error guidance (e.g., 'User not found. Try search_users()'), no parameter constraints (enums, ranges), and no documentation of write-side effects. Naming is verb-first (good), but descriptions fail to explain WHEN to use each tool or what distinguishes similar tools (e.g., describe_pod vs get_pods). No pagination, no batch operations, and no idempotency guarantees documented.
Get detailed pod information
Detect CrashLoopBackOff pods.
Fetch pod logs
Get all pods in a namespace
Restart a deployment by patching annotation.
Get the rollout status of a deployment.
Scale a deployment
Output schemas undocumented. LLMs cannot predict response structure (e.g., get_pods returns {namespace, pods: [{name, status, ...}]} but this is invisible to the agent). Agents must guess field names for downstream tool calls.
Descriptions are generic and under 50 characters (baseline p10=34, p90=392). 'Get all pods in a namespace' and 'Get detailed pod information' do not explain WHEN to use describe_pod vs get_pods, or what extra context describe_pod provides. LLMs cannot disambiguate.
Write-side tools (scale_deployment, restart_deployment) lack error guidance and confirmation patterns. No dry-run, no 'are you sure?', no recovery instructions if scaling fails mid-operation. Agents can accidentally scale to 0 replicas.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter descriptions lack constraints. 'replicas' in scale_deployment has no min/max (baseline: numeric params need bounds). 'tail_lines' in get_logs has no range. LLMs can pass negative or absurdly large values.
Error responses return raw ApiException strings (e.g., {'error': str(e)}). No actionable guidance. 'Pod not found' should suggest 'Try get_pods() to list available pods in the namespace.' Agents cannot self-correct.