MCP Server Kubernetes
Export traces to Datadog for observability.
Export traces to Grafana (via Tempo or Grafana Cloud) for observability.
Manage Helm charts on Kubernetes clusters. Supports install, upgrade, uninstall, and template-based operations.
Export distributed traces to Jaeger for monitoring tool calls and performance.
Connect to and manage Kubernetes clusters. Provides tools for getting, creating, updating, deleting resources, executing kubectl commands, port forwarding, scaling, rollouts, and node management.
Export traces to New Relic for observability.
Collect and export distributed traces via OpenTelemetry with configurable sampling to various backends.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Kubernetes list all pods in the default namespace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server Kubernetes
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
Installation & Usage
Prerequisites
Before using this MCP server with any tool, make sure you have:
kubectl installed and in your PATH
A valid kubeconfig file with contexts configured
Access to a Kubernetes cluster configured for kubectl (e.g. minikube, Rancher Desktop, GKE, etc.)
Helm v3 installed and in your PATH (no Tiller required). Optional if you don't plan to use Helm.
You can verify your connection by running kubectl get pods in a terminal to ensure you can connect to your cluster without credential issues.
By default, the server loads kubeconfig from ~/.kube/config. For additional authentication options (environment variables, custom paths, etc.), see ADVANCED_README.md.
Claude Code
Add the MCP server to Claude Code using the built-in command:
claude mcp add kubernetes -- npx mcp-server-kubernetesThis will automatically configure the server in your Claude Code MCP settings.
Claude Desktop
Add the following configuration to your Claude Desktop config file:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}Claude Desktop Connector via mcpb
MCP Server Kubernetes is also available as a mcpb (formerly dxt) extension. In Claude Desktop, go to Settings (Cmd+, on Mac) -> Extensions -> Browse Extensions and scroll to find mcp-server-kubernetes in the modal. Install it & it will install & utilize kubectl via command line & your kubeconfig.
To manually install, you can also get the .mcpb by going to the latest Release and downloading it.
VS Code
For VS Code integration, you can use the MCP server with extensions that support the Model Context Protocol:
Install a compatible MCP extension (such as Claude Dev or similar MCP clients)
Configure the extension to use this server:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"description": "Kubernetes cluster management and operations"
}
}
}Cursor
Cursor supports MCP servers through its AI integration. Add the server to your Cursor MCP configuration:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}The server will automatically connect to your current kubectl context. You can verify the connection by asking the AI assistant to list your pods or create a test deployment.
Related MCP server: MCP Server Kubernetes
Usage with mcp-chat
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"Gemini CLI
Gemini CLI allows you to install mcp servers as extensions. From a shell, install the extension by pointing to this repo:
gemini extensions install https://github.com/Flux159/mcp-server-kubernetesFeatures
Connect to a Kubernetes cluster
Unified kubectl API for managing resources
Get or list resources with
kubectl_getDescribe resources with
kubectl_describeList resources with
kubectl_getCreate resources with
kubectl_createApply YAML manifests with
kubectl_applyDelete resources with
kubectl_deleteGet logs with
kubectl_logsManage kubectl contexts with
kubectl_contextExplain Kubernetes resources with
explain_resourceList API resources with
list_api_resourcesScale resources with
kubectl_scaleUpdate field(s) of a resource with
kubectl_patchManage deployment rollouts with
kubectl_rolloutExecute any kubectl command with
kubectl_genericVerify connection with
ping
Advanced operations
Scale deployments with
kubectl_scale(replaces legacyscale_deployment)Port forward to pods and services with
port_forwardRun Helm operations
Install, upgrade, and uninstall charts
Support for custom values, repositories, and versions
Template-based installation (
helm_template_apply) to bypass authentication issuesTemplate-based uninstallation (
helm_template_uninstall) to bypass authentication issues
Pod cleanup operations
Clean up problematic pods (
cleanup_pods) in states: Evicted, ContainerStatusUnknown, Completed, Error, ImagePullBackOff, CrashLoopBackOff
Node management operations
Cordoning, draining, and uncordoning nodes (
node_management) for maintenance and scaling operations
Troubleshooting Prompt (
k8s-diagnose)Guides through a systematic Kubernetes troubleshooting flow for pods based on a keyword and optional namespace.
Non-destructive mode for read and create/update-only access to clusters
Secrets masking for security (masks sensitive data in
kubectl get secretscommands, does not affect logs)OpenTelemetry Observability (opt-in)
Distributed tracing for all tool calls
Export to Jaeger, Tempo, Grafana, or any OTLP backend
Configurable sampling strategies
Rich span attributes (tool name, duration, K8s context, errors)
See docs/OBSERVABILITY.md for details
Observability
The MCP Kubernetes server includes optional OpenTelemetry integration for comprehensive observability. This feature is disabled by default and can be enabled via environment variables or Helm configuration.
Quick Start
Enable observability with environment variables:
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
npx mcp-server-kubernetesWhat Gets Traced
All tool calls: kubectl_get, kubectl_apply, kubectl_logs, etc.
Execution duration: How long each operation takes
Success/failure status: Automatic error tracking
Kubernetes context: Namespace, context, resource type
Rich metadata: Host, process, and custom attributes
Backends Supported
Works with any OTLP-compatible backend:
Jaeger (open source)
Grafana Tempo (open source)
Grafana Cloud (commercial)
Datadog, New Relic, Honeycomb, Lightstep, AWS X-Ray
Configuration
See docs/OBSERVABILITY.md for comprehensive documentation including:
Configuration options
Deployment examples (Kubernetes, Helm, Claude Code)
Sampling strategies
Production best practices
Troubleshooting guide
Example with Jaeger
# Start Jaeger
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latest
# Enable telemetry
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_TRACES_SAMPLER=always_on
# Run server
npx mcp-server-kubernetes
# View traces: http://localhost:16686Prompts
The MCP Kubernetes server includes specialized prompts to assist with common diagnostic operations.
/k8s-diagnose Prompt
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.
Local Development
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 installDevelopment Workflow
Start the server in development mode (watches for file changes):
bun run devRun unit tests:
bun run testBuild the project:
bun run buildLocal Testing with Inspector
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector linkLocal testing with Claude Desktop
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}Local testing with mcp-chat
bun run chatContributing
See the CONTRIBUTING.md file for details.
Advanced
Non-Destructive Mode
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-kubernetesFor Claude Desktop configuration with non-destructive mode:
{
"mcpServers": {
"kubernetes-readonly": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"env": {
"ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS": "true"
}
}
}
}Commands Available in Non-Destructive Mode
All read-only and resource creation/update operations remain available:
Resource Information:
kubectl_get,kubectl_describe,kubectl_logs,explain_resource,list_api_resourcesResource Creation/Modification:
kubectl_apply,kubectl_create,kubectl_scale,kubectl_patch,kubectl_rolloutHelm Operations:
install_helm_chart,upgrade_helm_chart,helm_template_apply,helm_template_uninstallConnectivity:
port_forward,stop_port_forwardContext Management:
kubectl_context
Commands Disabled in Non-Destructive Mode
The following destructive operations are disabled:
kubectl_delete: Deleting any Kubernetes resourcesuninstall_helm_chart: Uninstalling Helm chartscleanup: Cleanup of managed resourcescleanup_pods: Cleaning up problematic podsnode_management: Node management operations (can drain nodes)kubectl_generic: General kubectl command access (may include destructive operations)
For additional advanced features, see the ADVANCED_README.md and also the docs folder for specific information on helm_install, helm_template_apply, node management & pod cleanup.
Architecture
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.
Request Flow
The sequence diagram below illustrates how requests flow through the system:
sequenceDiagram
participant Client
participant Transport as Transport Layer
participant Server as MCP Server
participant Filter as Tool Filter
participant Handler as Request Handler
participant K8sManager as KubernetesManager
participant K8s as Kubernetes API
Note over Transport: StdioTransport or<br>SSE Transport
Client->>Transport: Send Request
Transport->>Server: Forward Request
alt Tools Request
Server->>Filter: Filter available tools
Note over Filter: Remove destructive tools<br>if in non-destructive mode
Filter->>Handler: Route to tools handler
alt kubectl operations
Handler->>K8sManager: Execute kubectl operation
K8sManager->>K8s: Make API call
else Helm operations
Handler->>K8sManager: Execute Helm operation
K8sManager->>K8s: Make API call
else Port Forward operations
Handler->>K8sManager: Set up port forwarding
K8sManager->>K8s: Make API call
end
K8s-->>K8sManager: Return result
K8sManager-->>Handler: Process response
Handler-->>Server: Return tool result
else Resource Request
Server->>Handler: Route to resource handler
Handler->>K8sManager: Get resource data
K8sManager->>K8s: Query API
K8s-->>K8sManager: Return data
K8sManager-->>Handler: Format response
Handler-->>Server: Return resource data
end
Server-->>Transport: Send Response
Transport-->>Client: Return Final ResponseSee this DeepWiki link for a more indepth architecture overview created by Devin.
Publishing new release
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.
Not planned
Adding clusters to kubectx.
Star History
🖊️ Cite
If you find this repo useful, please cite:
@software{Patel_MCP_Server_Kubernetes_2024,
author = {Patel, Paras and Sonwalkar, Suyog},
month = jul,
title = {{MCP Server Kubernetes}},
url = {https://github.com/Flux159/mcp-server-kubernetes},
version = {2.5.0},
year = {2024}
}Available Tools
23 toolscleanupCDestructive
Cleanup all managed resources
Inputs: no named parameters.
exec_in_podADestructive
Execute a command in a Kubernetes pod or container and return the output. Command must be an array of strings where the first element is the executable and remaining elements are arguments. This executes directly without shell interpretation for security.
Inputs: name (required), command (required), namespace, container, +2 more.
explain_resourceBRead-only
Get documentation for a Kubernetes resource or field
Inputs: resource (required), apiVersion, recursive, context, +1 more.
install_helm_chartADestructive
Install a Helm chart with support for both standard and template-based installation
Inputs: name (required), chart (required), namespace (required), context, +5 more.
kubectl_applyCDestructive
Apply a Kubernetes YAML manifest from a string or file
Inputs: manifest, filename, namespace, dryRun, +2 more.
kubectl_contextBRead-only
Manage Kubernetes contexts - list, get, or set the current context
Inputs: operation (required), name, showCurrent, detailed, +1 more.
kubectl_createC
Create Kubernetes resources using various methods (from file or using subcommands)
Inputs: dryRun, output, validate, manifest, +18 more.
kubectl_deleteBDestructive
Delete Kubernetes resources by resource type, name, labels, or from a manifest file
Inputs: resourceType, name, namespace, labelSelector, +6 more.
kubectl_describeARead-only
Describe Kubernetes resources by resource type, name, and optionally namespace
Inputs: resourceType (required), name (required), namespace, context, +1 more.
kubectl_genericBDestructive
Execute any kubectl command with the provided arguments and flags
Inputs: command (required), subCommand, resourceType, name, +5 more.
kubectl_getARead-only
Get or list Kubernetes resources by resource type, name, and optionally namespace
Inputs: resourceType (required), name, namespace, output, +5 more.
kubectl_logsBRead-only
Get logs from Kubernetes resources like pods, deployments, or jobs
Inputs: resourceType (required), name (required), namespace (required), container, +8 more.
kubectl_patchBDestructive
Update field(s) of a resource using strategic merge patch, JSON merge patch, or JSON patch
Inputs: resourceType (required), name (required), namespace, patchType, +4 more.
kubectl_reconnectA
Reconnect to the Kubernetes API server by recreating all API clients. Use this after cluster upgrades (e.g., EKS control plane upgrades that rotate ENIs/IPs) to force fresh DNS resolution and new TCP connections.
Inputs: no named parameters.
kubectl_rolloutBDestructive
Manage the rollout of a resource (e.g., deployment, daemonset, statefulset)
Inputs: subCommand (required), resourceType (required), name (required), namespace (required), +5 more.
kubectl_scaleBDestructive
Scale a Kubernetes deployment
Inputs: name (required), replicas (required), namespace, resourceType, +1 more.
list_api_resourcesCRead-only
List the API resources available in the cluster
Inputs: apiGroup, namespaced, context, verbs, +1 more.
node_managementBDestructive
Manage Kubernetes nodes with cordon, drain, and uncordon operations
Inputs: operation (required), nodeName, force, gracePeriod, +5 more.
pingARead-only
Verify that the counterpart is still responsive and the connection is alive.
Inputs: no named parameters.
port_forwardC
Forward a local port to a port on a Kubernetes resource
Inputs: resourceType (required), resourceName (required), localPort (required), targetPort (required), +1 more.
stop_port_forwardD
Stop a port-forward process
Inputs: id (required).
uninstall_helm_chartCDestructive
Uninstall a Helm chart release
Inputs: name (required), namespace (required), context.
upgrade_helm_chartCDestructive
Upgrade an existing Helm chart release
Inputs: name (required), chart (required), namespace (required), context, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Each tool has a clearly distinct purpose, from kubectl operations to Helm management and node control. Even similar actions like kubectl_apply and kubectl_create are differentiated by input type. No overlapping functions.
Tools are grouped with prefixes like kubectl_, helm_, and standalone names (e.g., exec_in_pod). Within each group naming is consistent, but the mix of prefixed and non-prefixed tools creates minor inconsistency.
23 tools is well-scoped for Kubernetes management, covering essential operations without redundancy. Each tool addresses a specific need, and the count feels complete but not overwhelming.
Covers core Kubernetes lifecycle (create, read, update, delete, rollout, scale, logs, exec), Helm chart management, node ops, port forwarding, and includes a generic kubectl command for edge cases. No obvious gaps.
Maintenance
Related MCP Connectors
Manage Rackspace Spot Kubernetes Cloudspaces, node pools, and VMs from your AI assistant.
Manage Kubernetes clusters, deployments, databases, secrets and observability on Mengi Cloud.
Deploy applications and manage governed Kubernetes preview spaces and capacity.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables advanced management of Kubernetes clusters through natural language interactions. Supports querying, managing, and monitoring pods, deployments, nodes, and logs across multiple contexts and namespaces.10MIT
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive Kubernetes cluster management through kubectl operations, Helm chart deployments, pod troubleshooting, and node management. Supports both read-only and full cluster administration capabilities with built-in safety features.13,114 npmMIT
- AlicenseBqualityDmaintenanceEnables connection to a Kubernetes cluster to list and manage pods, services, deployments, and nodes, create/delete/describe pods, inspect namespaces, and retrieve logs for debugging.1113,114 npmMIT
- AlicenseBqualityDmaintenanceEnables connecting to a Kubernetes cluster to manage it, including listing pods, services, deployments, nodes, and namespaces, creating and deleting pods, describing pods, and retrieving logs for debugging.1113,114 npmMIT