A powerful and flexible Kubernetes Model Context Protocol (MCP) server implementation with support for Kubernetes and OpenShift.
kubernetes-mcp-server is an MCP project maintained in the manusa/kubernetes-mcp-server repository. The maintainer describes its purpose as “A powerful and flexible Kubernetes Model Context Protocol (MCP) server implementation with support for Kubernetes and OpenShift”. Read the project documentation for the complete scope.
The documented npm package is kubernetes-mcp-server. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| configuration_contexts_list | List all available context names and associated server urls from the kubeconfig file |
| targets_list | List all available targets |
| configuration_view | Get the current Kubernetes configuration content as a kubeconfig YAML |
| minified | boolean) - Return a minified version of the configuration. If set to true, keeps only the current-context and the relevant pieces of the configuration for that |
| events_list | List Kubernetes events (warnings, errors, state changes) for debugging and troubleshooting in the current cluster from all namespaces |
| fieldSelector | string) - Optional Kubernetes field selector to filter resources by field values (e.g. 'status.phase=Running', 'metadata.name=myresource'). Supported fields… |
| namespace | string) - Namespace of the TaskRun |
| namespaces_list | List all the Kubernetes namespaces in the current cluster |
| projects_list | List all the OpenShift projects in the current cluster |
| nodes_log | Get logs from a Kubernetes node (kubelet, kube-proxy, or other system logs). This accesses node logs through the Kubernetes API proxy to the kubelet |
| query | string) (required) - query specifies services(s) or files from which to return logs (required). Example: "kubelet" to fetch kubelet logs, "/ " to fetch a… |
| tailLines | integer) - Number of lines to retrieve from the end of the logs (Optional, 0 means all logs) |
| nodes_stats_summary | Get detailed resource usage statistics from a Kubernetes node via the kubelet's Summary API. Provides comprehensive metrics including CPU, memory… |
| nodes_top | List the resource consumption (CPU and memory) as recorded by the Kubernetes Metrics Server for the specified Kubernetes Nodes or all nodes in the cluster |
| label_selector | string) - Kubernetes label selector (e.g. 'app=myapp,env=prod' or 'app in (myapp,yourapp)'), use this option when you want to filter the pods by label… |
| pods_list | List all the Kubernetes pods in the current cluster from all namespaces |
| labelSelector | string) - Optional Kubernetes label selector (e.g. 'app=myapp,env=prod' or 'app in (myapp,yourapp)'), use this option when you want to filter the resources… |
| pods_list_in_namespace | List all the Kubernetes pods in the specified namespace in the current cluster |
| pods_get | Get a Kubernetes Pod in the current or provided namespace with the provided name |
| pods_delete | Delete a Kubernetes Pod in the current or provided namespace with the provided name |
| pods_top | List the resource consumption (CPU and memory) as recorded by the Kubernetes Metrics Server for the specified Kubernetes Pods in the all namespaces, the… |
| all_namespaces | boolean) - If true, lists all Helm releases in all namespaces ignoring the namespace argument (Optional) |
| pods_exec | Execute a command in a Kubernetes Pod (shell access, run commands in container) in the current or provided namespace with the provided name and command |
| container | string) - Optional. Name of the Pod container to get the logs from. |
| pods_log | Get the logs of a Kubernetes Pod in the current or provided namespace with the provided name |
| previous | boolean) - Optional. Return previous terminated container logs |
| tail | integer) - Number of lines to retrieve from the end of the logs (Optional, default: 100) |
| pods_run | Run a Kubernetes Pod in the current or provided namespace with the provided container image and optional name |
| image | string) (required) - Container Image to run in the Pod |
| port | number) - TCP/IP port to expose from the Pod container (Optional, no port exposed if not provided) |
| resources_list | List Kubernetes resources and objects in the current cluster by providing their apiVersion and kind and optionally the namespace and label selector |
| apiVersion | string) (required) - apiVersion of the resource (examples of valid apiVersion are apps/v1) |
| kind | string) (required) - Kind of the Istio object (e.g., 'VirtualService', 'DestinationRule'). |
| resources_get | Get a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name |
| resources_create_or_update | Create or update a Kubernetes resource via Server-Side Apply. The manifest is the complete desired state: any field this tool previously set and the new… |
| resource | pod, service, or node (finest workload granularity) |
| resources_delete | Delete a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name |
| gracePeriodSeconds | integer) - Optional duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately.… |
| resources_scale | Get or update the scale of a Kubernetes resource in the current cluster by providing its apiVersion, kind, name, and optionally the namespace. If the scale… |
| scale | integer) - Optional scale to update the resources scale to. If not provided, will return the current scale of the resource, and not update it |
| helm_install | Install (deploy) a Helm chart to create a release in the current or provided namespace |
| chart | string) (required) - Chart reference to install (for example: stable/grafana, oci://ghcr.io/nginxinc/charts/nginx-ingress) |
| values | object) - Values to pass to the Helm chart (Optional) |
| helm_list | List all the Helm releases in the current or provided namespace (or in all namespaces if specified) |
| helm_uninstall | Uninstall a Helm release in the current or provided namespace |
| kcp_workspaces_list | List all available kcp workspaces in the current cluster |
| kcp_workspace_describe | Get detailed information about a specific kcp workspace |
| workspace | string) (required) - Name or path of the workspace to describe |
| kiali_get_mesh_traffic_graph | Returns service-to-service traffic topology, dependencies, and network metrics (throughput, response time, mTLS) for the specified namespaces. Use this to… |
| graphType | string) - Granularity of the graph. 'app' aggregates by app name, 'versionedApp' separates by versions, 'workload' maps specific pods/deployments. Default… |
| meshCluster | string) - Optional Istio mesh cluster name from kiali_list_mesh_clusters (e.g. west). When omitted, Kiali defaults to its home cluster. |
| namespaces | string) - Comma-separated list of namespaces to query (e.g., 'bookinfo' or 'bookinfo,default'). If not provided, it will query across all accessible… |
| kiali_get_mesh_status | Retrieves the high-level health, topology, and environment details of the Istio service mesh. Returns multi-cluster control plane status (istiod), data plane… |
| kiali_manage_istio_config_read | Read Istio, Gateway API, and Inference API config. 'list' groups by namespace→'group/version/kind'→{valid:[...],invalid:[...]} where valid/invalid arrays… |
| action | string) (required) - Lifecycle action to perform: 'restart' creates a new PipelineRun with the same spec; 'cancel' sets spec.status to Cancelled. |
| group | string) (required) - API group of the Istio object. Use 'gateway.networking.k8s.io' for Gateway API resources. Use 'inference.networking.k8s.io' for… |
| object | string) (required) - Name of the Istio object. |
| serviceName | string) (required) - Service name to search traces for (required). Returns multiple traces up to limit. |
| version | string) (required) - API version. Use 'v1' for all resource types. |
| kiali_manage_istio_config | Create, patch, or delete Istio, Gateway API, and Inference API config. Supports Istio resources (networking.istio.io, security.istio.io), Gateway API resources |
| data | string) - JSON or YAML data for the resource. Required for create and patch actions. For create, you can provide partial content (e.g. only spec) and it will… |
| kiali_list_mesh_clusters | Returns the list of Istio mesh clusters that Kiali can access. Each entry includes its name and whether it is the home cluster (where Kiali is deployed).… |
| kiali_get_resource_details | Fetches a list of resources OR retrieves detailed data for a specific resource. If 'resourceName' is omitted, it returns a list. If 'resourceName' is provided, |
| resourceName | string) (required) - Name of the resource to get metrics for |
| resourceType | string) (required) - Type of resource to get metrics |
| kiali_list_traces | Lists distributed traces for a service in a namespace. Returns a summary (namespace, service, total_found, avg_duration_ms) and a list of traces with id… |
| errorOnly | boolean) - If true, only consider traces that contain errors. Default false. |
| limit | integer) - Maximum number of flow records to return. Default 100. |
| lookbackSeconds | integer) - How far back to search. Default 600 (10m). |
| kiali_get_trace_details | Fetches a single distributed trace by trace_id and returns its call hierarchy (service tree with duration, status, and nested calls). Use this after… |
| traceId | string) (required) - Trace ID to fetch and summarize. If provided, namespace/service_name are ignored. |
| kiali_get_pod_performance | Returns a human-readable text summary with current Pod CPU/memory usage (from Prometheus) compared to Kubernetes requests/limits (from the Pod spec). Useful to |
| podName | string) - Kubernetes Pod name. If workloadName is provided, the tool will attempt to resolve a Pod from that workload first. |
| queryTime | string) - Optional end timestamp (RFC3339) for the query. Defaults to now. |
| timeRange | integer) - Lookback window in seconds when startTime is omitted. Default 300. |
| workloadName | string) - Kubernetes Workload name (e.g. Deployment/StatefulSet/etc). Tool will look up the workload and pick one of its Pods. If not found, it will fall… |
| kiali_get_logs | Get the logs of a Kubernetes Pod (or workload name that will be resolved to a pod) in a namespace. Output is plain text, matching kubernetes-mcp-server… |
| format | string) - Export format. Only csv is supported. |
| severity | string) - Optional severity filter applied client-side. Accepts 'ERROR', 'WARN' or combinations like 'ERROR,WARN'. |
| workload | string) - The workload for the VM. Accepts OS names (e.g., 'fedora' (default), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse'… |
| kiali_get_metrics | Returns a compact JSON summary of Istio metrics (latency quantiles, traffic trends, throughput, payload sizes) for the given resource. |
| byLabels | string) - Comma-separated list of labels to group metrics by (e.g., 'source_workload,destination_service'). Optional |
| direction | string) - Traffic direction. Optional, defaults to 'outbound' |
| quantiles | string) - Comma-separated list of quantiles for histogram metrics (e.g., '0.5,0.95,0.99'). Optional |
| rateInterval | string) - Prometheus rate interval (e.g. 1m, 5m). |
| reporter | string) - Metrics reporter(s). Comma-separated list of: 'source', 'destination', 'waypoint', or the special value 'both' (no reporter filter). Optional… |
| requestProtocol | string) - Filter by request protocol (e.g., 'http', 'grpc', 'tcp'). Optional |
| step | string) - Step name to include. If omitted, logs from all steps and sidecars are returned |
| vm_clone | Clone a VirtualMachine on KubeVirt by creating a VirtualMachineClone resource. This creates a copy of the source VM with a new name using the KubeVirt Clone… |
| targetName | string) (required) - The name for the new cloned virtual machine |
| vm_console_screenshot | Capture a screenshot of the graphical (VNC) console of a VirtualMachine on KubeVirt as a PNG image. Use this to see what is currently displayed on the VM's… |
| vm_create | Create a VirtualMachine on KubeVirt with the specified configuration, automatically resolving instance types, preferences, and container disk images. VM will… |
| autostart | boolean) - Optional flag to automatically start the VM after creation (sets runStrategy to Always instead of Halted). Defaults to false. |
| instancetype | string) - Optional instance type name for the VM (e.g., 'u1.small', 'u1.medium', 'u1.large') |
| networks | array) - Optional secondary network interfaces to attach to the VM. Each item specifies a Multus NetworkAttachmentDefinition to attach. Accepts either simple… |
| performance | string) - Optional performance family hint for the VM instance type (e.g., 'u1' for general-purpose, 'o1' for overcommitted, 'c1' for compute-optimized, 'm1'… |
| preference | string) - Optional preference name for the VM |
| size | string) - Optional workload size hint for the VM (e.g., 'small', 'medium', 'large', 'xlarge'). Used to auto-select an appropriate instance type if not… |
| storage | string) - Optional storage size for the VM's root disk when using DataSources (e.g., '30Gi', '50Gi', '100Gi'). Defaults to 30Gi. Ignored when using container… |
| vm_guest_info | Get guest operating system information from a VirtualMachine's QEMU guest agent. Requires the guest agent to be installed and running inside the VM. Provides… |
| info_type | string) - Type of information to retrieve: 'all' (default - all available info), 'os' (operating system details), 'filesystem' (disk and filesystem info)… |
| vm_lifecycle | Manage KubeVirt VirtualMachine lifecycle: start, stop, restart, pause, or unpause a VM |
| vm_create_from_template | Create a VirtualMachine from a VirtualMachineTemplate (virt-template) on KubeVirt. Processes the template server-side to substitute parameters (required… |
| parameters | object) - Parameter values to substitute in the template. Keys are parameter names (e.g. VM_NAME), values are strings. Required parameters must be provided… |
| template_name | string) (required) - The name of the VirtualMachineTemplate to create the VM from |
| vm_troubleshoot | Diagnose KubeVirt VirtualMachine issues with automated root-cause detection. Collects VM status, VMI status, volumes, DataVolume/PVC state, cloud-init… |
| netobserv_list_flows | Lists NetObserv network flow records from Loki. Use when investigating traffic between workloads, IPs, ports, or protocols in a namespace or time window. |
| endTime | integer) - End of time range as Unix epoch seconds. Defaults to now. |
| filters | string) - NetObserv filter expression passed to the console plugin (plain text; the client URL-encodes it). |
| FlowDirection | 0=Ingress, 1=Egress, 2=Inner), Bytes, Packets, Dscp, Flags |
| packetLoss | string) - Packet loss filter. |
| recordType | string) - Flow record type filter. |
| startTime | integer) - Start of time range as Unix epoch seconds. Overrides timeRange when set. |
| netobserv_get_flow_metrics | Returns aggregated NetObserv flow metrics as topology or time-series data. Use for throughput, TLS/DNS/drop breakdowns, and namespace or workload traffic… |
| aggregateBy | string) (required) - Primary dimension for netobserv_get_flow_metrics (console plugin /api/flow/metrics). |
| app | application workloads (pods/services), excluding infrastructure traffic |
| owner | controller owner (Deployment, StatefulSet, …) |
| host | node name |
| zone | availability zone |
| cluster | cluster name (multi-cluster) |
| network | user-defined / secondary network name |
| Throughput | type=Bytes or Packets, function=rate |
| RTT | type=TimeFlowRttNs, function=avg, min, or p90 |
| Drops | type=PktDropPackets or PktDropBytes, function=rate |
| dataSource | string) - Metrics backend: auto (prefer Prometheus, fallback to Loki), prom, or loki. |
| function | string) - Aggregation function. |
| groups | string) - Optional comma-separated parent scopes when aggregateBy is a topology scope. |
| netobserv_export_flows | Exports NetObserv flow records as CSV with the same filters as list_flows. Use when the user needs downloadable flow data for audits or offline analysis. |
| columns | string) - Optional comma-separated column names to include (e.g. SrcK8S_Namespace,DstK8S_Namespace,Bytes). Omit to export all columns present in the result. |
| tekton_pipeline_start | Start a Tekton Pipeline by creating a PipelineRun that references it |
| params | object) - Parameter values to pass to the Task. Keys are parameter names; values can be a string, an array of strings, or an object (map of string to string)… |
| tekton_pipelinerun_lifecycle | Manage a Tekton PipelineRun lifecycle by restarting it with the same spec or cancelling it by setting spec.status to Cancelled. |
| tekton_pipelinerun_logs | Get logs for all TaskRuns owned by a Tekton PipelineRun. Use this to inspect PipelineRun execution output without locating pods manually. |
| task | string) - Pipeline task name to filter by (tekton.dev/pipelineTask label) |
| tekton_task_start | Start a Tekton Task by creating a TaskRun that references it |
| tekton_taskrun_restart | Restart a Tekton TaskRun by creating a new TaskRun with the same spec |
| tekton_taskrun_logs | Get the logs from a Tekton TaskRun by resolving its underlying pod |
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": [
"-y",
"kubernetes-mcp-server@latest"
]
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
Stop letting your assistant hallucinate n8n node parameters — this server hands it the real schemas, templates and validation.
AWS Labs' official server suite — current AWS docs, CDK guidance, cost analysis and service tools.
Cloud browsers for AI agents — automation sessions that run in Browserbase's fleet, not on your machine.
Workers, KV, R2 and D1 by conversation — Cloudflare's official remote servers for building and observability.
Dashboards, Prometheus and Loki queries, incidents and alerts — observability by conversation.
kubectl with a conversational interface — inspect pods, read logs, diagnose clusters and manage workloads.