by Flux159
MCP Server for Kubernetes management commands, enabling interaction with Kubernetes clusters to manage pods, deployments, and services.
mcp-server-kubernetes is a Model Context Protocol (MCP) server designed to connect with and manage Kubernetes clusters. It provides a unified API for various kubectl operations, allowing users to interact with their Kubernetes resources programmatically or through compatible MCP clients like Claude Desktop and mcp-chat.
To use mcp-server-kubernetes, you need to have kubectl
installed and configured with a valid kubeconfig file. Helm v3 is optional if you plan to use Helm operations. The server can be run via npx mcp-server-kubernetes
. For integration with Claude Desktop, you can configure it to use the server by adding a JSON entry to its mcpServers
configuration. For command-line interaction, mcp-chat
can be used to connect to the server.
get
, describe
, create
, apply
, delete
, logs
, context
management, explain
, list API resources
, scale
, patch
, rollout
, and a generic kubectl_generic
command.k8s-diagnose
): Offers a systematic troubleshooting flow for Kubernetes pods.kubectl
installed and in your PATH, a valid kubeconfig file with contexts configured, and access to a Kubernetes cluster. Helm v3 is required for Helm operations.kubectl get pods
in a standard terminal to check your cluster connection.ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true
when running the server, or configure it in your Claude Desktop mcpServers
environment variables.kubectl_delete
, uninstall_helm_chart
, cleanup
, and potentially kubectl_generic
are disabled.ADVANCED_README.md
file in the project repository and the DeepWiki link provided in the README for architectural overview.MCP Server that can connect to a Kubernetes cluster and manage it. Supports loading kubeconfig from multiple sources in priority order.
https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
By default, the server loads kubeconfig from ~/.kube/config
. For additional authentication options (environment variables, custom paths, etc.), see ADVANCED_README.md.
The server will automatically connect to your current kubectl context. Make sure you have:
You can verify your connection by asking Claude to list your pods or create a test deployment.
If you have errors open up a standard terminal and run kubectl get pods
to see if you can connect to your cluster without credentials issues.
mcp-chat is a CLI chat client for MCP servers. You can use it to interact with the Kubernetes server.
npx mcp-chat --server "npx mcp-server-kubernetes"
Alternatively, pass it your existing Claude Desktop configuration file from above (Linux should pass the correct path to config):
Mac:
npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"
Windows:
npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"
kubectl_get
kubectl_describe
kubectl_get
kubectl_create
kubectl_apply
kubectl_delete
kubectl_logs
kubectl_context
explain_resource
list_api_resources
kubectl_scale
kubectl_patch
kubectl_rollout
kubectl_generic
ping
kubectl_scale
(replaces legacy scale_deployment
)port_forward
k8s-diagnose
)
The MCP Kubernetes server includes specialized prompts to assist with common diagnostic operations.
This prompt provides a systematic troubleshooting flow for Kubernetes pods. It accepts a keyword
to identify relevant pods and an optional namespace
to narrow the search.
The prompt's output will guide you through an autonomous troubleshooting flow, providing instructions for identifying issues, collecting evidence, and suggesting remediation steps.
Make sure that you have bun installed. Clone the repo & install dependencies:
git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
bun run dev
bun run test
bun run build
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}
bun run chat
See the CONTRIBUTING.md file for details.
You can run the server in a non-destructive mode that disables all destructive operations (delete pods, delete deployments, delete namespaces, etc.):
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true npx mcp-server-kubernetes
For Claude Desktop configuration with non-destructive mode:
{
"mcpServers": {
"kubernetes-readonly": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"env": {
"ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS": "true"
}
}
}
}
All read-only and resource creation/update operations remain available:
kubectl_get
, kubectl_describe
, kubectl_logs
, explain_resource
, list_api_resources
kubectl_apply
, kubectl_create
, kubectl_scale
, kubectl_patch
, kubectl_rollout
install_helm_chart
, upgrade_helm_chart
port_forward
, stop_port_forward
kubectl_context
The following destructive operations are disabled:
kubectl_delete
: Deleting any Kubernetes resourcesuninstall_helm_chart
: Uninstalling Helm chartscleanup
: Cleanup of managed resourceskubectl_generic
: General kubectl command access (may include destructive operations)For additional advanced features, see the ADVANCED_README.md.
See this DeepWiki link for a more indepth architecture overview created by Devin.
This section describes the high-level architecture of the MCP Kubernetes server.
The sequence diagram below illustrates how requests flow through the system:
See this DeepWiki link for a more indepth architecture overview created by Devin.
Go to the releases page, click on "Draft New Release", click "Choose a tag" and create a new tag by typing out a new version number using "v{major}.{minor}.{patch}" semver format. Then, write a release title "Release v{major}.{minor}.{patch}" and description / changelog if necessary and click "Publish Release".
This will create a new tag which will trigger a new release build via the cd.yml workflow. Once successful, the new release will be published to npm. Note that there is no need to update the package.json version manually, as the workflow will automatically update the version number in the package.json file & push a commit to main.
Adding clusters to kubectx.
Reviews feature coming soon
Stay tuned for community discussions and feedback