Skip to main content
Glama

k8s-cloud-deploy-mcp

MCP server owned by Pawan Gunjkar (pawangunjkar@gmail.com · GitHub). MIT licensed.

The server targets standard Kubernetes, Red Hat OpenShift, and cloud-managed clusters (AWS EKS, Azure AKS, GCP GKE). It loads a kubeconfig context or an in-cluster service account, detects OpenShift from apps.openshift.io/v1 or route.openshift.io, and reads CLOUD_PROVIDER, AWS_REGION, AZURE_SUBSCRIPTION_ID, GCP_PROJECT, and K8S_CONTEXT.

Read-only diagnostics run without a second confirmation. k8s_trigger_deployment_rollout and k8s_rollback_deployment return a plan until the caller sets confirm=true after the user approves it. Image updates must be sha256 digests. The tag latest is rejected. Secret values are never returned.

Project information

Item

Value

Package

k8s-cloud-deploy-mcp

Command

k8s-cloud-deploy-mcp

Runtime

Python 3.10+, FastMCP, official Kubernetes client, httpx, pydantic

Auth

KUBECONFIG, K8S_CONTEXT, or in-cluster service account

Providers

aws_eks, azure_aks, gcp_gke, openshift, generic_k8s

Related MCP server: MCP Server Kubernetes

Architecture

flowchart TB
  subgraph L1["Editor"]
    IDE["Cursor, Claude Code, or VS Code"]
  end
  subgraph L2["MCP"]
    SRV["k8s-cloud-deploy-mcp"]
    HUB["K8sHub session"]
  end
  subgraph L3["Cluster"]
    CFG["kubeconfig or in-cluster"]
    API["Kubernetes or OpenShift API"]
  end
  IDE --> SRV --> HUB --> CFG --> API

kubectl and oc are optional. The Python client is authoritative. Those binaries run only for client version and a short rollout-status check, with shell=False and a fixed argument list.

Environment

Variable

Role

KUBECONFIG

Kubeconfig file or path list

K8S_CONTEXT

Context name

K8S_NAMESPACE

Default namespace

CLOUD_PROVIDER

aws_eks, azure_aks, gcp_gke, openshift, or generic_k8s

AWS_REGION

Required with aws_eks

AZURE_SUBSCRIPTION_ID

Required with azure_aks

GCP_PROJECT

Required with gcp_gke

Prepare the kubeconfig with aws eks update-kubeconfig, az aks get-credentials, gcloud container clusters get-credentials, or oc login before starting the server.

Tools

Read-only: k8s_get_cluster_overview, k8s_list_deployments_and_configs, k8s_get_pod_health_and_diagnostics, k8s_get_container_logs, k8s_manage_openshift_routes_and_services, k8s_check_rollout_status.

Confirmation-gated writes: k8s_trigger_deployment_rollout, k8s_rollback_deployment. Pod delete still requires confirm=true.

The Agensi skill playbook is agensi_build/k8s-cloud-deploy-mcp-pro/SKILL.md.

Cursor

{
  "mcpServers": {
    "k8s-cloud-deploy-mcp": {
      "command": "uvx",
      "args": ["--from", "C:/AI_Workspaces/Anti_Workspace/k8s-mcp", "k8s-cloud-deploy-mcp"],
      "env": {
        "KUBECONFIG": "C:/Users/you/.kube/config",
        "K8S_CONTEXT": "dev",
        "CLOUD_PROVIDER": "generic_k8s"
      }
    }
  }
}

Agensi package

python scripts/build_agensi_zip.py

The scanner writes these files under dist/:

File

Contents

k8s-cloud-deploy-mcp-pro.zip

Agensi skill upload

k8s-cloud-deploy-mcp-pro.tar.gz

Same skill as a tar archive

k8s_cloud_deploy_mcp-1.1.0.tar.gz

Python source distribution

k8s_cloud_deploy_mcp-1.1.0-py3-none-any.whl

Python wheel

Upload the zip to agensi.io/dashboard/submit. Install the wheel with pip install dist/k8s_cloud_deploy_mcp-1.1.0-py3-none-any.whl.

Available Tools

15 tools
k8s_applyB

Create or patch a Deployment or ConfigMap from YAML.

Inputs: manifest_yaml (required), session_name. Returns: result

k8s_connectC

Load a kubeconfig context, or in-cluster config when no kubeconfig is available.

Inputs: context, namespace, kubeconfig, session_name. Returns: result

k8s_delete_podB

Delete one pod so the controller recreates it. confirm=true is required.

Inputs: pod (required), confirm, namespace, session_name. Returns: result

k8s_disconnectC

Drop a Kubernetes session.

Inputs: session_name. Returns: result

k8s_eventsA

Show the latest 30 namespaced events.

Inputs: namespace, session_name. Returns: result

k8s_list_deploymentsB

List deployments and ready replica counts.

Inputs: namespace, session_name. Returns: result

k8s_list_namespacesB

List namespace names.

Inputs: session_name. Returns: result

k8s_list_nodesB

List nodes and Ready condition.

Inputs: session_name. Returns: result

k8s_list_podsB

List pods with phase, ready count, and node.

Inputs: label, namespace, session_name. Returns: result

k8s_list_secret_namesB

List Secret names only. Values are not returned.

Inputs: namespace, session_name. Returns: result

k8s_list_servicesB

List services, type, and cluster IP.

Inputs: namespace, session_name. Returns: result

k8s_pod_logsB

Read the tail of a pod log.

Inputs: pod (required), tail, container, namespace, +1 more. Returns: result

k8s_restartC

Roll a Deployment by setting restartedAt.

Inputs: name (required), namespace, session_name. Returns: result

k8s_scaleC

Scale a Deployment.

Inputs: name (required), replicas (required), namespace, session_name. Returns: result

k8s_statusB

List Kubernetes sessions.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action: connect/disconnect manage sessions, list_* covers different Kubernetes resources, and pod_logs/scale/restart/delete_pod/apply are specific operations. There is no meaningful overlap—even multiple pod-related tools are clearly differentiated by their verbs.

    Naming Consistency4/5

    All tools share the k8s_ prefix and generally follow a verb_noun pattern (list_namespaces, scale, delete_pod). Minor deviations exist: k8s_events and k8s_pod_logs omit the list/get verb, but the pattern is still predictable and readable.

    Tool Count4/5

    At 15 tools, the server sits at the upper bound of the typical well-scoped range. The breadth is justified by covering connection management plus a variety of Kubernetes resources and operations, though it feels slightly heavy for a single-purpose MCP server.

    Completeness3/5

    The server covers listing many resources, logs, events, scaling, restarting, and applying YAML, but lacks get operations for individual resources, delete for most resources (only pods), and any write operations for services, secrets, or namespaces. It is read-heavy with limited lifecycle coverage beyond Deployments.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers