Skip to main content
Glama
mmpyro

vcluster-mcp

by mmpyro

vcluster MCP Server

This is a Model Context Protocol (MCP) server that provides tools for managing vcluster instances. It allows AI assistants to list, describe, create, delete, pause, resume, export kubeconfigs, inspect control-plane certificates, and even execute commands inside virtual clusters.

Features

  • Lifecycle Management: Create (with full helm flag coverage - --set, multiple values files, chart pinning, --expose), delete, pause, resume, and disconnect vclusters.

  • Observability: List all vclusters and get detailed descriptions of specific instances.

  • Kubeconfig Export: Write a vcluster kubeconfig to a private (0600) temporary file and return its path, so credentials are never returned inline and the caller's kube context is left untouched.

  • Certificate Inspection: Read-only vcluster certs check for control-plane certificate expiry.

  • Remote Execution: Execute commands directly inside a vcluster context using the vcluster connect mechanism.

  • Namespace Metadata: Manage labels and annotations on Kubernetes namespaces associated with vclusters.

  • Read-only Resources: Browse the environment through vcluster:// URIs without invoking a tool.

Related MCP server: Kube MCP

Documentation

Full documentation lives in docs/:

  • Tools — all 16 operations, their parameters and safety notes

  • Prompts — the 6 guided workflows and when each applies

  • Resources — the 4 read-only vcluster:// URIs

  • Architecture — how a call flows through the code, and how to add a tool

Breaking changes

  • vcluster_delete no longer deletes the host namespace by default. Previously every delete passed --delete-namespace, which destroyed the namespace along with any unrelated workloads in it. The namespace is now preserved unless you pass delete_namespace=True; vcluster still cleans up namespaces it created itself.

Project Structure

The project follows a modular structure optimized for MCP:

  • src/: Core application source code.

    • tools/: MCP tool implementations (vcluster operations, namespace metadata).

    • prompt/: MCP prompt templates to guide the LLM in:

      • VCluster Management: General assistance with vcluster operations.

      • Lifecycle Operations: Focused guidance on create/delete/pause/resume.

      • Access: Exporting kubeconfigs and running commands inside a vcluster.

      • Certificates: Reading control-plane certificate expiry.

      • Metadata Management: Assistance with namespace labels and annotations.

      • Troubleshooting: Systematic diagnosis of vcluster-related issues.

    • resources/: Read-only vcluster:// resources for browsing clusters, certificates and namespace metadata.

    • utils/: Shared utilities, Kubernetes client setup, and vcluster manager.

    • tests/: Comprehensive unit tests for the server logic.

  • docs/: Tool, prompt, resource and architecture documentation.

  • pyproject.toml: Project configuration and dependency management via uv.

Prerequisites

To run this MCP server and manage vclusters, you need the following:

1. Python Environment

This project uses uv for dependency management. See Development Commands for installation.

2. vcluster CLI

vcluster CLI must be installed on your system and available in your PATH.

3. kubectl

kubectl must be installed and configured with access to the host Kubernetes cluster where vclusters are running.

Development Commands

For convenience, a Makefile is provided with common tasks:

  • Sync dependencies:

    make sync      # Production only
    make sync-dev  # Include dev dependencies
  • Running tests:

    make unittest          # Run unit tests only
    make test-cov          # Run tests with coverage report
  • Quality Checks:

    make lint              # Run flake8 linting
    make typecheck         # Run mypy type checking
    make check             # Run both linting and type checking
  • Local Development:

    make dev               # Start server in development mode

Configuration for Cloud Code / Claude Desktop

To use this MCP server, add the following configuration to your mcpServers setting:

Local path

Important: Before using this MCP server, you need to install the dependencies. Run this command in the project root:

uv sync

Then add the following configuration to your MCP settings:

{
  "mcpServers": {
    "vcluster": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "~/vcluster-mcp-server",
        "run",
        "python",
        "src/server.py"
      ],
      "env": {}
    }
  }
}

uvx

uvx is a uv subcommand for running Python tools in an isolated, cached environment.

Example configuration:

{
  "mcpServers": {
    "vcluster": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "git+https://github.com/mmpyro/vcluster-mcp-server.git"
      ]
    }
  }
}

Contributing

Unit tests are located in src/tests. Please ensure all tests pass before submitting changes.

Available Tools

16 tools
delete_namespace_annotationA

Delete an annotation from a namespace.

This function removes an annotation from a Kubernetes namespace. If the annotation doesn't exist, the operation is considered successful.

Args: namespace: The name of the namespace to remove the annotation from. key: The annotation key to delete. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[bool, str]: True on success (or if annotation didn't exist), or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description covers key behavior: it states that deleting a non-existent annotation is considered successful, and it explains the return value (Union[bool, str]). It also clarifies the optional kubeconfig_path behavior. However, it does not disclose permission requirements or the effect of deleting a non-existent namespace.

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

Conciseness4/5

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

The description is well-structured with a summary, details, Args, and Returns sections. The first two sentences are somewhat redundant ('Delete an annotation from a namespace' vs 'This function removes an annotation from a Kubernetes namespace'), which slightly reduces conciseness.

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?

The description covers the purpose, all parameters, and the return behavior, making it sufficient for a simple deletion operation. It lacks explicit usage guidance and potential failure scenarios (e.g., non-existent namespace), but the output schema likely covers return details.

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

Parameters5/5

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

The schema has 0% description coverage, but the description compensates by explaining every parameter: namespace, key, and kubeconfig_path, including the default behavior when kubeconfig_path is not provided. This adds meaning beyond the schema's bare titles.

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 opens with a specific verb and resource: 'Delete an annotation from a namespace.' It clearly states the operation and the target, distinguishing it from sibling tools like get_namespace_annotations and set_namespace_annotation based on the delete action.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention exclusions or conditions. It simply states what the function does, leaving the agent to infer usage from the purpose alone.

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

delete_namespace_labelA

Delete a label from a namespace.

This function removes a label from a Kubernetes namespace. If the label doesn't exist, the operation is considered successful.

Args: namespace: The name of the namespace to remove the label from. key: The label key to delete. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[bool, str]: True on success (or if label didn't exist), or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explicitly notes that deleting a non-existent label is treated as success, and describes the return type (bool or error). It also explains fallback behavior for kubeconfig. Missing details like permissions, but core behavior is well covered.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections, using concise sentences. It is somewhat more verbose than strictly necessary, but every sentence adds value, and the format aids readability.

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 relatively simple tool with 3 parameters and an output schema, the description covers the operation, edge case behavior, and parameter defaults. It doesn't provide exhaustive Kubernetes details, but it is sufficiently complete for an agent to select and invoke it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It explains each parameter meaningfully: namespace (target), key (label key), and kubeconfig_path (optional, with default behavior). This fully covers the semantics of all three parameters.

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 starts with 'Delete a label from a namespace,' a specific verb and resource that clearly distinguishes this from sibling tools like set_namespace_label or delete_namespace_annotation. The purpose is unambiguous.

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 intended use is implied clearly by the description—removing a label from a namespace. Sibling tool names provide further context. No explicit exclusions or alternative references are given, but the context is clear enough for selection.

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

get_namespace_annotationsA

Get annotations for a specific namespace.

This function retrieves all annotations associated with a Kubernetes namespace. Annotations are similar to labels but are typically used for storing non-identifying metadata.

Args: namespace: The name of the namespace to get annotations from. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict[str, str], str]: Dictionary of annotations on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries behavioral burden. It discloses return type ('Dictionary of annotations on success, or error object') and optional kubeconfig behavior, though it doesn't explicitly state that the operation is non-destructive or mention permission requirements.

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?

Structured docstring with a short first sentence, context paragraph, and Args/Returns sections. Each sentence adds value; no filler.

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?

For a simple read operation, the description covers purpose, parameter semantics, and return behavior. It's complete given the low complexity and presence of a described output.

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

Parameters5/5

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

Schema coverage is 0%, but the Args section fully describes both parameters: namespace as the required name, and kubeconfig_path as an optional path defaulting to the environment kubeconfig. This compensates for the lack of schema descriptions.

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?

Description opens with 'Get annotations for a specific namespace' and clarifies it retrieves all annotations, distinguishing it from sibling tools like get_namespace_labels and set_namespace_annotation. The verb and resource are specific.

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

Usage Guidelines3/5

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

No explicit when/when-not guidance is provided; the description only implies usage by contrasting annotations with labels. It doesn't name alternatives like get_namespace_labels.

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

get_namespace_labelsA

Get labels for a specific namespace.

This function retrieves all labels associated with a Kubernetes namespace. Labels are key-value pairs that can be used to organize and select resources.

Args: namespace: The name of the namespace to get labels from. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict[str, str], str]: Dictionary of labels on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It correctly implies a read-only operation ('retrieves all labels') and documents the kubeconfig fallback behavior. However, it does not disclose authentication requirements, error conditions, or explicitly state it does not modify state, leaving some gaps.

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

Conciseness4/5

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

The description is well-structured with a clear purpose statement, a brief explanation of labels, and organized Args/Returns sections. It is concise without unnecessary verbosity, though the generic explanation of labels could be trimmed.

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 relatively simple read tool, the description covers purpose, parameters, and return type. It does not mention error handling or access prerequisites, but the tool's simplicity and the provided Args/Returns sections make it sufficiently complete for an AI agent to invoke correctly.

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 description coverage is 0%, so the description must fully explain parameters. It does so effectively: 'namespace' is defined as the namespace to get labels from, and 'kubeconfig_path' is described with optionality and default behavior. This adds meaningful semantics beyond the raw property names.

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 'Get labels for a specific namespace' and explains that it retrieves all labels associated with a Kubernetes namespace. It distinguishes itself from sibling tools like get_namespace_annotations by explicitly focusing on labels rather than annotations.

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

Usage Guidelines2/5

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

The description provides context but no explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it, mention alternatives, or explain how it relates to sibling tools like set_namespace_label or get_namespace_annotations.

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

set_namespace_annotationA

Create or update an annotation on a namespace.

This function creates a new annotation or updates an existing annotation on a Kubernetes namespace. Annotations are key-value pairs used for storing non-identifying metadata such as descriptions, links, or configuration data.

Args: namespace: The name of the namespace to annotate. key: The annotation key to set. value: The annotation value to assign. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[bool, str]: True on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that it creates/updates annotations, explains the kubeconfig fallback behavior, and states the return type (True on success or an error object). It doesn't mention permissions or idempotency, but the information given is sufficient for a simple mutation tool.

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

Conciseness4/5

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

The description is well-structured with a clear main sentence, a brief explanation of annotations, an Args list, and a Returns note. It is slightly verbose with the generic definition of annotations, but every element earns its place and the key information is front-loaded.

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?

The description covers the tool's purpose, parameters, kubeconfig behavior, and return value. It does not specify error object details or whether the namespace must exist, but the output schema and simplicity of the operation make this acceptable. The description is complete enough for an agent to invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully with an Args section that explains each parameter: namespace, key, value, and kubeconfig_path. This adds significant meaning beyond the schema's bare type/required definitions.

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 states 'Create or update an annotation on a namespace' with a specific verb and resource. It distinguishes itself from sibling tools like get_namespace_annotations and set_namespace_label by focusing on annotation write operations for namespaces.

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 clearly indicates the operation is for creating or updating namespace annotations, which implies when to use it. It doesn't explicitly mention alternatives or exclusions, but the context is obvious given the sibling tools (get/delete annotations). The lack of explicit when-not guidance slightly lowers the score.

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

set_namespace_labelA

Create or update a label on a namespace.

This function creates a new label or updates an existing label on a Kubernetes namespace. Labels are key-value pairs used for organizing and selecting resources.

Args: namespace: The name of the namespace to label. key: The label key to set. value: The label value to assign. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[bool, str]: True on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
namespaceYes
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the create/update behavior, return value (True or error object), and optional kubeconfig fallback, but does not discuss permissions, reversibility, or immediate cluster effects beyond the basic operation.

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

Conciseness4/5

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

The description is well-structured with a clear summary, a brief elaboration on labels, an Args block, and a Returns block. The only minor flaw is slight redundancy between the first sentence and the following sentence, but the overall structure is efficient and scannable.

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 four-parameter tool with an output schema, the description covers the key operational aspects: parameters, optional kubeconfig, and return format. It does not dive into edge cases or detailed error handling, but it is sufficient for correct invocation.

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

Parameters5/5

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

The schema description coverage is 0%, and the description fully compensates by explaining all four parameters: namespace, key, value, and kubeconfig_path, including default behavior. This gives the agent all necessary information to use the tool correctly.

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 'Create or update a label on a namespace,' specifying both the action and the resource. This unambiguously identifies the tool's purpose and distinguishes it from sibling tools like set_namespace_annotation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to choose this tool over alternatives such as set_namespace_annotation or get_namespace_labels. It does not name alternatives or offer any exclusion criteria, leaving the agent to infer usage purely from the tool's name and purpose.

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

vcluster_callA

Execute a command inside a vcluster.

This function connects to a running vcluster and executes the given command within the virtual cluster context. It uses vcluster connect with the server-side flag to establish the connection and run the command.

Args: name: The name of the vcluster to connect to and execute the command in. command: The command string to execute inside the vcluster. Supports standard shell quoting (e.g. "kubectl get pods -n default"). namespace: Optional namespace where the vcluster is located. If not provided, defaults to vcluster-<name>. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[CommandResult, Dict[str, str], str]: CommandResult with exit code and output on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
commandYes
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool connects to a running vcluster, uses the server-side flag, and returns a CommandResult with exit code and output, or an error object. It also covers default namespace and kubeconfig behavior, providing useful operational context, though it could mention permission requirements or side effects more explicitly.

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?

The description is well-structured and appropriately sized: a one-sentence summary, a brief mechanism explanation, then Args and Returns sections. Every sentence contributes value, and it is front-loaded with the primary purpose. No redundancy or unnecessary fluff.

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 the tool's complexity (executing arbitrary commands inside a vcluster) and the presence of an output schema, the description covers all essential aspects: connection method, parameters, defaults, and return behavior (success vs. failure). It is complete enough for an agent to invoke the tool correctly without additional information.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining each parameter in detail: name, command (including quoting example), optional namespace with default vcluster-<name>, and optional kubeconfig_path with environment fallback. This adds substantial meaning beyond the bare schema property names and types.

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 'Execute a command inside a vcluster' with a specific verb and resource. It clearly distinguishes this tool from sibling tools like vcluster_describe or vcluster_pause by focusing on command execution within the virtual cluster, and further details the mechanism using 'vcluster connect'.

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 provides clear context on when to use this tool: to run commands inside a vcluster. It does not explicitly list alternatives or exclusions, but the purpose is distinct enough from siblings. The Args and Returns sections also set expectations for usage, making it easy for an agent to decide when to invoke it.

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

vcluster_certs_checkA

Check the control-plane certificates of a vcluster.

This function reports the current certificates and their expiry dates. Expired control-plane certificates typically surface as opaque connection failures, so this is worth checking when a vcluster is unreachable but otherwise appears healthy. The operation is read-only.

Args: name: The name of the vcluster to check. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict, List, str]: Certificate report on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the operation is read-only, reports certificate and expiry information, and returns an error object on failure. It also explains why the check matters in a real failure scenario, adding useful behavioral context beyond the bare function name.

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?

The description is well-structured with a purpose statement, diagnostic context, parameter explanations, and return behavior. Every sentence earns its place, and the main purpose is front-loaded before the details.

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?

For a read-only diagnostic tool with three parameters, the description is complete: it states what the tool does, when to use it, how parameters behave, and what to expect on success or failure. The presence of an output schema further reduces the need to describe exact return fields.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining all three parameters: name identifies the vcluster, namespace defaults to the vcluster name, and kubeconfig_path defaults to the environment kubeconfig. This adds meaning the raw schema does not provide.

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 a specific verb and resource: checking the control-plane certificates of a vcluster and reporting current certificates with expiry dates. This distinguishes it from sibling tools like vcluster_list, vcluster_describe, and vcluster_kubeconfig, which serve different purposes.

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 gives a clear when-to-use condition: check when a vcluster is unreachable but otherwise appears healthy, since expired certificates often cause opaque connection failures. It does not explicitly contrast with alternatives, but the diagnostic context is strong enough for an agent to select it appropriately.

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

vcluster_createA

Create a new vcluster.

Creates a vcluster with the specified name. Configuration can come from values files, inline helm values, or both. The caller's kube context is never switched by this operation.

Args: name: The name for the new vcluster. values: Optional path to a values file, or a list of paths. Later files override earlier ones. upgrade: Optional flag to upgrade the cluster if it was created before. namespace: Optional namespace to create the vcluster in. If not provided, the vcluster CLI picks the default. set_values: Optional inline helm values, e.g. {"sync.toHost.ingresses.enabled": "true"}. Avoids writing a temporary values file for a single setting. chart_version: Optional vcluster chart version to pin, e.g. "0.36.0". chart_repo: Optional chart repository URL override. chart_name: Optional chart name override. expose: If True, create a load balancer service to expose the vcluster endpoint outside the host cluster. create_namespace: If False, do not create the namespace. Defaults to the CLI behaviour, which creates it when missing. kube_config_context_name: Optional override for the generated kube context name. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[CommandResult, str]: CommandResult on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
exposeNo
valuesNo
upgradeNo
namespaceNo
chart_nameNo
chart_repoNo
set_valuesNo
chart_versionNo
kubeconfig_pathNo
create_namespaceNo
kube_config_context_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds valuable context beyond the schema: the caller's kube context is never switched, later values files override earlier ones, create_namespace follows CLI defaults, and kubeconfig_path falls back to environment defaults. It could also mention prerequisites like requiring the vcluster CLI or cluster access, but the disclosed behavior is substantial.

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

Conciseness4/5

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

The description is well-structured with a short purpose statement, followed by an Args section and a Returns section. It is long only because all 12 parameters need explanation. There is slight redundancy between 'Create a new vcluster' and 'Creates a vcluster with the specified name,' and the Returns section is less necessary given the output schema, but overall each section earns its place.

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?

For a complex 12-parameter tool, the description covers every parameter, key defaults, precedence rules, a significant side-effect guarantee (no kube-context switching), and the return type. It provides enough information for an agent to call the tool correctly without needing to open the schema, which is remarkable given the parameter count.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning. It documents all 12 parameters, including defaults, override behavior, example inline values, and the effect of flags like expose and create_namespace. This far exceeds the bare schema titles and fully compensates for the lack of schema descriptions.

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 opens with a specific action and resource: 'Create a new vcluster' and restates 'Creates a vcluster with the specified name.' This clearly distinguishes it from sibling tools like vcluster_list, vcluster_describe, vcluster_delete, and vcluster_pause, which cover other lifecycle operations.

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

Usage Guidelines3/5

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

The description gives strong parameter-level guidance, such as 'Later files override earlier ones' and set_values 'Avoids writing a temporary values file for a single setting.' However, it does not explicitly contrast this tool with siblings or state when to prefer vcluster_create over related lifecycle tools, leaving most comparison to inference from the tool name.

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

vcluster_deleteA

Delete a vcluster.

This action is irreversible - the cluster and all its resources will be permanently removed. By default the host namespace is preserved; the vcluster CLI still cleans up namespaces it created itself.

Args: name: The name of the vcluster to delete. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. delete_namespace: If True, also delete the host namespace. DESTRUCTIVE - this removes every other workload in that namespace as well. Only set it when the namespace exists solely for this vcluster. keep_pvc: If True, retain the vcluster's persistent volume claim so the data survives the deletion. ignore_not_found: If True, succeed instead of erroring when the vcluster does not exist. Useful for idempotent cleanup. wait: If False, return immediately instead of waiting for the deletion to complete. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[CommandResult, str]: CommandResult on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
waitNo
keep_pvcNo
namespaceNo
kubeconfig_pathNo
delete_namespaceNo
ignore_not_foundNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full transparency burden. It discloses irreversibility, host-namespace preservation, that the CLI cleans up namespaces it created, the destructive namespace deletion flag, PVC retention, not-found behavior, and wait behavior.

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?

The description is structured with a warning up front, then a labeled Args section, and then Returns. Every sentence adds necessary behavioral or parameter context for a destructive operation, with no filler.

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?

Despite the large parameter count and complete absence of annotations, the description fully covers all parameters, side effects, destructive edge cases, defaults, and the return type. No critical information is missing for an agent to decide whether to call this tool and how.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning. It explains all seven parameters, including defaults, the destructive implications of delete_namespace, and the purpose of keep_pvc, ignore_not_found, wait, and kubeconfig_path.

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 opens with a specific verb and resource ('Delete a vcluster') and immediately clarifies the irreversibility, which separates it from sibling operations like vcluster_pause, vcluster_resume, or vcluster_create. The phrase 'permanently removed' makes the tool's purpose unmistakable.

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 irreversible-warning gives clear context that this is for permanent removal rather than temporary lifecycle actions like pause/resume. It does not explicitly name alternatives or state 'use vcluster_pause for temporary stops,' so it stops short of a full 5, but the context is not merely implied.

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

vcluster_describeA

Describe a specific vcluster in detail.

This function retrieves detailed information about a specific vcluster, including its status, resources, and configuration. The information is returned as serialized JSON on success, or an error object if the command failed.

Args: name: The name of the vcluster to describe. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict, str]: Detailed vcluster information on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that information is returned as serialized JSON on success or an error object on failure, and details what info is included (status, resources, configuration). While not explicitly saying it is read-only, the verb 'describe' implies no mutation, and the return/error behavior is adequately disclosed.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then a slight elaboration, followed by a structured Args list and Returns note. It is somewhat verbose, but every sentence adds value (what info is retrieved, parameter defaults, failure behavior). It is appropriately sized for a tool with three parameters.

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 describe tool with an output schema available (as indicated by context signals), the description covers the essential aspects: purpose, parameter defaults, and error behavior. It does not explain prerequisites like cluster access, but for this simple read operation the coverage is adequate and complete enough for an agent to select and invoke it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args section fully compensates: it explains the name parameter, states namespace is optional with a default to the vcluster name, and clarifies kubeconfig_path falls back to the environment default. This adds meaningful semantics beyond the bare schema types and titles.

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's function: 'Describe a specific vcluster in detail.' It specifies the resource (vcluster), the granularity (specific, not listing all), and the kind of information (status, resources, configuration). This distinguishes it from sibling tools like vcluster_list and vcluster_create.

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 clearly indicates when to use it: when you need detailed information about a single vcluster. It mentions optional namespace behavior and kubeconfig defaults, which helps in practical usage. However, it does not explicitly state when not to use it or name alternatives like vcluster_list for listing all clusters.

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

vcluster_disconnectC

Disconnect from a vcluster.

Returns: Union[CommandResult, str]: CommandResult on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

The description discloses the return type (CommandResult or error) but does not explain the side effects of disconnecting, such as whether it modifies kubeconfig context, requires an active connection, or is reversible. With no annotations, the description fails to carry the behavioral transparency burden.

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

Conciseness4/5

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

The description is brief and to the point, with no redundant wording. The structure includes a short action statement and a return type section, which is efficient, though it sacrifices completeness.

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

Completeness2/5

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

For a tool that likely changes state (disconnecting), the description lacks essential context about prerequisites, effects, and alternatives. The output schema may document return values, but the description does not sufficiently inform an agent when and how to invoke this tool safely.

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

Parameters2/5

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

The single parameter kubeconfig_path is not mentioned in the description. Schema coverage is 0%, and the description does not clarify how or why this path is used, leaving the agent to infer semantics solely from the parameter name.

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

Purpose4/5

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

The description clearly states 'Disconnect from a vcluster,' which identifies the specific action and resource. It is distinct from sibling tools like vcluster_delete or vcluster_pause, though it does not explicitly contrast itself with them.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as vcluster_delete or vcluster_pause. No context is provided about prerequisites, scenarios, or exclusions.

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

vcluster_kubeconfigA

Export a vcluster kubeconfig to a file without switching contexts.

Use this when you need credentials to hand to another tool, for example kubectl --kubeconfig <path> or a Helm invocation. Unlike vcluster_call, it leaves the caller's current kube context untouched.

The kubeconfig is written to a private (0600) temporary file and the path is returned rather than the contents, because the file holds client credentials. The caller owns that file and should delete it after use.

Args: name: The name of the vcluster to export credentials for. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. server: Optional API server address to record in the kubeconfig. Set this when the vcluster is reached through an ingress or load balancer rather than a local port forward. insecure: If True, the generated kubeconfig skips TLS verification. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict[str, str], str]: A dict with kubeconfig_path, context and server on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
serverNo
insecureNo
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it does well. It discloses that the kubeconfig is written to a private 0600 temporary file, returns the path rather than contents for security reasons, and notes that the caller owns and should delete the file.

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?

The description is well-structured and front-loaded with the core purpose, followed by usage context, behavioral notes, parameter details, and return type. Every sentence adds useful information without padding.

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?

For a tool with five parameters and no annotations, this description is complete. It covers use case, behavior, file ownership, parameter semantics, and the return shape, leaving little ambiguity for an agent deciding whether and how to invoke it.

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

Parameters5/5

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

Schema description coverage is 0%, but the Args section fully compensates. Each parameter is explained with meaningful defaults and guidance, such as namespace defaulting to the vcluster name and server being needed for ingress or load balancer scenarios.

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 opens with a specific verb and resource: 'Export a vcluster kubeconfig to a file without switching contexts.' It immediately distinguishes this tool from vcluster_call, so an agent can tell them apart without opening the schema.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool: 'when you need credentials to hand to another tool,' and gives concrete examples like kubectl and Helm. It also names the alternative, vcluster_call, and explains the key difference: this tool leaves the current kube context untouched.

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

vcluster_listA

List all vclusters in the current Kubernetes context.

This function retrieves all vclusters managed by the vcluster platform in the current Kubernetes context. It sets up the Kubernetes client internally and returns the list of vclusters as serialized JSON on success, or an error object if the command failed.

Args: kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[Dict, List, str]: List of vclusters on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries full burden for behavioral disclosure. It explains internal client setup, serialized JSON return format, error behavior, and default kubeconfig handling. It does not mention side effects, but the read-only nature is implied by 'List'. No contradictions with annotations exist.

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

Conciseness4/5

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

The description is well-structured with a summary sentence, behavioral details, and clearly labeled Args and Returns sections. It is front-loaded and efficient, though there is minor redundancy between the first sentence and the second sentence.

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 list tool with one optional parameter, the description covers purpose, behavior, parameter semantics, and return format. It lacks details about error object structure or permission requirements, but these are not critical. Overall, it is sufficient for selecting and invoking the tool.

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

Parameters5/5

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

The input schema only defines kubeconfig_path as an optional string/null with default null. The description adds full meaning: 'Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.' Given 0% schema description coverage, this compensation is complete.

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 opens with 'List all vclusters in the current Kubernetes context,' clearly stating the verb (List), resource (vclusters), and scope (current Kubernetes context). This distinguishes it from sibling tools like vcluster_describe, which targets a single vcluster.

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

Usage Guidelines3/5

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

The description notes the current Kubernetes context and the optional kubeconfig path, providing context for when the tool can be used. However, it does not explicitly mention when to prefer this over alternatives like vcluster_describe, nor does it state any exclusions. Usage is implied but not directly addressed.

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

vcluster_pauseA

Pause a running vcluster.

This function pauses a running vcluster, which stops the virtual cluster without deleting it. This is useful for temporarily suspending workloads while preserving the cluster state.

Args: name: The name of the vcluster to pause. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[CommandResult, str]: CommandResult on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation is non-destructive ('without deleting it') and preserves state, and it mentions the return type. However, it does not detail potential side effects, prerequisites, or behaviors on failure beyond returning an error object.

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?

The description is well-structured with a summary, Args, and Returns sections. It is concise, front-loaded with purpose, and every sentence adds value. No redundancy or unnecessary content.

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?

The description covers the purpose, parameter semantics, return value, and a typical use case. A minor gap is the lack of explicit comparison to sibling tools (e.g., resume, delete) for decision-making, but the provided context is sufficient for correct invocation.

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

Parameters5/5

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

The input schema has no descriptions for parameters (0% coverage). The description compensates fully by explaining each parameter: name, namespace (with default behavior), and kubeconfig_path (with default). This is critical for correct invocation.

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 pauses a running vcluster, with a specific verb and resource. It also explains the effect ('stops the virtual cluster without deleting it'), which distinguishes it from sibling tools like vcluster_resume and vcluster_delete.

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 provides clear context for when to use the tool: 'This is useful for temporarily suspending workloads while preserving the cluster state.' It implies a comparison with deletion and resume but does not explicitly name alternatives or state when not to use it.

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

vcluster_resumeA

Resume a paused vcluster.

This function resumes a previously paused vcluster, restoring its operation and allowing workloads to run again.

Args: name: The name of the vcluster to resume. namespace: Optional namespace where the vcluster is located. If not provided, defaults to the vcluster name. kubeconfig_path: Optional path to a kubeconfig file. If not provided, the default kubeconfig from the environment will be used.

Returns: Union[CommandResult, str]: CommandResult on success, or error object if failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
namespaceNo
kubeconfig_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It states the effect ('restoring its operation and allowing workloads to run again') and returns a CommandResult or error, but it does not disclose prerequisites beyond 'previously paused', potential side effects if already running, or idempotency behavior. This is basic transparency but lacks deeper context.

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?

The description is concise and well-structured, with clear Args and Returns sections. It front-loads the purpose, avoids redundant phrasing, and every sentence provides necessary information without waste.

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 straightforward tool with an output schema available, the description covers the essential aspects: purpose, parameters, and return type. It could be more complete by addressing edge cases (e.g., resuming an already-running vcluster), but overall it provides sufficient context for an agent to invoke the tool correctly.

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

Parameters5/5

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

The schema has 0% description coverage, but the description compensates thoroughly by explaining each parameter: name is required, namespace defaults to the vcluster name, and kubeconfig_path defaults to the environment kubeconfig. This adds valuable meaning beyond the schema's minimal property names.

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 uses a specific verb ('Resume') and clearly identifies the resource ('vcluster'), explicitly contrasting with the paused state. This distinguishes it from sibling tools such as vcluster_pause and vcluster_create, making the tool's function unambiguous.

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 implies the tool should be used when a vcluster is paused, which provides clear context. However, it does not explicitly mention when not to use it or name alternative tools (e.g., vcluster_delete if the vcluster should be removed instead), leaving a slight gap in exclusion guidance.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.1
    • Addedvcluster_certs_check
    • Changedvcluster_create9 fields changed
      • addedInput schema / properties / chart_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Chart Name"
        +}
      • addedInput schema / properties / chart_repo
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Chart Repo"
        +}
      • addedInput schema / properties / chart_version
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Chart Version"
        +}
      • addedInput schema / properties / create_namespace
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Create Namespace"
        +}
      • addedInput schema / properties / expose
        Added value: +{
        +  "default": false,
        +  "title": "Expose",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / kube_config_context_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Kube Config Context Name"
        +}
      • addedInput schema / properties / namespace
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Namespace"
        +}
      • addedInput schema / properties / set_values
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Set Values"
        +}
      • changedInput schema / properties / values / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedvcluster_delete4 fields changed
      • addedInput schema / properties / delete_namespace
        Added value: +{
        +  "default": false,
        +  "title": "Delete Namespace",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / ignore_not_found
        Added value: +{
        +  "default": false,
        +  "title": "Ignore Not Found",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / keep_pvc
        Added value: +{
        +  "default": false,
        +  "title": "Keep Pvc",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / wait
        Added value: +{
        +  "default": true,
        +  "title": "Wait",
        +  "type": "boolean"
        +}
    • Addedvcluster_kubeconfig
  2. 14 tool updatesv0.1.0
    • First observeddelete_namespace_annotation
    • First observeddelete_namespace_label
    • First observedget_namespace_annotations
    • First observedget_namespace_labels
    • First observedset_namespace_annotation
    • First observedset_namespace_label
    • First observedvcluster_call
    • First observedvcluster_create
    • First observedvcluster_delete
    • First observedvcluster_describe
    • First observedvcluster_disconnect
    • First observedvcluster_list
    • First observedvcluster_pause
    • First observedvcluster_resume

TDQS

A3.6/5.0
Disambiguation4/5

Most tools target a distinct resource/action: create/delete/pause/resume/describe/list are clearly separated, and label vs annotation operations are differentiated. The main ambiguity is vcluster_disconnect, whose purpose is vague and could be confused with vcluster_call or vcluster_kubeconfig context handling.

Naming Consistency3/5

The vcluster_* prefix provides some cohesion, but conventions are mixed: vcluster_kubeconfig and vcluster_certs_check break the verb pattern, and the namespace metadata tools use a separate get/set/delete_namespace_* style. Everything is snake_case and readable, but the two naming schemes create inconsistency.

Tool Count3/5

At 16 tools, the server sits at the heavy end of the typical range, and several namespace label/annotation utilities feel peripheral to core vcluster management. A dedicated disconnect tool with no clear connect counterpart also adds questionable value.

Completeness4/5

The core vcluster lifecycle is well covered: create, list, describe, pause, resume, delete, plus call, kubeconfig export, and certificate checking. Minor gaps exist such as no dedicated upgrade/update tool and no obvious connect counterpart for vcluster_disconnect, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with and manage Kubernetes clusters, supporting operations on pods, deployments, services, configmaps, secrets, namespaces, metrics, and events with built-in safety features for destructive actions.
    9
    18
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage VMware vSphere infrastructure through 55 typed tools built on the govc CLI. It supports comprehensive operations including VM lifecycle management, snapshot control, datastore navigation, and networking configuration.
    25
    3
    MIT

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/mmpyro/vcluster-mcp'

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