Golang-based MCP server connecting to Kubernetes
MCP K8S Go
Features ⚙ Browse With Inspector ⚙ Use With Claude ⚙ Contributing
Features
- 🗂️ resource: K8S contexts as read from kubeconfig configurations
- 🤖 tool: list-k8s-contexts
- 🤖 tool: list-k8s-namespaces in a given context
- 🤖 tool: list-k8s-nodes in a given context
- 🤖 tool: list-k8s-resources in a given context and namespace for specified resource kind
- includes custom mappings for resources like pods, services, deployments
- 🤖 tool: get-k8s-resource in a given context and namespace for specified name and resource kind
- 🤖 tool: list-k8s-events in a given context and namespace
- 🤖 tool: get-k8s-pod-logs in a given context and namespace for specified pod
- 💬 prompt: list-k8s-namespaces in a given context
- 💬 prompt: list-k8s-pods in current context and with given namespace
Browse With Inspector
To use latest published version with Inspector you can run this:
1npx @modelcontextprotocol/inspector npx @strowk/mcp-k8s
, or to use version built from sources, then in root folder of this project:
1tools/inspector/run.sh
Use With Claude
Demo Usage
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 you would firstly need to install it.
You have several options for installation:
| | Smithery | mcp-get | Pre-built NPM | Pre-built in Github | From sources | | ------------ | -------------------------------------- | ------------------------------------ | ---------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ | | Claude Setup | Auto | Auto | Manual | Manual | Manual | | Prerequisite | Node.js | Node.js | Node.js | None | Golang |
Using Smithery
To install MCP K8S Go for Claude Desktop automatically via Smithery:
1npx -y @smithery/cli install @strowk/mcp-k8s --client claude
Using mcp-get
To install MCP K8S Go for Claude Desktop automatically via mcp-get:
1npx @michaellatman/mcp-get@latest install @strowk/mcp-k8s
Manually with prebuilt binaries
Prebuilt from npm
Use this if you have npm installed and want to use pre-built binaries:
1npm 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:
1{ 2 "mcpServers": { 3 "mcp_k8s": { 4 "command": "mcp-k8s", 5 "args": [] 6 } 7 } 8}
From GitHub releases
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:
1{ 2 "mcpServers": { 3 "mcp_k8s": { 4 "command": "mcp-k8s-go", 5 "args": [] 6 } 7 } 8}
Building from source
You would need Golang installed to build this project:
1go get github.com/strowk/mcp-k8s-go 2go install github.com/strowk/mcp-k8s-go
, and then add the following configuration to the claude_desktop_config.json
file:
1{ 2 "mcpServers": { 3 "mcp_k8s_go": { 4 "command": "mcp-k8s-go", 5 "args": [] 6 } 7 } 8}
Using from Claude Desktop
Now you should be able to run Claude Desktop and:
- see K8S contexts available to attach to conversation as a resource
- ask Claude to list contexts
- ask Claude to list pods in a given context and namespace
- ask Claude to list events in a given context and namespace
- ask Claude to read logs of a given pod in a given context and namespace
Environment Variables and Command-line Options
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.--help
: Display help information--version
: Display version information
Contributing
Check out CONTRIBUTION.md for more information on how to contribute to this project.