Tool selection decision tree
For single-machine operations, this shell branch assumes a simple CLI and no additional service authentication. The Host’s configured connection credentials still apply. Configure Central for control-plane commands, even when the command affects only one remote resource. Host agents retain access to authorized cloud or database CLIs already installed and configured on their Host when no suitable plugin is assigned. Central remains the configuration choice for a new dedicated control-plane command environment.Choose the tool
Userun_shell for a simple pre-installed CLI with usable help and no service authentication. Prefer a plugin for a control-plane CLI when any of these applies:
- It requires authentication to an external service.
- Its help does not explain the commands and arguments the agent needs.
- It is a custom or internal tool whose behavior the agent cannot infer reliably.
Combine plugins and shell commands
A task can call an assigned plugin and run shell commands in its configured Host or Central. Use shell commands for helpers, additional tools or capabilities that the plugin lacks. For example, an MCP can retrieve an inventory while a shell command formats a local file. Fallback uses only authorized access and commands available in the configured environment. A missing response from a modifying call does not establish that it failed; do not repeat the operation through another tool without establishing its outcome.Recommended Kubernetes MCP
For Kubernetes, we recommend containers/kubernetes-mcp-server, deployed in your cluster and added by its URL, such ashttp://kubernetes-mcp.<namespace>.svc:8080/mcp. Pin its image to a version you have tested, for example quay.io/containers/kubernetes_mcp_server:v0.0.67, rather than a moving tag. Run it read-only (read_only = true in its configuration file) and deny Secrets (denied_resources), and give its service account a Role that grants only get, list and watch, on the resources and in the namespaces your agents need to read. An installation that lets agents change the cluster through it turns read_only off, and must still deny Secrets: keep denied_resources = [{ group = "", version = "v1", kind = "Secret" }] in its configuration file (the setting as of v0.0.67), and leave secrets out of its service account’s Role. Whatever a tool returns, a Secret’s values included, goes into the task’s trace, is stored with the task and is sent to the model provider. This server has no sign-in of its own in that setup, so keep its Service reachable only inside the cluster: the engine reaches an internal address over plain HTTP without any setting.

