
Kubernetes MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants look into and manage your Kubernetes or OpenShift cluster: pods, logs, events and any resource.
This server talks straight to the Kubernetes API using your own kubeconfig, so it works with any cluster you can already reach. By default it can list and read resources, and also create, change, run commands in and delete them. It is a single Go program, so you need no kubectl or Helm installed.
It is a community project in the containers organization, not made by Kubernetes itself. Turn on read-only mode and pick a limited service account before you point it at production.
Good for
- Platform and DevOps engineers who debug clusters by asking in plain words
- Developers who need pod logs, events and resource usage without remembering kubectl flags
- OpenShift users, since it supports OpenShift projects and routes
- Teams who want to run it in read-only mode against a limited service account
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install kubernetes-mcp-server
Claude Code
- 1
Copy this prompt.
Add the kubernetes-mcp-server server to Claude Code. Run this command: claude mcp add kubernetes -- npx -y kubernetes-mcp-server Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Lists the pods in your cluster
Lists pods across all namespaces. You can filter by label or field and page through long lists.
Try: “Show me every pod that is not Running.”
Read ·
pods_listLists the pods in one namespace
Lists pods in the namespace you name, with the same filters.
Try: “List the pods in the payments namespace.”
Read ·
pods_list_in_namespaceShows one pod in detail
Returns a single pod by name.
Try: “Show me the details of pod api-7d9f in staging.”
Read ·
pods_getReads a pod's logs
Returns the last lines of a pod's logs, 100 by default. It can return logs from the previous container run.
Try: “Show the last 200 log lines of the checkout pod and explain the error.”
Read ·
pods_logShows CPU and memory use of pods
Reads pod CPU and memory from the Kubernetes Metrics Server.
Try: “Which pods in prod use the most memory?”
Read ·
pods_topLists cluster events
Lists warnings, errors and state changes, which helps debug why something fails.
Try: “What warning events happened in the web namespace today?”
Read ·
events_listLists namespaces
Lists every namespace in the current cluster.
Try: “List all namespaces.”
Read ·
namespaces_listLists OpenShift projects
Lists OpenShift projects in the current cluster.
Try: “Which OpenShift projects exist on this cluster?”
Read ·
projects_listShows CPU and memory use of nodes
Reads node CPU and memory from the Metrics Server for one node or all of them.
Try: “Which node is under the most CPU load?”
Read ·
nodes_topShows detailed stats for one node
Reads detailed CPU, memory, disk and network stats for a node and its pods through the kubelet.
Try: “Give me the stats summary for node worker-2.”
Read ·
nodes_stats_summaryReads system logs from a node
Gets logs such as kubelet or a log file path from a node through the Kubernetes API.
Try: “Show the last 100 kubelet log lines from node worker-2.”
Read ·
nodes_logLists any kind of cluster resource
Lists resources of any type, such as Deployments, Services or Ingresses, with label and field filters.
Try: “List all Deployments in the prod namespace.”
Read ·
resources_listShows one resource of any kind
Returns a single resource by version, kind and name.
Try: “Show me the Ingress named web in prod.”
Read ·
resources_getLooks up the right API version for a kind
Finds the API version, plural name and scope for a resource kind. It appears only in the current main branch, not the latest release.
Try: “What API group is the Route kind in?”
Read ·
api_resources_listLists the clusters in your kubeconfig
Lists the context names and server addresses in your kubeconfig file.
Try: “Which clusters can you reach?”
Files ·
configuration_contexts_listShows your kubeconfig
Returns your Kubernetes configuration as YAML, trimmed to the current context by default.
Try: “Show my current kubeconfig context.”
Files ·
configuration_viewLists available clusters or targets
Lists the targets the server can use.
Try: “List the available targets.”
Read ·
targets_listCreates or updates any resource from a manifest
Applies a full YAML or JSON manifest with server-side apply. Fields the earlier version set but the new manifest leaves out are removed.
Try: “Apply this Deployment manifest to the staging namespace.”
Write ·
resources_create_or_updateReads or changes the replica count
Returns the current scale of a Deployment or StatefulSet and sets a new one if you give a number.
Try: “Scale the web deployment in prod to 5 replicas.”
Write ·
resources_scaleStarts a pod from a container image
Runs a pod from the image you give, and can expose a port.
Try: “Run nginx:latest in the test namespace and expose port 80.”
Write ·
pods_runRuns a command inside a pod
Runs a command in a pod container and returns the output, like a shell session.
Try: “Run "ls -l /app" inside the api pod.”
Runs code ·
pods_execDeletes a pod
Deletes a pod by name. A controller usually creates a new one.
Try: “Delete the crashing pod api-7d9f in staging.”
Delete ·
pods_deleteDeletes any resource
Deletes a resource of any kind by name, with an optional grace period (zero deletes immediately).
Try: “Delete the Service named old-api in staging.”
Delete ·
resources_deleteLists Helm releases
Lists Helm releases in a namespace or all namespaces. Needs the helm toolset turned on.
Try: “Which Helm releases are installed in prod?”
Read ·
helm_listInstalls a Helm chart
Installs a chart as a release in a namespace, with optional values. Needs the helm toolset turned on.
Try: “Install the grafana chart in the monitoring namespace.”
Write ·
helm_installRemoves a Helm release
Uninstalls a Helm release. Needs the helm toolset turned on.
Try: “Uninstall the release test-grafana.”
Delete ·
helm_uninstallReads the logs of a Tekton pipeline run
Gets logs for all task runs owned by a pipeline run. Needs the tekton toolset turned on.
Try: “Show the logs of pipeline run build-42.”
Read ·
tekton_pipelinerun_logsDiagnoses a failed Tekton pipeline run
Collects read-only evidence about a failed run: conditions, failed task runs and steps, and log tails. Needs the tekton toolset turned on.
Try: “Why did pipeline run build-42 fail?”
Read ·
tekton_pipelinerun_diagnoseReads the logs of a Tekton task run
Gets logs from a task run through its pod. Needs the tekton toolset turned on.
Try: “Show the logs of task run unit-tests-7.”
Read ·
tekton_taskrun_logsStarts a Tekton pipeline
Starts a pipeline by creating a PipelineRun. Needs the tekton toolset turned on.
Try: “Start the deploy pipeline.”
Write ·
tekton_pipeline_startStarts a Tekton task
Starts a task by creating a TaskRun. Needs the tekton toolset turned on.
Try: “Start the lint task.”
Write ·
tekton_task_startRestarts a Tekton task run
Creates a new task run with the same spec. Needs the tekton toolset turned on.
Try: “Restart task run unit-tests-7.”
Write ·
tekton_taskrun_restartRestarts or cancels a pipeline run
Restarts a pipeline run with the same spec or cancels it. Needs the tekton toolset turned on.
Try: “Cancel pipeline run build-42.”
Write ·
tekton_pipelinerun_lifecycle
Read from the source code
Permissions
high risk · 5 things to watch
High risk
By default the assistant can run commands in pods and delete pods and any other resource your account can reach. Turn on read-only mode, and use a service account that can only read, before you use it on a real cluster.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete resources and run commands in pods
The default tools include deleting any resource and running commands inside a pod. Use read-only mode, or a service account without those rights. github.com
It can create or change any resource
One tool applies full manifests and another scales workloads. A wrong manifest can replace live settings. github.com
Access is your whole kubeconfig
It can use every context in your kubeconfig. Keep production out of that file, or limit the account. github.com
Secrets can be read unless you block them
The README shows a denied_resources setting that blocks the Secret kind. Add it if the assistant should not see secrets. github.com
Extra toolsets are off by default
Helm, Tekton, Kiali, KubeVirt and the observability tools only load when you list them in the toolsets setting. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Set read_only = true in the TOML config file and start the server with --config pointing at it. The README also shows a toolsets list and a denied_resources list that blocks Secrets. A second setting, disable_destructive = true, turns off only the tools marked destructive (delete and update) and leaves the other write tools on. |
|---|---|
| Talks to | The Kubernetes API server of each cluster in your kubeconfig |
| Sign-in and keys | No separate key. It uses your kubeconfig or in-cluster credentials. HTTP mode can use OAuth/OIDC. |
| Scopes |
|
Questions
Is the Kubernetes MCP server official?
No. It is a community project in the containers GitHub organization, not made by the Kubernetes project.
Do I need kubectl installed?
No. The README says it is a native Go program that talks to the Kubernetes API directly, with no kubectl or Helm needed. You do need access to a cluster.
Can I make it read-only?
Yes. Set read_only = true in a TOML config file and start the server with --config pointing at that file. Do this before using it on production.
Can it delete things?
Yes. By default it can delete pods and any other resource, and run commands in pods. Read-only mode removes those abilities.
Does it work with OpenShift?
Yes. The README says it supports Kubernetes and OpenShift and has a tool for listing OpenShift projects.
How do I turn on Helm or Tekton tools?
List them in the toolsets setting of the config file. Only the core and config toolsets are on by default.
How many tools does it have?
The README lists 77 across all toolsets, but only about 20 are on by default. This page shows the default ones plus Helm and Tekton, so the list is partial.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
kubernetes-mcp-server- Registry
- npm
- Transport
- stdio, Streamable HTTP
- Version
- 0.1.0
- License
- Apache-2.0
- Last commit
- Oct 30, 2026
- Open issues
- 65
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- Kubernetes MCP Server README · github.com
- Configuration reference · github.com
- Configuration reference (read_only, disable_destructive) · github.com