Skip to main content
Glama
harish235

k8s-ops-mcp-server

by harish235

k8s-ops-mcp-server

A Model Context Protocol (MCP) server that connects Claude Desktop to any Kubernetes cluster. Ask Claude questions in plain English — it calls your cluster's API, reads the real data, and gives you a diagnosis or performs an action.

"Why is the orders-service pod crashing?"
"Show me recent warning events in the payments namespace."
"Scale the api-gateway deployment to 5 replicas."

Works with any Kubernetes cluster — GKE, EKS, AKS, on-prem, or local Minikube. No code changes needed to switch between them, only a kubectl context switch.


How it works

You (natural language)
        ↓
Claude Desktop  ──── MCP (stdio) ────▶  k8s-ops-mcp-server
                                                ↓
                                     @kubernetes/client-node
                                                ↓
                                     Kubernetes API Server
                                    (GKE / EKS / AKS / Minikube)

Claude decides which tools to call, calls them, and reasons over the results. The MCP server contains no AI — it is a thin, stateless layer over the Kubernetes API. All reasoning happens inside Claude Desktop.


Related MCP server: Kubernetes MCP Server

Available tools

Tool

What it does

Example question

list_pods

List all pods with status, restarts, age, node

"What pods are running in production?"

get_pod_status

Detailed status — phase, conditions, last termination reason

"Why is orders-service unhealthy?"

get_pod_logs

Fetch pod logs; previous=true gets logs from before a crash

"Show me the crash logs for api-gateway"

get_recent_events

Kubernetes events sorted by recency — reveals root cause

"What warning events happened recently?"

get_resource_usage

Live CPU/memory vs requests/limits (requires metrics-server)

"Which pods are near their memory limit?"

get_deployment_status

Rollout status — desired vs ready vs available replicas

"Did the latest deployment roll out successfully?"

scale_deployment

⚠️ Scale a deployment to N replicas

"Scale payments-service to 3 replicas"

restart_pod

⚠️ Delete a pod to trigger recreation

"Restart the crashing orders-service pod"

⚠️ Write actions (scale_deployment, restart_pod) default to dryRun=true. Claude will show you what would happen before asking for confirmation to execute.


Prerequisites

Verify kubectl is connected to your cluster before proceeding:

kubectl get nodes

You should see your cluster nodes listed. If this works, the MCP server will work.


Setup

1. Clone the repo

git clone https://github.com/YOUR_USERNAME/k8s-ops-mcp-server.git
cd k8s-ops-mcp-server

2. Install dependencies and build

npm install
npm run build

3. Verify the server starts

node dist/index.js
# k8s-ops-mcp-server running on stdio

The process hangs waiting for input — that is correct. It is ready for an MCP client to connect. Press Ctrl+C to stop it.

4. Test all tools with MCP Inspector

Before connecting Claude Desktop, verify every tool works using the Inspector — a web UI that acts as a fake MCP client. This is the fastest way to catch issues.

npm run inspector

The terminal prints a URL with a session token:

Open inspector at: http://localhost:5173/?MCP_PROXY_AUTH_TOKEN=abc123...

Open that full URL (including the token) in your browser. Then:

  1. Set Command to node

  2. Set Arguments to the absolute path to your built server, e.g. /Users/yourname/k8s-ops-mcp-server/dist/index.js

  3. Click Connect — all 8 tools appear on the left

  4. Try calling list_pods — it should return pods from your cluster

Get the absolute path by running echo "$(pwd)/dist/index.js" in the project directory.

5. Configure Claude Desktop

Open the Claude Desktop config file:

open ~/Library/Application\ Support/Claude/claude_desktop_config.json

Add the mcpServers section (keep any existing content in the file):

{
  "mcpServers": {
    "k8s-ops": {
      "command": "node",
      "args": ["/absolute/path/to/k8s-ops-mcp-server/dist/index.js"]
    }
  }
}

Replace the path with the actual absolute path on your machine (the output of echo "$(pwd)/dist/index.js").

Quit Claude Desktop completely with Cmd+Q and reopen it. Click the "+" icon → Connectors — you should see k8s-ops listed and enabled with all 8 tools.

6. Start diagnosing

Open a new chat and ask:

"List all pods and highlight any that are unhealthy."
"Why is the orders-service pod restarting?"
"Show me warning events from the last few minutes."
"What is the CPU and memory usage across all pods in the default namespace?"

Switching between clusters

The server uses kubectl's active context. To point it at a different cluster:

# List available contexts
kubectl config get-contexts

# Switch context
kubectl config use-context YOUR_CONTEXT_NAME

Then restart Claude Desktop (or just start a new conversation — the server process reloads the config). No code changes, no config file edits.

Example: connecting to GKE

gcloud container clusters get-credentials YOUR_CLUSTER --zone us-central1-a
kubectl config use-context gke_your-project_us-central1-a_your-cluster

# Restart Claude Desktop — it now talks to GKE

Local testing with Minikube

Skip this section if you already have a real cluster to connect to. This is only for trying the server locally without a cloud cluster.

Minikube runs a single-node Kubernetes cluster on your laptop inside Docker. It is useful for testing the MCP tools against a real (though local) cluster, and for triggering deliberate failures to practice diagnosing them.

Start Minikube

# Install Minikube if needed: https://minikube.sigs.k8s.io/docs/start/
minikube start

# Enable metrics-server (required for get_resource_usage)
minikube addons enable metrics-server

Verify it is running:

kubectl get nodes
# NAME       STATUS   ROLES           AGE
# minikube   Ready    control-plane   1m

Deploy the test app

The test-app/ directory contains a small Node.js app designed to simulate real failure modes — crashes, OOM kills, and latency spikes.

Step 1 — Point Docker at Minikube's internal engine

This lets Kubernetes find the image without a registry. Must be run in every new terminal session.

eval $(minikube docker-env)

Step 2 — Build the image

docker build -t test-app:latest ./test-app

Step 3 — Deploy

kubectl apply -f test-app/k8s-manifests/

# Watch pods start
kubectl get pods -w
# NAME                        READY   STATUS    RESTARTS   AGE
# test-app-584b76c4fc-bfwgb   1/1     Running   0          15s
# test-app-584b76c4fc-svqbk   1/1     Running   0          15s

Trigger failures to test your MCP tools

# Get the test app URL
URL=$(minikube service test-app --url)

# Trigger a crash — causes CrashLoopBackOff after the liveness probe fails
curl $URL/crash
curl $URL/crash

# Trigger OOMKill — pod gets killed for exceeding the 64Mi memory limit
curl $URL/oom

Then ask Claude Desktop:

"The test-app pod keeps restarting. What's wrong with it?"

Claude will call list_podsget_pod_statusget_pod_logs (with previous=true) → get_recent_events automatically and return a real diagnosis.

Test app endpoints

Endpoint

What happens

Simulates

GET /healthy

Returns 200, logs each request

Normal healthy traffic

GET /crash

Throws an error, process exits

CrashLoopBackOff

GET /slow

Sleeps 5 seconds

Latency issues

GET /oom

Allocates memory until killed

OOMKilled event


Project structure

k8s-ops-mcp-server/
├── src/
│   ├── index.ts                      # MCP server entry point
│   ├── k8s/
│   │   ├── client.ts                 # Kubernetes client (loadFromDefault)
│   │   ├── podOperations.ts          # listPods, getPodStatus, getPodLogs, restartPod
│   │   ├── deploymentOperations.ts   # getDeploymentStatus, scaleDeployment
│   │   ├── eventOperations.ts        # getRecentEvents
│   │   └── metricsOperations.ts      # getResourceUsage
│   ├── tools/
│   │   ├── definitions.ts            # MCP tool schemas and descriptions
│   │   └── handlers.ts               # Routes tool calls to k8s functions
│   └── utils/
│       └── formatter.ts              # Cleans up raw k8s API responses
│
├── test-app/                         # Deliberately flaky app for local testing
│   ├── app.js
│   ├── Dockerfile
│   └── k8s-manifests/
│       ├── deployment.yaml           # 2 replicas, 64Mi memory limit, liveness probe
│       └── service.yaml
│
├── package.json
└── tsconfig.json

Troubleshooting

kubectl get nodes fails Your kubeconfig is not set up. Follow your cluster provider's instructions to configure it (e.g. gcloud container clusters get-credentials ... for GKE).

MCP Inspector connection error Use the full URL printed in the terminal — it includes a required session token (?MCP_PROXY_AUTH_TOKEN=...). Opening localhost:5173 without the token fails.

get_pod_logs returns an error Use the exact pod name from list_pods output (e.g. orders-service-7d9f8b-x2k1p), not the deployment name. After a crash, set previous=true to get logs from before the restart.

get_resource_usage fails Metrics server is not installed or not yet ready. On Minikube: minikube addons enable metrics-server. On GKE/EKS it is usually pre-installed. Wait ~60 seconds after enabling it before querying.

Tools disappear from Claude Desktop The MCP server process crashed. Confirm the path in claude_desktop_config.json is the correct absolute path, then restart Claude Desktop.

Minikube: ErrImageNeverPull The image was built in your laptop's Docker, not Minikube's. Run eval $(minikube docker-env) in the same terminal, rebuild the image, then restart the deployment:

eval $(minikube docker-env)
docker build -t test-app:latest ./test-app
kubectl rollout restart deployment/test-app

Security

This server is intended for personal or local use. Write actions execute immediately once confirmed — there is no authentication or authorization layer.

  • Do not expose this server over a network

  • Do not use in a shared or multi-user environment without adding an authorization layer

  • All write actions (scale_deployment, restart_pod) are logged to stderr with a timestamp for local audit purposes

  • Be careful when connected to a production cluster — Claude will confirm before write actions, but always review before approving

Available Tools

8 tools
get_deployment_statusA

Returns rollout status for a Deployment: desired vs ready vs available replicas, whether the rollout is complete, container images in use, and any degraded conditions. Use to check if a deployment rolled out successfully or is stuck.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNoKubernetes namespace. Defaults to "default".
deploymentNameYesName of the deployment.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It discloses the kind of data returned (replicas, rollout complete, images, conditions) but does not mention edge cases, error behavior, or permission requirements. Adequate but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with return data and followed by usage. Every sentence adds value with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description adequately outlines the key return fields (desired/ready/available replicas, rollout completeness, container images, degraded conditions). Sufficient for a status check tool, though could elaborate on condition interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters described in the input schema. The description does not add any additional meaning beyond the schema defaults or constraints, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Returns' and specifies the resource 'rollout status for a Deployment', listing specific fields (replicas, completion, images, conditions). It distinguishes from siblings like get_pod_status by focusing on deployment-level status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use to check if a deployment rolled out successfully or is stuck', providing clear when-to-use guidance. Does not explicitly mention when not to use or alternatives, but sibling tools cover pod-level details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pod_logsA

Fetches logs from a specific pod. Set previous=true to get logs from the pod's last run before a crash — essential for diagnosing CrashLoopBackOff or OOMKilled pods. Use tailLines to limit output to the most recent N lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
podNameYesName of the pod.
previousNoFetch logs from the previous (crashed) container instance. Critical for CrashLoopBackOff diagnosis. Defaults to false.
namespaceNoKubernetes namespace. Defaults to "default".
tailLinesNoNumber of recent log lines to fetch. Defaults to 100.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It discloses that previous fetches logs from crashed instances and tailLines limits output, but omits error handling or permission details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with main action. Each sentence is purposeful with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential usage for a simple log-fetching tool. Schema already defines defaults and required fields, and the description adds situational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context for 'previous' (crash diagnosis) and 'tailLines' (limit output), improving parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetches logs from a specific pod,' specifying the verb and resource. It distinguishes from sibling tools like get_pod_status or list_pods by focusing solely on logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to set previous=true and use tailLines, but does not include when-not-to-use or alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pod_statusA

Returns the detailed status of a single pod: phase, readiness, restart count, last termination reason (e.g. OOMKilled, Error), container states, and pod conditions. Use this to dig into why a specific pod is unhealthy.

ParametersJSON Schema
NameRequiredDescriptionDefault
podNameYesName of the pod to inspect.
namespaceNoKubernetes namespace. Defaults to "default".

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the return contents (phase, readiness, etc.) and implies it is a read-only operation by stating 'Returns the detailed status.' Without annotations, it carries the disclosure burden adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundant words. The first sentence lists outputs, the second provides usage guidance. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the returned data. The tool is simple (single pod status), and the description covers all needed context for the agent to decide to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters (podName, namespace) described. The description adds no additional parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns detailed status of a single pod, listing specific fields like phase, readiness, restart count, etc. It distinguishes from sibling tools like get_pod_logs and get_recent_events by focusing on pod health status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Use this to dig into why a specific pod is unhealthy.' This implies when to use it, though it does not explicitly exclude cases like checking logs or events.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_eventsA

Returns Kubernetes events (Warning and Normal) for a namespace or specific pod, sorted by most recent. Events often reveal the root cause of failures: OOMKilled, FailedScheduling, ImagePullBackOff, Liveness probe failures, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
podNameNoOptional: filter events to only those involving this pod.
namespaceNoNamespace to fetch events from. Defaults to "default".

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description is minimal. It states the tool returns events sorted by most recent but does not mention whether it is read-only, pagination, or response format. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines function, second gives examples. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficient for a simple retrieval tool with two optional parameters. Could mention return format or default event limit, but no output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so schema already describes parameters. Tool description adds no extra semantic value beyond restating that it can filter by pod or namespace.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns Kubernetes events for a namespace or specific pod, sorted by most recent. Distinguishes from siblings like get_pod_logs or get_pod_status by focusing on events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for debugging failures by listing typical error events (OOMKilled, FailedScheduling, etc.). Does not explicitly compare with siblings but context makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resource_usageA

Returns real-time CPU and memory usage for pods, compared against their resource requests and limits. Requires metrics-server to be running in the cluster (enable via: minikube addons enable metrics-server). Use to identify pods that are throttled, near their memory limit, or OOMKill candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
podNameNoOptional: get usage for a single pod only.
namespaceNoNamespace to query. Defaults to "default".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description correctly identifies the tool as real-time but does not disclose caching, rate limits, or idempotency. It adds value by stating the dependency on metrics-server, which is essential for the agent to know. Minor omission: no mention of whether the operation is read-only (implied but not stated).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, followed by requirement and use case. No filler or redundancy. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with no output schema, the description covers purpose, prerequisite, and use cases. It does not describe the return format (e.g., CPU units, memory in MiB), but this is acceptable given the lack of output schema and the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema: it merely restates that podName is optional and namespace defaults to 'default', which are already in the schema. No new parameter context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Returns real-time CPU and memory usage for pods, compared against their resource requests and limits.' This specific verb (returns) and resource (pods with resource tracking) clearly distinguishes it from sibling tools like get_pod_status which provide general pod status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a prerequisite ('Requires metrics-server to be running in the cluster') and a concrete use case ('identify pods that are throttled, near their memory limit, or OOMKill candidates'). However, it does not explicitly state when not to use this tool or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_podsA

Lists all pods in a namespace with their name, status, restart count, age, and node. Use this as a first step to get an overview of what is running and spot any pods in Error, CrashLoopBackOff, or Pending state.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNoKubernetes namespace to list pods from. Defaults to "default".

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes a read-only operation listing pods, which is accurate. No annotations are provided, so the description carries the full burden. It does not discuss pagination or potential performance impacts, but for a simple list tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary action and output fields, followed by usage guidance. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (one optional parameter, no output schema), the description fully covers what the tool does, returns, and when to use it. No missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (namespace) is fully described in the schema (100% coverage). The description adds context by stating defaults to 'default', reinforcing the parameter's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all pods in a namespace with specific fields (name, status, restart count, age, node), distinguishing it from sibling tools like get_pod_logs or get_pod_status which focus on individual pods or different details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this as a first step to get an overview and spot problematic pods, providing clear context for when to use it. However, it does not explicitly mention when not to use or directly compare to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_podA

WRITE ACTION — This modifies cluster state. Deletes the specified pod, which triggers automatic recreation if the pod is managed by a Deployment or ReplicaSet. Always confirm with the user before calling this. Use dryRun=true (default) to preview the action without executing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoIf true (default), preview the action without executing it. Set to false only after the user confirms.
podNameYesName of the pod to restart.
namespaceNoKubernetes namespace. Defaults to "default".

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description discloses that it is a destructive action (pod deletion), automatic recreation behavior, and dry-run capability. Lacks mention of permissions or error cases, but sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with front-loaded 'WRITE ACTION' label. No wasted words, directly informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input, action, default behavior, and user confirmation. No output schema, but tool's effect is adequately described. Missing error handling info, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds context: dryRun default behavior and confirmation requirement, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a WRITE ACTION that modifies cluster state by deleting a pod, leading to recreation if managed. This distinguishes it from sibling tools like get_pod_status or list_pods.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to confirm with the user before calling and to use dryRun=true (default) to preview. Provides clear when-to-use guidance, though no direct comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scale_deploymentA

WRITE ACTION — This modifies cluster state. Scales a Deployment to the specified number of replicas. Always confirm with the user before calling this. Use dryRun=true (default) to preview the change without executing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoIf true (default), preview the action without executing it. Set to false only after the user confirms.
replicasYesTarget number of replicas.
namespaceNoKubernetes namespace. Defaults to "default".
deploymentNameYesName of the deployment to scale.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it modifies cluster state (destructive action) and provides safety mechanisms (confirmation, dry run). With no annotations, this achieves decent transparency, though it doesn't describe immediate consequences like rollout initiation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no wasted words. The 'WRITE ACTION' label at the start provides immediate understanding. Every sentence contributes essential guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple scaling tool with good parameter descriptions and usage hints, the description is mostly complete. Missing only potential return value details, but no output schema exists to necessitate that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by stating the dryRun default and its preview purpose. This goes beyond the schema to aid agent understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Scales') and resource ('a Deployment'), distinguishing it from sibling tools (which are read-only or other operations). The upfront 'WRITE ACTION' label reinforces its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to confirm with the user before calling and to use dryRun=true to preview. While it doesn't list specific alternatives, the context with sibling tools and the dry run guidance adequately guides usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 8 tool updatesv1.0.0
    • First observedget_deployment_status
    • First observedget_pod_logs
    • First observedget_pod_status
    • First observedget_recent_events
    • First observedget_resource_usage
    • First observedlist_pods
    • First observedrestart_pod
    • First observedscale_deployment

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct aspect of Kubernetes operations: deployment status, pod logs, pod status, events, resource usage, pod listing, pod restart, and deployment scaling. No functional overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (get_deployment_status, get_pod_logs, list_pods, restart_pod, scale_deployment) with clear action and resource.

Tool Count5/5

8 tools is well-scoped for Kubernetes ops: covers critical monitoring and management actions without being overwhelming.

Completeness4/5

Covers core monitoring (logs, status, events, resource usage) and basic actions (restart, scale). Minor gaps: no describe resource, exec, or deployment rollout history, but the set is focused and practical.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables advanced management of Kubernetes clusters through natural language interactions. Supports querying, managing, and monitoring pods, deployments, nodes, and logs across multiple contexts and namespaces.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs like Claude to securely execute Kubernetes CLI tools (kubectl, helm, istioctl, argocd) across multiple clusters through dynamic kubeconfig support, allowing natural language Kubernetes management and operations.
    5
    MIT