trackmcp
Back to directory
0 stars TypeScriptOthers Updated Jul 11, 2025

Documentation

MCP Kubernetes Server

A Model Context Protocol (MCP) server for Kubernetes, supporting chunked HTTP streaming, advanced troubleshooting prompts, and full Kubernetes resource/tool coverage.


Prerequisites

  • Node.js v18+ (for local dev/build)
  • Docker (for containerization)
  • Access to a Kubernetes cluster (AKS, EKS, GKE, or local)
  • `kubectl` configured (for testing and kubeconfig management)

1. Build and Run Locally

sh
npm install
npm run build
MCP_TRANSPORT=http-chunked npm start
  • By default, the server uses your local kubeconfig (`~/.kube/config` or `C:\Users\\.kube\config`).
  • To use a custom kubeconfig, set the `KUBECONFIG` environment variable:
sh
export KUBECONFIG=/path/to/your/kubeconfig
  npm start

2. Dockerize the MCP Server

Build the Docker image

sh
docker build -t yourrepo/mcp-server:latest .

Push to your registry

sh
docker push yourrepo/mcp-server:latest

3. Deploy on Kubernetes (AKS, EKS, GKE)

Edit the image name in `k8s-mcp-server.yaml`:

Replace `yourrepo/mcp-server:latest` with your image name.

Apply the manifest

sh
kubectl apply -f k8s-mcp-server.yaml
  • This creates a namespace, ServiceAccount, RBAC, Deployment, and Service.
  • By default, the Service is `ClusterIP` (internal). Change to `LoadBalancer` or `NodePort` for external access.

4. Using the MCP Server

HTTP Chunked Endpoint

  • The server exposes `/call-tool-chunked` on port 3000.
  • Example (using `curl`):
sh
curl -X POST http://:3000/call-tool-chunked \
    -H "Content-Type: application/json" \
    -d '{"name": "get_pods", "args": {"namespace": "default"}}'
  • The response will stream progress and results as JSON lines.

Using Prompts

  • To use a prompt, POST to `/call-tool-chunked` with the prompt name, e.g.:
sh
curl -X POST http://:3000/call-tool-chunked \
    -H "Content-Type: application/json" \
    -d '{"name": "k8s-pod-crashloop-diagnose", "args": {"podName": "my-pod", "namespace": "default"}}'

5. Kubeconfig and Permissions

  • The MCP server uses the kubeconfig available in the container (default: `/root/.kube/config`).
  • For in-cluster deployments, it uses the ServiceAccount and RBAC provided in the manifest.
  • To use a custom kubeconfig, mount it as a secret and update the Deployment (see commented lines in the manifest).

6. Security Notes

  • Do not expose the MCP server to the public internet without authentication and TLS.
  • Use network policies, firewalls, or VPNs to restrict access.
  • Use least-privilege RBAC for the ServiceAccount.

7. Extending and Customizing

  • Add new tools, resources, or prompts in the `src/` directory.
  • Rebuild and redeploy the Docker image after making changes.

8. Troubleshooting

  • Check logs with `kubectl logs -n mcp-server deploy/mcp-server`.
  • Ensure the ServiceAccount has the required permissions for your use case.
  • For local testing, ensure your kubeconfig is valid and has cluster access.

License

MIT

Frequently asked questions

What is kube-MCP?

kube-MCP is a Model Context Protocol (MCP) server listed in the TrackMCP directory.

How do I install kube-MCP?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is kube-MCP open source?

Yes — it is hosted on GitHub at https://github.com/siddjoshi/kube-MCP.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP