K
Kubernetes and OpenShift
community
devtools
A powerful Kubernetes MCP server with additional support for OpenShift. Besides providing CRUD operations for any Kubernetes resource, this server provides specialized tools to interact with your cluster.
Kubernetes MCP Server
β¨ Features | π Getting Started | π₯ Demos | βοΈ Configuration | π οΈ Tools | π§βπ» Development
β¨ Features <a id="features"></a>
A powerful and flexible Kubernetes Model Context Protocol (MCP) server implementation with support for Kubernetes and OpenShift.
- β
Configuration:
- Automatically detect changes in the Kubernetes configuration and update the MCP server.
- View and manage the current Kubernetes
or in-cluster configuration..kube/config
- β
Generic Kubernetes Resources: Perform operations on any Kubernetes or OpenShift resource.
- Any CRUD operation (Create or Update, Get, List, Delete).
- β
Pods: Perform Pod-specific operations.
- List pods in all namespaces or in a specific namespace.
- Get a pod by name from the specified namespace.
- Delete a pod by name from the specified namespace.
- Show logs for a pod by name from the specified namespace.
- Exec into a pod and run a command.
- Run a container image in a pod and optionally expose it.
- β Namespaces: List Kubernetes Namespaces.
- β Events: View Kubernetes events in all namespaces or in a specific namespace.
- β Projects: List OpenShift Projects.
Unlike other Kubernetes MCP server implementations, this IS NOT just a wrapper around
kubectl
or helm
command-line tools.There is NO NEED for external dependencies or tools to be installed on the system.
If you're using the native binaries you don't even need to have Node or Python installed on your system.
π Getting Started <a id="getting-started"></a>
Requirements
- Access to a Kubernetes cluster.
Claude Desktop
Using npx
If you have npm installed, this is the fastest way to get started with
kubernetes-mcp-server
on Claude Desktop.Open your
claude_desktop_config.json
and add the mcp server to the list of mcpServers
:{ "mcpServers": { "kubernetes": { "command": "npx", "args": [ "-y", "kubernetes-mcp-server@latest" ] } } }
VS Code / VS Code Insiders
Install the Kubernetes MCP server extension in VS Code Insiders by pressing the following link:
<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">
<img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">
Alternatively, you can install the extension manually by running the following command:
# For VS Code code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}' # For VS Code Insiders code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
Goose CLI
Goose CLI is the easiest (and cheapest) way to get rolling with artificial intelligence (AI) agents.
Using npm
If you have npm installed, this is the fastest way to get started with
kubernetes-mcp-server
.Open your goose
config.yaml
and add the mcp server to the list of mcpServers
:extensions: kubernetes: command: npx args: - -y - kubernetes-mcp-server@latest
π₯ Demos <a id="demos"></a>
Diagnosing and automatically fixing an OpenShift Deployment
Demo showcasing how Kubernetes MCP server is leveraged by Claude Desktop to automatically diagnose and fix a deployment in OpenShift without any user assistance.
Vibe Coding a simple game and deploying it to OpenShift
In this demo, I walk you through the process of Vibe Coding a simple game using VS Code and how to leverage Podman MCP server and Kubernetes MCP server to deploy it to OpenShift.
<a href="https://www.youtube.com/watch?v=l05jQDSrzVI" target="_blank">
<img src="docs/images/vibe-coding.jpg" alt="Vibe Coding: Build & Deploy a Game on Kubernetes" width="240" />
</a>
βοΈ Configuration <a id="configuration"></a>
The Kubernetes MCP server can be configured using command line (CLI) arguments.
You can run the CLI executable either by using
npx
or by downloading the latest release binary.# Run the Kubernetes MCP server using npx (in case you have npm installed) npx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using the latest release binary ./kubernetes-mcp-server --help
Configuration Options
Option | Description |
---|---|
| Starts the MCP server in Server-Sent Event (SSE) mode and listens on the specified port. |
| Sets the logging level (values from 0-9). Similar to kubectl logging levels. |
| Path to the Kubernetes configuration file. If not provided, it will try to resolve the configuration (in-cluster, default location, etc.). |
π οΈ Tools <a id="tools"></a>
configuration_view
configuration_view
Get the current Kubernetes configuration content as a kubeconfig YAML
Parameters:
(minified
, optional, default:boolean
)true
- Return a minified version of the configuration
- If
, keeps only the current-context and relevant configuration piecestrue
- If
, returns all contexts, clusters, auth-infos, and usersfalse
events_list
events_list
List all the Kubernetes events in the current cluster from all namespaces
Parameters:
(namespace
, optional)string
- Namespace to retrieve the events from. If not provided, will list events from all namespaces
namespaces_list
namespaces_list
List all the Kubernetes namespaces in the current cluster
Parameters: None
pods_delete
pods_delete
Delete a Kubernetes Pod in the current or provided namespace with the provided name
Parameters:
(name
, required)string
- Name of the Pod to delete
(namespace
, required)string
- Namespace to delete the Pod from
pods_exec
pods_exec
Execute a command in a Kubernetes Pod in the current or provided namespace with the provided name and command
Parameters:
(command
, required)string[]
- Command to execute in the Pod container
- First item is the command, rest are arguments
- Example:
["ls", "-l", "/tmp"]
(string, required)name
- Name of the Pod
(string, required)namespace
- Namespace of the Pod
pods_get
pods_get
Get a Kubernetes Pod in the current or provided namespace with the provided name
Parameters:
(name
, required)string
- Name of the Pod
(namespace
, required)string
- Namespace to get the Pod from
pods_list
pods_list
List all the Kubernetes pods in the current cluster from all namespaces
Parameters: None
pods_list_in_namespace
pods_list_in_namespace
List all the Kubernetes pods in the specified namespace in the current cluster
Parameters:
(namespace
, required)string
- Namespace to list pods from
pods_log
pods_log
Get the logs of a Kubernetes Pod in the current or provided namespace with the provided name
Parameters:
(name
, required)string
- Name of the Pod to get logs from
(namespace
, required)string
- Namespace to get the Pod logs from
(container
, optional)string
- Name of the Pod container to get logs from
pods_run
pods_run
Run a Kubernetes Pod in the current or provided namespace with the provided container image and optional name
Parameters:
(image
, required)string
- Container Image to run in the Pod
(namespace
, required)string
- Namespace to run the Pod in
(name
, optional)string
- Name of the Pod (random name if not provided)
(port
, optional)number
- TCP/IP port to expose from the Pod container
- No port exposed if not provided
projects_list
projects_list
List all the OpenShift projects in the current cluster
resources_create_or_update
resources_create_or_update
Create or update a Kubernetes resource in the current cluster by providing a YAML or JSON representation of the resource
Parameters:
(resource
, required)string
- A JSON or YAML containing a representation of the Kubernetes resource
- Should include top-level fields such as apiVersion, kind, metadata, and spec
Common apiVersion and kind include:
- v1 Pod
- v1 Service
- v1 Node
- apps/v1 Deployment
- networking.k8s.io/v1 Ingress
resources_delete
resources_delete
Delete a Kubernetes resource in the current cluster
Parameters:
(apiVersion
, required)string
- apiVersion of the resource (e.g.,
,v1
,apps/v1
)networking.k8s.io/v1
- apiVersion of the resource (e.g.,
(kind
, required)string
- kind of the resource (e.g.,
,Pod
,Service
,Deployment
)Ingress
- kind of the resource (e.g.,
(name
, required)string
- Name of the resource
(namespace
, optional)string
- Namespace to delete the namespaced resource from
- Ignored for cluster-scoped resources
- Uses configured namespace if not provided
resources_get
resources_get
Get a Kubernetes resource in the current cluster
Parameters:
(apiVersion
, required)string
- apiVersion of the resource (e.g.,
,v1
,apps/v1
)networking.k8s.io/v1
- apiVersion of the resource (e.g.,
(kind
, required)string
- kind of the resource (e.g.,
,Pod
,Service
,Deployment
)Ingress
- kind of the resource (e.g.,
(name
, required)string
- Name of the resource
(namespace
, optional)string
- Namespace to retrieve the namespaced resource from
- Ignored for cluster-scoped resources
- Uses configured namespace if not provided
resources_list
resources_list
List Kubernetes resources and objects in the current cluster
Parameters:
(apiVersion
, required)string
- apiVersion of the resources (e.g.,
,v1
,apps/v1
)networking.k8s.io/v1
- apiVersion of the resources (e.g.,
(kind
, required)string
- kind of the resources (e.g.,
,Pod
,Service
,Deployment
)Ingress
- kind of the resources (e.g.,
(namespace
, optional)string
- Namespace to retrieve the namespaced resources from
- Ignored for cluster-scoped resources
- Lists resources from all namespaces if not provided
π§βπ» Development <a id="development"></a>
Running with mcp-inspector
Compile the project and run the Kubernetes MCP server with mcp-inspector to inspect the MCP server.
# Compile the project make build # Run the Kubernetes MCP server with mcp-inspector npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server
Related Servers
Adfin
official
The only platform you need to get paid - all payments in one place, invoicing and accounting reconciliations with [Adfin](https://www.adfin.com/).
View Details
APIMatic MCP
official
APIMatic MCP Server is used to validate OpenAPI specifications using [APIMatic](https://www.apimatic.io/). The server processes OpenAPI files and returns validation summaries by leveraging APIMaticβs API.
View Details