mcp-k8s-go

MCP.Pizza Chef: strowk

mcp-k8s-go is a Golang-based MCP server designed to connect and integrate Kubernetes clusters with the Model Context Protocol ecosystem. It provides structured, real-time Kubernetes cluster context to LLMs, enabling advanced AI-driven workflows, cluster inspection, and management. This server facilitates secure and efficient interaction between AI models and Kubernetes environments, supporting multi-step reasoning and operational automation within cloud-native infrastructures.

Use This MCP server To

Expose Kubernetes cluster state to AI models Enable AI-driven Kubernetes resource inspection Automate Kubernetes cluster management tasks Provide real-time Kubernetes context for LLMs Integrate Kubernetes with AI-enhanced workflows

README

Golang-based MCP server connecting to Kubernetes


MCP K8S Go

FeaturesBrowse With InspectorUse With ClaudeContributing ↗About MCP ↗


latest release badge npm downloads badge Go Reference license badge

Features

MCP 💬 prompt 🗂️ resource 🤖 tool

  • 🗂️🤖 List Kubernetes contexts
  • 💬🤖 List Kubernetes namespaces
  • 🤖 List and get any Kubernetes resources
    • includes custom mappings for resources like pods, services, deployments, but any resource can be listed and retrieved
  • 🤖 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:

npx @modelcontextprotocol/inspector npx @strowk/mcp-k8s

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:

Claude Desktop

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

Using Smithery

To install MCP K8S Go for Claude Desktop automatically via Smithery:

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:

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:

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"
      ]
    }
  }
}

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:

{
  "mcpServers": {
    "mcp_k8s": {
      "command": "mcp-k8s-go",
      "args": []
    }
  }
}

Building from source

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": []
    }
  }
}

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:

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"
      ]
    }
  }
}

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

mcp-k8s-go FAQ

How do I deploy mcp-k8s-go in my Kubernetes environment?
You can deploy mcp-k8s-go as a containerized MCP server within your Kubernetes cluster using standard deployment manifests or Helm charts, ensuring it has appropriate RBAC permissions to access cluster resources.
What Kubernetes resources does mcp-k8s-go expose to the MCP client?
It exposes structured data about pods, services, deployments, nodes, and other Kubernetes objects to provide comprehensive cluster context.
Is mcp-k8s-go compatible with multiple MCP clients and LLM providers?
Yes, mcp-k8s-go follows the MCP protocol standards, making it compatible with various MCP clients and LLM providers like OpenAI, Anthropic Claude, and Google Gemini.
How does mcp-k8s-go ensure secure access to Kubernetes clusters?
It leverages Kubernetes RBAC and authentication mechanisms, ensuring that only authorized MCP clients and users can access cluster data through the server.
Can mcp-k8s-go handle multi-cluster Kubernetes environments?
Currently, mcp-k8s-go is designed primarily for single-cluster integration, but it can be extended or deployed per cluster to support multi-cluster setups.
What programming language is mcp-k8s-go written in?
mcp-k8s-go is implemented in Go (Golang), providing efficient performance and native Kubernetes client integration.
How do I contribute to the mcp-k8s-go project?
Contributions are welcome via GitHub. Refer to the CONTRIBUTING.md file in the repository for guidelines on submitting issues and pull requests.
Does mcp-k8s-go support real-time updates from Kubernetes?
Yes, it can stream real-time cluster state changes to MCP clients, enabling dynamic AI interactions with live Kubernetes data.