Kubernetes graph service and MCP server for querying Kubernetes cluster state as a graph using Cypher queries
k8s-ariadne-rs presents a focused, domain-specific tool set for Kubernetes graph querying. All three tools have clear, substantive descriptions (ranging from 160-190 characters) and well-structured input schemas with proper JSON Schema typing. Tool naming follows verb_noun patterns (graph_query, graph_schema, graph_health). However, some parameter descriptions lack depth, output schemas are not explicitly documented in the code samples provided, and there is no evidence of error recovery guidance or actionable error messages. The server is semantically clean and well-scoped but lacks some patterns from the 54-pattern baseline around error handling, composition guidance, and output documentation.
Return Kubernetes graph health. By default this returns a compact freshness/status summary optimized for model consumption. Pass `detail = "full"` or `detail = "debug"` for the full diagnostic payload with backend probe details, sync and rebuild state, and version.
Execute a read-only Cypher query against the Kubernetes graph. Returns rows, columns, row count, truncation status, and execution time. The optional top-level `limit` caps response size after execution (default: 100, max: 1000) for transport/context safety only. Prefer narrow queries and add Cypher `LIMIT` when exploring large result sets. Errors include structured classification with `kind` and `repairable`/`retryable` flags. Use `graph_schema` only when labels, properties, or traversal directions are uncertain.
Return the Kubernetes graph schema. By default this returns a compact text view optimized for model consumption. Pass `format = "structured"` for the full machine-readable schema with node labels, properties, and relationship types.
Output schemas not explicitly documented in tool definitions. The code shows input schemas for all three tools, but the response structure (fields, types, pagination metadata) is not formally declared. LLMs cannot plan downstream operations or extract data reliably without documented output schemas.
Parameter descriptions lack constraint details. The 'limit' parameter in graph_query documents default (100) and max (1000) in the tool description but not in the parameter annotation itself. The 'format' and 'detail' enum parameters have minimal descriptions ('Schema format (default: compact)', 'Detail level (default: compact)'), they should explain WHAT each option returns and WHEN to use it.
Error handling guidance missing. The graph_query tool mentions 'Errors include structured classification with kind and repairable/retryable flags' in the description, but there is no documentation of what error kinds are possible, how to interpret them, or what recovery actions are available. This leaves LLMs unable to act on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | 2025-03-26+ | v1 |
No documented pagination or result-limiting behavior for graph_query beyond the 'limit' parameter. If Cypher queries can return large result sets, the tool should document: does 'limit' apply before or after Cypher LIMIT? What does 'truncation status' in the response mean? Does the response include a total count or next_cursor for multi-page scenarios?
graph_schema and graph_health parameter descriptions do not explain the semantic difference between detail levels (compact vs full vs debug for health, compact vs structured for schema). An LLM cannot decide which to use without knowing what each returns.