A Kubernetes operator for managing Model Context Protocol (MCP) servers in Kubernetes environments
nmcp is a Kubernetes operator for managing MCP servers. It exposes 5 tools for server lifecycle management (search, get, create, update, delete) via HTTP. All tools have descriptions and parameter schemas are visible in server_docs.rs. However, several quality gaps prevent a higher score: (1) Parameter descriptions are present but often generic, lacking actionable detail about constraints and formats. (2) Output schemas are not explicitly documented, the code returns MCPServerBody structs but the response structure is not formally specified in tool definitions. (3) Tool names are clear and action-oriented, but descriptions could be more specific about when to use each vs alternatives. (4) Error handling exists but error messages are not visible in the provided code, unclear whether recovery guidance is provided. (5) No tool annotations (readOnlyHint/destructiveHint) are present despite clear risk levels.
Creates a new `MCPServer` resource with the specified name and configuration. This initiates deployment of a Kubernetes Pod and, if applicable, a Service based on the server's transport type (SSE or STDIO).
Removes an `MCPServer` and cleans up all its associated Kubernetes resources. This includes terminating the server Pod and deleting any associated Service resources, ensuring complete cleanup.
Retrieves a specific `MCPServer` by name, returning its complete configuration and current status. This includes the server's pool assignment, container details, transport configuration, and running state.
Retrieves a list of all `MCPServer` resources in the current namespace. Returns detailed information about each server, including its configuration, current status, and associated pool.
Updates the configuration of an existing `MCPServer`. This allows modifying the container image, arguments, environment variables, transport configuration, and other settings while maintaining the server's identity.
Output schemas not documented in tool definitions. Tools return MCPServerBody but response structure is not formally specified, forcing LLMs to infer field names and types.
Tool annotations missing. Despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE), tools lack readOnlyHint, destructiveHint, and idempotentHint annotations in schema, preventing agents from reasoning about side effects.
Parameter descriptions lack actionable constraints. 'transport' param accepts object but no format/schema documented; 'env' param is array but element structure undefined; 'idleTimeout' is integer but min/max bounds not stated.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 64 | - | v1 |
Pagination not implemented for searchServers. Returns full list of MCPServer resources without limit, offset, or cursor, can exhaust context window with large deployments.
Error handling and recovery guidance not visible in provided code. No evidence of actionable error messages, retryable vs fatal classifications, or next-step hints for LLM.
Confirmation/dry-run pattern absent for deleteServer. Irreversible destruction (removes Pod and Service) has no pre-deletion confirmation or dry-run option to prevent accidental deletions.