MCP

Manage Kubernetes Resources Programmatically

Golang-based MCP server for Kubernetes. Interact with Kubernetes resources, pods, logs, and commands via an AI client.


27
Spark score
out of 100
Updated 6 months ago
Version 0.6.1
Models

Add to Favorites

Why it matters

Connect to and manage your Kubernetes clusters programmatically. View, monitor, and modify resources like pods, services, and deployments with fine-grained control.

Outcomes

What it gets done

01

List and manage Kubernetes contexts and namespaces

02

Interact with Kubernetes resources (pods, services, deployments)

03

Retrieve pod logs and execute commands within pods

04

Securely manage access with read-only modes and context restrictions

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-mcp-k8s-go | bash

Capabilities

Tools your agent gets

list_contexts

List Kubernetes contexts available in the cluster configuration.

list_namespaces

List Kubernetes namespaces in the cluster.

list_resources

List, get, create, and modify any Kubernetes resources.

list_nodes

List Kubernetes nodes in the cluster.

get_events

Get Kubernetes events from the cluster.

get_pod_logs

Get logs from Kubernetes pods.

exec_pod_command

Execute commands in Kubernetes pods.

Overview

mcp-k8s-go MCP Server

What it does

This Golang-based MCP server connects to Kubernetes, enabling AI clients to interact with cluster resources. It allows AI to list Kubernetes contexts, namespaces, nodes, and pods, as well as get events, pod logs, and run commands within pods.

How it connects

Use this MCP server when you need to provide an AI client with programmatic access to manage and query Kubernetes resources. It's ideal for scenarios where an AI needs to inspect cluster state, retrieve logs, or execute commands within pods. Do not use this tool if your AI client does not support the Model Context Protocol (MCP).

Source README

Golang-based MCP server connecting to Kubernetes


MCP K8S Go

FeaturesBrowse With InspectorUse With ClaudeContributing ↗About MCP ↗


latest release badge Go Reference license badge

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:

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:

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.
  • --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:

{
    "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.

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.