by strowk
mcp-k8s-go is a Golang-based MCP server that connects to Kubernetes, enabling browsing of pods, logs, events, and namespaces. It is designed to be extensible and integrates with tools like Inspector and Claude Desktop.
mcp-k8s-go is a Golang-based server that implements the Model Context Protocol (MCP) to interact with Kubernetes clusters. It allows users to browse and manage Kubernetes resources such as pods, logs, events, and namespaces, providing a programmatic interface for various tools and applications.
mcp-k8s-go can be used in several ways:
npx @modelcontextprotocol/inspector npx @strowk/mcp-k8s
to use the latest published version.npx -y @smithery/cli install @strowk/mcp-k8s --client claude
npx @michaellatman/mcp-get@latest install @strowk/mcp-k8s
npm install -g @strowk/mcp-k8s
and configure claude_desktop_config.json
.mcp-k8s-go
in your PATH, and configure claude_desktop_config.json
.go get github.com/strowk/mcp-k8s-go
and go install github.com/strowk/mcp-k8s-go
, then configure claude_desktop_config.json
.docker run -i -v ~/.kube/config:/home/nonroot/.kube/config --rm mcpk8s/server:latest
and configure claude_desktop_config.json
.Environment variables and command-line options like KUBECONFIG
, --allowed-contexts
, and --readonly
can be used for configuration.
Q: What is MCP? A: MCP stands for Model Context Protocol, which is a protocol designed to help AI models understand and interact with various contexts and tools.
Q: Can I restrict access to certain Kubernetes contexts?
A: Yes, you can use the --allowed-contexts
command-line option to specify a comma-separated list of allowed Kubernetes contexts.
Q: Can I run mcp-k8s-go in read-only mode?
A: Yes, you can use the --readonly
command-line option to disable any tools that can write changes to the cluster.
MCP 💬 prompt 🗂️ resource 🤖 tool
To use latest published version with Inspector you can run this:
npx @modelcontextprotocol/inspector npx @strowk/mcp-k8s
Following chat with Claude Desktop demonstrates how it looks when selected particular context as a resource and then asked to check pod logs for errors in kube-system namespace:
To use this MCP server with Claude Desktop (or any other client) you might need to choose which way of installation to use.
You have multiple options:
Smithery | mcp-get | Pre-built NPM | Pre-built in Github | From sources | Using Docker | |
---|---|---|---|---|---|---|
Claude Setup | Auto | Auto | Manual | Manual | Manual | Manual |
Prerequisite | Node.js | Node.js | Node.js | None | Golang | Docker |
To install MCP K8S Go for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @strowk/mcp-k8s --client claude
To install MCP K8S Go for Claude Desktop automatically via mcp-get:
npx @michaellatman/mcp-get@latest install @strowk/mcp-k8s
Use this if you have npm installed and want to use pre-built binaries:
npm install -g @strowk/mcp-k8s
Then check version by running mcp-k8s --version
and if this printed installed version, you can proceed to add configuration to claude_desktop_config.json
file:
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s",
"args": []
}
}
}
, or using npx
with any client:
npx @strowk/mcp-k8s
For example for Claude:
{
"mcpServers": {
"mcp_k8s": {
"command": "npx",
"args": [
"@strowk/mcp-k8s"
]
}
}
}
Head to GitHub releases and download the latest release for your platform.
Unpack the archive, which would contain binary named mcp-k8s-go
, put that binary somewhere in your PATH and then add the following configuration to the claude_desktop_config.json
file:
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s-go",
"args": []
}
}
}
You would need Golang installed to build this project:
go get github.com/strowk/mcp-k8s-go
go install github.com/strowk/mcp-k8s-go
, and then add the following configuration to the claude_desktop_config.json
file:
{
"mcpServers": {
"mcp_k8s_go": {
"command": "mcp-k8s-go",
"args": []
}
}
}
This server is built and published to Docker Hub since 0.3.1-beta.2 release with multi-arch images available for linux/amd64 and linux/arm64 architectures.
You can use latest tag f.e like this:
docker run -i -v ~/.kube/config:/home/nonroot/.kube/config --rm mcpk8s/server:latest
Windows users might need to replace ~/.kube/config
with //c/Users/<username>/.kube/config
at least in Git Bash.
For Claude:
{
"mcpServers": {
"mcp_k8s_go": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"~/.kube/config:/home/nonroot/.kube/config",
"--rm",
"mcpk8s/server:latest"
]
}
}
}
The following environment variables are used by the MCP server:
KUBECONFIG
: Path to your Kubernetes configuration file (optional, defaults to ~/.kube/config)The following command-line options are supported:
--allowed-contexts=<ctx1,ctx2,...>
: Comma-separated list of allowed Kubernetes contexts that users can access. If not specified, all contexts are allowed.--readonly
: Disables any tool which can write changes to the cluster--help
: Display help information--version
: Display version informationFor example if you are configuring Claude Desktop, you can add the following configuration to claude_desktop_config.json
file:
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s",
"args": [
"--allowed-contexts=dev,prod",
"--readonly"
]
}
}
}
, which would allow only dev
and prod
contexts to be used and would disable any tool which can write changes to the cluster.
Reviews feature coming soon
Stay tuned for community discussions and feedback