> ## Documentation Index
> Fetch the complete documentation index at: https://docs.civic.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Kubernetes Engine

> Read-only observability into GKE clusters, node pools, and Kubernetes workloads

## Overview

The Google Kubernetes Engine (GKE) MCP server provides **read-only** observability into GKE clusters and their Kubernetes workloads. Inspect clusters, node pools, operations, and use `kube_get` to query any Kubernetes resource — the equivalent of `kubectl get`.

<Info>
  **Read-only** — This server cannot create, update, or delete clusters, node pools, or workloads. For lifecycle management, use the GCP Console, `gcloud`, or Terraform.
</Info>

## How to Add Google Kubernetes Engine

<Steps>
  <Step title="Enable the Kubernetes Engine API">
    1. Go to the [Google Cloud Console](https://console.cloud.google.com)
    2. Select your project — you will need the **project ID**
    3. Navigate to **APIs & Services → Library**
    4. Search for **Kubernetes Engine API** and click **Enable**
  </Step>

  <Step title="Have a Running Cluster">
    You must have at least one running GKE cluster. The server cannot create clusters. If no clusters exist, `list_clusters` returns `{}` rather than an error.
  </Step>

  <Step title="Add to Civic">
    Add the Google Kubernetes Engine server to your Civic environment through the server directory.
  </Step>

  <Step title="Authorize">
    On first use, you will be redirected to Google to authorize the connection.
  </Step>

  <Step title="Test Connection">
    Start with `"List all GKE clusters in project my-project across all regions"` to verify the connection.
  </Step>
</Steps>

## What You Can Do

<CardGroup cols={2}>
  <Card title="Cluster Inspection" icon="circle-nodes">
    List clusters, view details, versions, endpoints, and Autopilot status
  </Card>

  <Card title="Node Pool Management" icon="server">
    List and inspect node pools on Standard clusters
  </Card>

  <Card title="Kubernetes Resources" icon="cubes">
    Query any Kubernetes resource — pods, deployments, services, configmaps, and 130+ resource types
  </Card>

  <Card title="Operations Tracking" icon="spinner">
    Monitor in-progress cluster operations with detailed progress metrics
  </Card>
</CardGroup>

## Use Cases

### Cluster Inspection

* **List Clusters**: `"List all GKE clusters in project my-project across all regions"`
* **Cluster Details**: `"What's the status of cluster production-cluster in us-central1?"`
* **Operations**: `"Are there any GKE operations currently running?"`

### Kubernetes Resources

* **Pods**: `"Show me all pods that are not Running in the default namespace"`
* **Deployments**: `"Get the full YAML spec for the kube-dns deployment"`
* **Services**: `"List all services in kube-system as JSON"`
* **Nodes**: `"Show me all nodes in wide format — I want to see IPs and OS versions"`
* **Discovery**: `"What GKE-specific resource types are available?"`

***

## Available Tools (8)

### Cluster Management

<AccordionGroup>
  <Accordion title="list_clusters">
    `list_clusters` — List all GKE clusters in a project and location. Use `-` for all locations. Always specify a project ID — `projects/-` wildcard fails with "Permission denied".
  </Accordion>

  <Accordion title="get_cluster">
    `get_cluster` — Get full details for a specific cluster including node pool names, release channel, and Autopilot flag.
  </Accordion>

  <Accordion title="list_node_pools / get_node_pool">
    List and inspect node pools. **Does not work with Autopilot clusters** — use `kube_get node` instead for Autopilot.
  </Accordion>

  <Accordion title="list_operations / get_operation">
    Track in-progress and recent GKE control-plane operations with detailed progress metrics (e.g. `CLUSTER_DEPLOYING: 11/13`).
  </Accordion>
</AccordionGroup>

### Kubernetes API

<AccordionGroup>
  <Accordion title="kube_api_resources">
    `kube_api_resources` — List all 130+ Kubernetes API resource types available on the cluster, including GKE-specific CRDs. Run this first on unfamiliar clusters.
  </Accordion>

  <Accordion title="kube_get">
    `kube_get` — Fetch any Kubernetes resource. Supports `namespace`, `name`, `labelSelector`, `fieldSelector`, and output formats: `TABLE`, `WIDE`, `YAML`, `JSON`. Equivalent to `kubectl get`.
  </Accordion>
</AccordionGroup>

***

<Note>
  **Project ID required** — The server cannot discover project IDs. Use the same project ID from the [GCP Console](https://console.cloud.google.com).

  **Standard vs Autopilot** — `list_node_pools` and `get_node_pool` only work on Standard clusters. For Autopilot, use `kube_get node` for node info.

  **Namespace scoping** — For large clusters, always filter by namespace to avoid overwhelming responses. Key GKE namespaces: `kube-system`, `gke-gmp-system`, `gke-managed-*`.

  **Pairs with Compute Engine** — Use the [Google Compute Engine server](/civic/reference/servers/google-compute-engine) alongside for full GCP infrastructure visibility.
</Note>

***

## Guardrails

This server supports all [14 universal guardrails](/civic/concepts/guardrails). Server-specific guardrails are coming soon.

<Tip>
  Configure guardrails via the Civic UI or ask the Configurator Agent: "Add guardrails to my GKE server."
</Tip>
