A Model Context Protocol server that provides tools for querying and managing Kubernetes cluster resources
K8s MCP server exposes 2 read-only tools for Kubernetes cluster interaction. Tool definitions are present with proper schema registration via mark3labs/mcp-go framework. Both tools have descriptions and parameter schemas with type information. However, output schemas are completely undocumented, critical for LLM planning downstream calls. Descriptions are adequate but minimal (50-70 chars). Parameters lack format constraints, validation guidance, and dependency documentation. Error handling strategy is not visible in provided code. No tool annotations (readOnlyHint/destructiveHint) despite tools being demonstrably read-only. Resource composition is weak, both tools operate on arbitrary Kubernetes resources but lack return schema documentation needed for chaining tool calls.
Get a specific resource by kind, name, and namespace
List all resources in the cluster
Output schemas completely undocumented. No visibility into what fields getResource and listResources return, their types, or structure. LLMs cannot plan downstream calls or extract chaining IDs without this.
No tool annotations despite being demonstrably read-only. Mark tools with readOnlyHint=true so agents know these are safe to call without side effects.
Parameter 'kind' lacks format guidance. Should document valid Kubernetes resource kinds (Pod, Service, Deployment, StatefulSet, etc.) or link to discovery mechanism.
listResources lacks pagination parameters. Tool description says 'List all resources in the cluster' but provides no limit, offset, or cursor parameters. Listing thousands of resources will exhaust context window.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Parameter descriptions are minimal (10-20 chars). LLMs need actionable guidance on format, constraints, and dependencies. E.g. 'namespace' description should explain default behavior if omitted.
No error handling strategy visible. No guidance on what happens when resource kind is invalid, namespace does not exist, or RBAC denies access. Agents cannot self-correct.