Skip to main content
Glama

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

npm install
npm run build
MCP_TRANSPORT=http-chunked npm start
  • By default, the server uses your local kubeconfig (~/.kube/config or C:\Users\<username>\.kube\config).

  • To use a custom kubeconfig, set the KUBECONFIG environment variable:

    export KUBECONFIG=/path/to/your/kubeconfig
    npm start

2. Dockerize the MCP Server

Build the Docker image

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

Push to your registry

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

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):

    curl -X POST http://<server-ip>: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.:

    curl -X POST http://<server-ip>: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

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/siddjoshi/kube-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server