kubernetes-mcp-server MCP Server

A powerful and flexible Kubernetes Model Context Protocol (MCP) server implementation with support for Kubernetes and OpenShift.

Local serverstdio

What is the kubernetes-mcp-server MCP Server?

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.

Installation

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.

Source

Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.

Recorded tools

Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.

ToolWhat it does
configuration_contexts_listList all available context names and associated server urls from the kubeconfig file
targets_listList all available targets
configuration_viewGet the current Kubernetes configuration content as a kubeconfig YAML
minifiedboolean) - 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_listList Kubernetes events (warnings, errors, state changes) for debugging and troubleshooting in the current cluster from all namespaces
fieldSelectorstring) - Optional Kubernetes field selector to filter resources by field values (e.g. 'status.phase=Running', 'metadata.name=myresource'). Supported fields…
namespacestring) - Namespace of the TaskRun
namespaces_listList all the Kubernetes namespaces in the current cluster
projects_listList all the OpenShift projects in the current cluster
nodes_logGet logs from a Kubernetes node (kubelet, kube-proxy, or other system logs). This accesses node logs through the Kubernetes API proxy to the kubelet
querystring) (required) - query specifies services(s) or files from which to return logs (required). Example: "kubelet" to fetch kubelet logs, "/ " to fetch a…
tailLinesinteger) - Number of lines to retrieve from the end of the logs (Optional, 0 means all logs)
nodes_stats_summaryGet detailed resource usage statistics from a Kubernetes node via the kubelet's Summary API. Provides comprehensive metrics including CPU, memory…
nodes_topList 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_selectorstring) - 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_listList all the Kubernetes pods in the current cluster from all namespaces
labelSelectorstring) - 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_namespaceList all the Kubernetes pods in the specified namespace in the current cluster
pods_getGet a Kubernetes Pod in the current or provided namespace with the provided name
pods_deleteDelete a Kubernetes Pod in the current or provided namespace with the provided name
pods_topList the resource consumption (CPU and memory) as recorded by the Kubernetes Metrics Server for the specified Kubernetes Pods in the all namespaces, the…
all_namespacesboolean) - If true, lists all Helm releases in all namespaces ignoring the namespace argument (Optional)
pods_execExecute a command in a Kubernetes Pod (shell access, run commands in container) in the current or provided namespace with the provided name and command
containerstring) - Optional. Name of the Pod container to get the logs from.
pods_logGet the logs of a Kubernetes Pod in the current or provided namespace with the provided name
previousboolean) - Optional. Return previous terminated container logs
tailinteger) - Number of lines to retrieve from the end of the logs (Optional, default: 100)
pods_runRun a Kubernetes Pod in the current or provided namespace with the provided container image and optional name
imagestring) (required) - Container Image to run in the Pod
portnumber) - TCP/IP port to expose from the Pod container (Optional, no port exposed if not provided)
resources_listList Kubernetes resources and objects in the current cluster by providing their apiVersion and kind and optionally the namespace and label selector
apiVersionstring) (required) - apiVersion of the resource (examples of valid apiVersion are apps/v1)
kindstring) (required) - Kind of the Istio object (e.g., 'VirtualService', 'DestinationRule').
resources_getGet a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name
resources_create_or_updateCreate 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…
resourcepod, service, or node (finest workload granularity)
resources_deleteDelete a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name
gracePeriodSecondsinteger) - Optional duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately.…
resources_scaleGet 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…
scaleinteger) - Optional scale to update the resources scale to. If not provided, will return the current scale of the resource, and not update it
helm_installInstall (deploy) a Helm chart to create a release in the current or provided namespace
chartstring) (required) - Chart reference to install (for example: stable/grafana, oci://ghcr.io/nginxinc/charts/nginx-ingress)
valuesobject) - Values to pass to the Helm chart (Optional)
helm_listList all the Helm releases in the current or provided namespace (or in all namespaces if specified)
helm_uninstallUninstall a Helm release in the current or provided namespace
kcp_workspaces_listList all available kcp workspaces in the current cluster
kcp_workspace_describeGet detailed information about a specific kcp workspace
workspacestring) (required) - Name or path of the workspace to describe
kiali_get_mesh_traffic_graphReturns service-to-service traffic topology, dependencies, and network metrics (throughput, response time, mTLS) for the specified namespaces. Use this to…
graphTypestring) - Granularity of the graph. 'app' aggregates by app name, 'versionedApp' separates by versions, 'workload' maps specific pods/deployments. Default…
meshClusterstring) - Optional Istio mesh cluster name from kiali_list_mesh_clusters (e.g. west). When omitted, Kiali defaults to its home cluster.
namespacesstring) - 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_statusRetrieves 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_readRead Istio, Gateway API, and Inference API config. 'list' groups by namespace→'group/version/kind'→{valid:[...],invalid:[...]} where valid/invalid arrays…
actionstring) (required) - Lifecycle action to perform: 'restart' creates a new PipelineRun with the same spec; 'cancel' sets spec.status to Cancelled.
groupstring) (required) - API group of the Istio object. Use 'gateway.networking.k8s.io' for Gateway API resources. Use 'inference.networking.k8s.io' for…
objectstring) (required) - Name of the Istio object.
serviceNamestring) (required) - Service name to search traces for (required). Returns multiple traces up to limit.
versionstring) (required) - API version. Use 'v1' for all resource types.
kiali_manage_istio_configCreate, patch, or delete Istio, Gateway API, and Inference API config. Supports Istio resources (networking.istio.io, security.istio.io), Gateway API resources
datastring) - 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_clustersReturns 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_detailsFetches a list of resources OR retrieves detailed data for a specific resource. If 'resourceName' is omitted, it returns a list. If 'resourceName' is provided,
resourceNamestring) (required) - Name of the resource to get metrics for
resourceTypestring) (required) - Type of resource to get metrics
kiali_list_tracesLists 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…
errorOnlyboolean) - If true, only consider traces that contain errors. Default false.
limitinteger) - Maximum number of flow records to return. Default 100.
lookbackSecondsinteger) - How far back to search. Default 600 (10m).
kiali_get_trace_detailsFetches a single distributed trace by trace_id and returns its call hierarchy (service tree with duration, status, and nested calls). Use this after…
traceIdstring) (required) - Trace ID to fetch and summarize. If provided, namespace/service_name are ignored.
kiali_get_pod_performanceReturns a human-readable text summary with current Pod CPU/memory usage (from Prometheus) compared to Kubernetes requests/limits (from the Pod spec). Useful to
podNamestring) - Kubernetes Pod name. If workloadName is provided, the tool will attempt to resolve a Pod from that workload first.
queryTimestring) - Optional end timestamp (RFC3339) for the query. Defaults to now.
timeRangeinteger) - Lookback window in seconds when startTime is omitted. Default 300.
workloadNamestring) - 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_logsGet 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…
formatstring) - Export format. Only csv is supported.
severitystring) - Optional severity filter applied client-side. Accepts 'ERROR', 'WARN' or combinations like 'ERROR,WARN'.
workloadstring) - The workload for the VM. Accepts OS names (e.g., 'fedora' (default), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse'…
kiali_get_metricsReturns a compact JSON summary of Istio metrics (latency quantiles, traffic trends, throughput, payload sizes) for the given resource.
byLabelsstring) - Comma-separated list of labels to group metrics by (e.g., 'source_workload,destination_service'). Optional
directionstring) - Traffic direction. Optional, defaults to 'outbound'
quantilesstring) - Comma-separated list of quantiles for histogram metrics (e.g., '0.5,0.95,0.99'). Optional
rateIntervalstring) - Prometheus rate interval (e.g. 1m, 5m).
reporterstring) - Metrics reporter(s). Comma-separated list of: 'source', 'destination', 'waypoint', or the special value 'both' (no reporter filter). Optional…
requestProtocolstring) - Filter by request protocol (e.g., 'http', 'grpc', 'tcp'). Optional
stepstring) - Step name to include. If omitted, logs from all steps and sidecars are returned
vm_cloneClone 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…
targetNamestring) (required) - The name for the new cloned virtual machine
vm_console_screenshotCapture 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_createCreate a VirtualMachine on KubeVirt with the specified configuration, automatically resolving instance types, preferences, and container disk images. VM will…
autostartboolean) - Optional flag to automatically start the VM after creation (sets runStrategy to Always instead of Halted). Defaults to false.
instancetypestring) - Optional instance type name for the VM (e.g., 'u1.small', 'u1.medium', 'u1.large')
networksarray) - Optional secondary network interfaces to attach to the VM. Each item specifies a Multus NetworkAttachmentDefinition to attach. Accepts either simple…
performancestring) - Optional performance family hint for the VM instance type (e.g., 'u1' for general-purpose, 'o1' for overcommitted, 'c1' for compute-optimized, 'm1'…
preferencestring) - Optional preference name for the VM
sizestring) - Optional workload size hint for the VM (e.g., 'small', 'medium', 'large', 'xlarge'). Used to auto-select an appropriate instance type if not…
storagestring) - 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_infoGet 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_typestring) - Type of information to retrieve: 'all' (default - all available info), 'os' (operating system details), 'filesystem' (disk and filesystem info)…
vm_lifecycleManage KubeVirt VirtualMachine lifecycle: start, stop, restart, pause, or unpause a VM
vm_create_from_templateCreate a VirtualMachine from a VirtualMachineTemplate (virt-template) on KubeVirt. Processes the template server-side to substitute parameters (required…
parametersobject) - Parameter values to substitute in the template. Keys are parameter names (e.g. VM_NAME), values are strings. Required parameters must be provided…
template_namestring) (required) - The name of the VirtualMachineTemplate to create the VM from
vm_troubleshootDiagnose KubeVirt VirtualMachine issues with automated root-cause detection. Collects VM status, VMI status, volumes, DataVolume/PVC state, cloud-init…
netobserv_list_flowsLists NetObserv network flow records from Loki. Use when investigating traffic between workloads, IPs, ports, or protocols in a namespace or time window.
endTimeinteger) - End of time range as Unix epoch seconds. Defaults to now.
filtersstring) - NetObserv filter expression passed to the console plugin (plain text; the client URL-encodes it).
FlowDirection0=Ingress, 1=Egress, 2=Inner), Bytes, Packets, Dscp, Flags
packetLossstring) - Packet loss filter.
recordTypestring) - Flow record type filter.
startTimeinteger) - Start of time range as Unix epoch seconds. Overrides timeRange when set.
netobserv_get_flow_metricsReturns aggregated NetObserv flow metrics as topology or time-series data. Use for throughput, TLS/DNS/drop breakdowns, and namespace or workload traffic…
aggregateBystring) (required) - Primary dimension for netobserv_get_flow_metrics (console plugin /api/flow/metrics).
appapplication workloads (pods/services), excluding infrastructure traffic
ownercontroller owner (Deployment, StatefulSet, …)
hostnode name
zoneavailability zone
clustercluster name (multi-cluster)
networkuser-defined / secondary network name
Throughputtype=Bytes or Packets, function=rate
RTTtype=TimeFlowRttNs, function=avg, min, or p90
Dropstype=PktDropPackets or PktDropBytes, function=rate
dataSourcestring) - Metrics backend: auto (prefer Prometheus, fallback to Loki), prom, or loki.
functionstring) - Aggregation function.
groupsstring) - Optional comma-separated parent scopes when aggregateBy is a topology scope.
netobserv_export_flowsExports 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.
columnsstring) - 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_startStart a Tekton Pipeline by creating a PipelineRun that references it
paramsobject) - 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_lifecycleManage a Tekton PipelineRun lifecycle by restarting it with the same spec or cancelling it by setting spec.status to Cancelled.
tekton_pipelinerun_logsGet logs for all TaskRuns owned by a Tekton PipelineRun. Use this to inspect PipelineRun execution output without locating pods manually.
taskstring) - Pipeline task name to filter by (tekton.dev/pipelineTask label)
tekton_task_startStart a Tekton Task by creating a TaskRun that references it
tekton_taskrun_restartRestart a Tekton TaskRun by creating a new TaskRun with the same spec
tekton_taskrun_logsGet the logs from a Tekton TaskRun by resolving its underlying pod

How to install the kubernetes-mcp-server MCP Server

{
  "mcpServers": {
    "kubernetes": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  }
}

From the project documentation. Replace placeholders and example paths before connecting.