mcp-k8s-go
About
Golang-based Kubernetes MCP Server. Built to be extensible.
Details
- License
- MIT
Explore
MCP π¬ prompt ποΈ resource π€ tool
- ποΈπ€ List Kubernetes contexts
- π¬π€ List Kubernetes namespaces
- π€ List, get, create and modify any Kubernetes resources
- includes custom mappings for resources like pods, services, deployments
- π€ List Kubernetes nodes
- π¬ List Kubernetes pods
- π€ Get Kubernetes events
- π€ Get Kubernetes pod logs
- π€ Run command in Kubernetes pod
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
mcp-k8s-goCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
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 information
- --mask-secrets: Mask secrets in the output (default: true). Use --mask-secrets=false to disable masking
For example if you are configuring Claude Desktop, you can add the following configuration to claude_desktop_config.json file:
``json`
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s",
"args": [
"--allowed-contexts=dev,prod",
"--readonly"
]
}
}
}
dev
, which would allow only and prod` contexts to be used and would disable any tool which can write changes to the cluster.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp-k8s-go": {
"mcp-k8s-go": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"npx",
"@strowk/mcp-k8s"
]
}
}
}
}
McpServers
{
"mcp-k8s-go": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"npx",
"@strowk/mcp-k8s"
]
}
}
<h4 align="center">Golang-based MCP server connecting to Kubernetes</h4>
<h1 align="center">

<br/>
MCP K8S Go
</h1>
<p align="center">
<a href="#features">Features</a> β
<a href="#browse-with-inspector">Browse With Inspector</a> β
<a href="#use-with-claude">Use With Claude</a> β
<a href="https://github.com/strowk/mcp-k8s-go/blob/main/CONTRIBUTING.md">Contributing β</a> β
<a href="https://modelcontextprotocol.io">About MCP β</a>
</p>
<p align="center">
<a href="https://github.com/strowk/mcp-k8s-go/actions/workflows/dependabot/dependabot-updates"></a>
<a href="https://github.com/strowk/mcp-k8s-go/actions/workflows/test.yaml"></a>
<a href="https://github.com/strowk/mcp-k8s-go/actions/workflows/golangci-lint.yaml"></a>
<br/>
<a href="https://github.com/strowk/mcp-k8s-go/releases/latest"></a>
<a href="https://goreportcard.com/report/github.com/strowk/mcp-k8s-go"></a>
<a href="https://github.com/strowk/mcp-k8s-go/blob/main/LICENSE"></a>
</p>
Features
MCP π¬ prompt ποΈ resource π€ tool
- ποΈπ€ List Kubernetes contexts
- π¬π€ List Kubernetes namespaces
- π€ List, get, create and modify any Kubernetes resources
- includes custom mappings for resources like pods, services, deployments
- π€ List Kubernetes nodes
- π¬ List Kubernetes pods
- π€ Get Kubernetes events
- π€ Get Kubernetes pod logs
- π€ Run command in Kubernetes pod
Browse With Inspector
To use latest published version with Inspector you can run this:
``
bash
npx @modelcontextprotocol/inspector npx @strowk/mcp-k8s
`
Use With Claude
<details><summary><b>
Demo Usage
</b></summary>
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:

</details>
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:
| | <a href="#using-smithery">Smithery</a> | <a href="#using-mcp-get">mcp-get</a> | <a href="#prebuilt-from-npm">Pre-built NPM</a> | <a href="#from-github-releases">Pre-built in Github</a> | <a href="#building-from-source">From sources</a> | <a href="#using-docker">Using Docker</a> |
| ------------ | -------------------------------------- | ------------------------------------ | ---------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------- |
| Claude Setup | Auto | Auto | Manual | Manual | Manual | Manual |
| Prerequisite | Node.js | Node.js | Node.js | None | Golang | Docker |
Using Smithery
To install MCP K8S Go for Claude Desktop automatically via Smithery:
`bash
npx -y @smithery/cli install @strowk/mcp-k8s --client claude
`
Using mcp-get
To install MCP K8S Go for Claude Desktop automatically via mcp-get:
`bash
npx @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:
`bash
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:
`json
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s",
"args": []
}
}
}
`
, or using npx with any client:
`bash
npx @strowk/mcp-k8s
`
For example for Claude:
`json
{
"mcpServers": {
"mcp_k8s": {
"command": "npx",
"args": [
"@strowk/mcp-k8s"
]
}
}
}
`
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:
`json
{
"mcpServers": {
"mcp_k8s": {
"command": "mcp-k8s-go",
"args": []
}
}
}
`
Building from source
You would need Golang installed to build this project:
`bash
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:
`json
{
"mcpServers": {
"mcp_k8s_go": {
"command": "mcp-k8s-go",
"args": []
}
}
}
`
Using Docker
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:
`bash
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:
`json
{
"mcpServers": {
"mcp_k8s_go": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"~/.kube/config:/home/nonroot/.kube/config",
"--rm",
"mcpk8s/server:latest"
]
}
}
}
`
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.
- --readonly: Disables any tool which can write changes to the cluster
- --help: Display help information
- --version: Display version information
- --mask-secrets: Mask secrets in the output (default: true). Use --mask-secrets=false to disable masking
For example if you are configuring Claude Desktop, you can add the following configuration to claude_desktop_config.json file:
`json
{
"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.Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



