|  | 
|  | 1 | +# AGENTS | 
|  | 2 | + | 
|  | 3 | +This repository contains a Go implementation of a Model Context Protocol (MCP) | 
|  | 4 | +server for Kubernetes and OpenShift. | 
|  | 5 | + | 
|  | 6 | +## Repository layout | 
|  | 7 | + | 
|  | 8 | +- `cmd/kubernetes-mcp-server/` – entry point and Cobra CLI. | 
|  | 9 | +- `pkg/` – libraries grouped by domain (`kubernetes`, `mcp`, `output`, …). | 
|  | 10 | +- `Makefile` – tasks for building, formatting, linting and testing. | 
|  | 11 | +- `npm/` – Node packages that wrap the compiled binary. The `kubernetes-mcp-server` package | 
|  | 12 | +  defines a small launcher in `bin/index.js` which resolves the platform specific | 
|  | 13 | +  optional dependency (`kubernetes-mcp-server-<os>-<arch>`) and executes it. | 
|  | 14 | +- `python/` – Python package providing a script that downloads the correct | 
|  | 15 | +  platform binary from the GitHub releases page and runs it. | 
|  | 16 | + | 
|  | 17 | +## Feature development | 
|  | 18 | + | 
|  | 19 | +Implement new functionality in the Go sources under `cmd/` and `pkg/`. | 
|  | 20 | +The JavaScript and Python directories only wrap the compiled binary for | 
|  | 21 | +distribution (npm and PyPI). Most changes will not require touching them | 
|  | 22 | +unless the version or packaging needs to be updated. | 
|  | 23 | + | 
|  | 24 | +## Building | 
|  | 25 | + | 
|  | 26 | +Use the provided Makefile targets: | 
|  | 27 | + | 
|  | 28 | +```bash | 
|  | 29 | +# Format source and build the binary | 
|  | 30 | +make build | 
|  | 31 | + | 
|  | 32 | +# Build for all supported platforms | 
|  | 33 | +make build-all-platforms | 
|  | 34 | +``` | 
|  | 35 | + | 
|  | 36 | +`make build` will run `go fmt` and `go mod tidy` before compiling. The | 
|  | 37 | +resulting executable is `kubernetes-mcp-server`. | 
|  | 38 | + | 
|  | 39 | +## Running | 
|  | 40 | + | 
|  | 41 | +The README demonstrates running the server via | 
|  | 42 | +[`mcp-inspector`](https://modelcontextprotocol.io/docs/tools/inspector): | 
|  | 43 | + | 
|  | 44 | +```bash | 
|  | 45 | +make build | 
|  | 46 | +npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server | 
|  | 47 | +``` | 
|  | 48 | + | 
|  | 49 | +The server is typically run locally and connects to the cluster using the same | 
|  | 50 | +configuration loading rules as `kubectl`. When started with `npx` or `uvx` it | 
|  | 51 | +downloads and executes a platform specific binary. The running process then | 
|  | 52 | +reads the kubeconfig resolved from the `--kubeconfig` flag, the `KUBECONFIG` | 
|  | 53 | +environment variable or the default `~/.kube/config` file. If those are not | 
|  | 54 | +present and the process executes inside a pod it falls back to in-cluster | 
|  | 55 | +configuration. This means that `npx kubernetes-mcp-server` on a workstation will | 
|  | 56 | +talk to whatever cluster your current kubeconfig points to (e.g. a local Kind | 
|  | 57 | +cluster). | 
|  | 58 | + | 
|  | 59 | +## Tests | 
|  | 60 | + | 
|  | 61 | +Run all Go tests with: | 
|  | 62 | + | 
|  | 63 | +```bash | 
|  | 64 | +make test | 
|  | 65 | +``` | 
|  | 66 | + | 
|  | 67 | +The test suite relies on the `setup-envtest` tooling from | 
|  | 68 | +`sigs.k8s.io/controller-runtime`. The first run downloads a Kubernetes | 
|  | 69 | +`envtest` environment from the internet, so network access is required. Without | 
|  | 70 | +it some tests will fail during setup. | 
|  | 71 | + | 
|  | 72 | +## Linting | 
|  | 73 | + | 
|  | 74 | +Static analysis is performed with `golangci-lint`: | 
|  | 75 | + | 
|  | 76 | +```bash | 
|  | 77 | +make lint | 
|  | 78 | +``` | 
|  | 79 | + | 
|  | 80 | +The `lint` target downloads the specified `golangci-lint` version if it is not | 
|  | 81 | +already present under `_output/tools/bin/`. | 
|  | 82 | + | 
|  | 83 | +## Dependencies | 
|  | 84 | + | 
|  | 85 | +When introducing new modules run `go mod tidy` (or `make tidy`) so that | 
|  | 86 | +`go.mod` and `go.sum` remain tidy. | 
|  | 87 | + | 
|  | 88 | +## Coding style | 
|  | 89 | + | 
|  | 90 | +- Go modules target Go **1.24** (see `go.mod`). | 
|  | 91 | +- Tests are written with the standard library `testing` package. | 
|  | 92 | +- Build, test and lint steps are defined in the Makefile—keep them working. | 
|  | 93 | + | 
0 commit comments