vcluster-mcp
This MCP server manages vcluster virtual clusters and their Kubernetes host namespaces.
List and inspect: List all vclusters and get detailed descriptions of individual clusters.
Lifecycle: Create vclusters with Helm values, chart pinning, upgrade/expose options; delete with flags like delete_namespace, keep_pvc, ignore_not_found, and wait; pause and resume clusters.
Connectivity: Export a vcluster kubeconfig to a private temp file and return its path; run commands inside a vcluster with vcluster_call; disconnect from a vcluster.
Certificate checking: Read-only certificate expiry check for control-plane certificates.
Namespace metadata: Get, set, and delete labels and annotations on host namespaces.
Read-only resources: Browse vcluster information via vcluster:// URIs.
Provides tools for managing vcluster virtual clusters on Kubernetes, including lifecycle operations (create, delete, pause, resume), listing and describing clusters, exporting kubeconfigs, checking certificates, executing commands inside virtual clusters, and managing Kubernetes namespace labels and annotations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vcluster-mcplist all vclusters"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 checkfor control-plane certificate expiry.Remote Execution: Execute commands directly inside a vcluster context using the
vcluster connectmechanism.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.Low context cost: The advertised tool surface is 8,868 chars (~2.5k tokens), down from 29,035. Responses are compact JSON, sent once rather than twice, and hard-capped. A regression test holds the line.
Related MCP server: Kube MCP
Documentation
Full documentation lives in docs/:
Tools — all 12 operations, their parameters and safety notes
Resources — the 2 read-only
vcluster://URIsArchitecture — how a call flows through the code, and how to add a tool
Fixes
vcluster_certs_checknever worked. It passed-sto the CLI, and--silentsuppresses the JSON result itself rather than just the log noise, so every call returned{"error": "Failed to parse vcluster output: ..."}. The flag is gone; the CLI already logs to stderr._run_commanddiscarded stdout on any non-zero exit, so a command that partially succeeded lost its output. It now prefers stdout whenever the process wrote any.
Breaking changes
Tools return a JSON string, not a structured object. Every tool is now registered with
structured_output=False, so responses arrive as a single compact text block with nostructuredContent. Clients that read the structured half must parse the text instead.The six namespace label/annotation tools are now two.
get/set/delete_namespace_labelandget/set/delete_namespace_annotationare replaced bynamespace_metadata_get(namespace, kind)andnamespace_metadata_set(namespace, kind, key, value), where omittingvaluedeletes the key.All six prompts were removed. Their bodies re-listed the tool schemas the client already loads.
vcluster://clustersandvcluster://{namespace}/{name}were removed. They duplicatedvcluster_listandvcluster_describe.vcluster_listdrops theCreatedfield by default, sinceAgeSecondscarries the same fact; passfull=Trueto get it back.Responses are capped at 20,000 chars (2,000 for stderr inside an error message), with an explicit
[truncated: N more chars]marker.vcluster_deleteno 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 passdelete_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).resources/: Read-onlyvcluster://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, resource and architecture documentation.pyproject.toml: Project configuration and dependency management viauv.
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 dependenciesRunning tests:
make unittest # Run unit tests only make test-cov # Run tests with coverage reportQuality Checks:
make lint # Run flake8 linting make typecheck # Run mypy type checking make check # Run both linting and type checkingLocal 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 syncThen 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
12 toolsnamespace_metadata_getB
Read labels and/or annotations on a namespace.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | both | |
| namespace | Yes | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It conveys a read-only operation through the verb 'Read', but does not explain kubeconfig handling, error behavior, whether the target namespace must exist, or what the return value contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, no filler, and the core action is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should clarify return values and operational context. It does not state what the read returns, how kubeconfig_path affects execution, or any prerequisites. For a simple read tool this is a noticeable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaning for 'namespace' and the kind enum via 'labels and/or annotations', but kubeconfig_path is entirely unexplained. The parameter meaning is only partially enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') with a precise resource ('labels and/or annotations on a namespace'). It clearly distinguishes the tool from the sibling namespace_metadata_set, which performs the complementary write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. The sibling namespace_metadata_set is implied as the write counterpart, but the description never states a selection condition or exclusion. An agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
namespace_metadata_setA
Set or delete one label or annotation on a namespace.
Deleting a key that does not exist succeeds.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| kind | Yes | ||
| value | No | The value to set. Omit or pass null to delete the key instead. | |
| namespace | Yes | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must carry behavioral disclosure on its own. It does add one meaningful behavior — deleting a nonexistent key succeeds — but it does not cover other likely behavioral concerns such as permissions, whether setting an existing key overwrites it, or failure behavior for a nonexistent namespace.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two short sentences with no filler. The primary operation is front-loaded and the deletion edge case is a useful, non-redundant addition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata mutation tool, the description plus schema is largely sufficient: the required parameters are identifiable and the unusual idempotent-delete behavior is stated. Still, no annotations and no output schema mean the definition leaves room for additional context about prerequisites and failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (20%), and the description partially compensates by clarifying that 'kind' selects labels vs annotations and that 'key' is the metadata key being deleted. It does not explain namespace or kubeconfig_path, although those are fairly self-explanatory from their names and types, and the value-null semantics are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb combination ('Set or delete') with a precise resource ('one label or annotation on a namespace'), which clearly conveys the mutation operation and distinguishes it from the sibling namespace_metadata_get tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation is stated clearly, so an agent can infer that this tool is for modifying namespace metadata rather than reading it. However, the description does not explicitly mention when to use it over namespace_metadata_get or provide any exclusion/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_callB
Run a command inside a vcluster via vcluster connect.
Output is capped; prefer narrow queries over -o yaml across all namespaces.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| command | Yes | Command to run inside the vcluster, standard shell quoting, e.g. "kubectl get pods -n default". | |
| namespace | No | ||
| kubeconfig_path | No |
TDQS
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 mentions that output is capped, which is useful, but does not disclose side effects, authentication/connection requirements, failure behavior, or the fact that arbitrary commands may have cluster-wide impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary action, and the additional output-cap warning earns its place. It is lean, though slightly under-specified for the number of parameters involved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and sparse parameter documentation, the description leaves important context missing: what the command result looks like, how optional parameters behave, and whether any preconditions exist before invoking the vcluster. The output cap notice is the only contextual detail provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, with just the command parameter described. The description provides general advice about narrow queries but does not explain the semantics of name, namespace, or kubeconfig_path, leaving the agent to infer them from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run a command inside a vcluster via vcluster connect.' This clearly distinguishes it from the sibling tools like vcluster_kubeconfig, vcluster_pause, and vcluster_describe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives operational guidance ('prefer narrow queries over -o yaml across all namespaces') and warns about output capping, which implies this tool is for targeted queries. However, it does not explicitly state when to use this tool versus alternatives or 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_certs_checkA
Report control-plane certificates and expiry for a vcluster.
Read-only. Worth checking when a vcluster looks healthy but is unreachable, since expired certs surface as opaque connection failures.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| namespace | No | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It explicitly states 'Read-only', which is important safety information, but it does not disclose auth requirements, side-effect confirmation beyond read-only, or what the returned report contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The purpose is front-loaded, and the follow-up sentence provides actionable context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only diagnostic tool, the description covers the key use case and safety trait. However, with no output schema and no annotation support, it omits return-value expectations and parameter semantics, leaving a moderate completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no direct meaning to the three parameters. The property titles (Name, Namespace, Kubeconfig Path) are self-evident, but the description never explains which parameters are needed or how they interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Report') and a specific resource ('control-plane certificates and expiry for a vcluster'). It is distinct enough from siblings like vcluster_describe or vcluster_kubeconfig, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete trigger scenario: use it when a vcluster appears healthy but is unreachable, because expired certs produce opaque connection failures. It provides clear context but does not mention alternatives or explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_createB
Create a vcluster. Never switches the caller's kube context.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| expose | No | Create a load balancer service exposing the vcluster outside the host cluster. | |
| values | No | Values file paths; later files override earlier ones. | |
| upgrade | No | ||
| namespace | No | ||
| chart_name | No | ||
| chart_repo | No | ||
| set_values | No | Inline helm values as dotted keys, e.g. {"sync.toHost.ingresses.enabled": "true"}. | |
| chart_version | No | ||
| kubeconfig_path | No | ||
| create_namespace | No | ||
| kube_config_context_name | No |
TDQS
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 does disclose a meaningful trait: 'Never switches the caller's kube context.' However, it doesn't mention other potential behaviors like permissions, side effects, or error conditions. This is a useful but partial disclosure, warranting a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no filler. It front-loads the primary action and includes a useful behavioral note. Every word earns its place, making it appropriately sized for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain parameter semantics, expected side effects, prerequisites, or return behavior. The single behavioral note is insufficient for an agent to use this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description should compensate by explaining parameters. The description does not mention any of the 12 parameters (name, expose, values, etc.). It adds zero meaning beyond what the schema already provides, and leaves the majority of parameters undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a vcluster.' This is a specific verb and resource, and it distinguishes from siblings like vcluster_list, vcluster_delete, etc. The additional note about not switching kube context adds clarity without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention context, prerequisites, or conditions favoring this over sibling tools. The verb 'create' implies usage, but there is no explicit or implied guidance beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_deleteB
Delete a vcluster. Irreversible. The host namespace is preserved by default.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| wait | No | ||
| keep_pvc | No | Retain the persistent volume claim so data survives the deletion. | |
| namespace | No | ||
| kubeconfig_path | No | ||
| delete_namespace | No | DESTRUCTIVE: also delete the host namespace, removing every other workload in it. Only for a namespace that exists solely for this vcluster. | |
| ignore_not_found | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does disclose two key traits: deletion is irreversible, and the host namespace is preserved by default. However, it omits other important behaviors such as wait blocking by default, PVC deletion semantics, and the destructive potential of delete_namespace, which is only covered in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler. The key facts—delete action, irreversibility, and default namespace preservation—are front-loaded and each sentence contributes meaning. This is an excellent example of concise, structured tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no annotations, no output schema, and low schema description coverage. The description covers only the headline destructive behavior and one default. It does not address blocking behavior, data survival, namespace targeting, kubeconfig handling, or not-found behavior, leaving the agent under-equipped to invoke it correctly in varied scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, so the description should compensate for under-documented parameters. It adds partial meaning by clarifying the default for delete_namespace ('host namespace is preserved by default'), but it says nothing about name, wait, keep_pvc, namespace, kubeconfig_path, or ignore_not_found. The compensation is insufficient for a 7-parameter destructive operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Delete a vcluster.' It adds meaningful scope notes ('Irreversible. The host namespace is preserved by default.') that go beyond mere repetition of the tool name. It does not explicitly distinguish from sibling tools, but the delete action itself is clearly differentiated from list, describe, create, pause, and resume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, nor any exclusions or prerequisites. The description implies 'use this to delete a vcluster,' but it does not discuss cases like pausing instead of deleting, or when keep_pvc or delete_namespace should be set. This leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_describeB
Status, resources and configuration of one vcluster. Namespace defaults to vcluster-.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| namespace | No | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It reveals the namespace default behavior and that the tool surfaces status/resources/configuration, but it does not state whether the operation is read-only, what output format is returned, or whether a kubeconfig is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the core purpose is front-loaded and the namespace default follows as a useful clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description should cover return format, parameter meaning, and behavior. It covers purpose and namespace default but omits kubeconfig_path semantics and any output/error behavior, leaving an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It only adds meaning for namespace by giving the vcluster-<name> default; name is left implicit and kubeconfig_path is completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool returns status, resources, and configuration for a single vcluster, which is a clear scope and distinguishes it from vcluster_list. It lacks an explicit verb, relying on the tool name 'describe', and does not specify what 'resources' or 'configuration' include.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'one vcluster' wording implies this is for inspecting a single vcluster rather than listing all clusters, but no alternatives or exclusions are named. The namespace default is helpful execution context, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_disconnectB
Disconnect from the currently connected vcluster.
| Name | Required | Description | Default |
|---|---|---|---|
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation disconnects, but does not explain side effects, whether authentication is needed, what happens to the current kubeconfig context, or whether the optional kubeconfig_path affects which connection is terminated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler or redundancy. The action is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and one undocumented optional parameter, the description is too sparse. It gives enough to recognize the tool's purpose but not enough to invoke it correctly with confidence, especially regarding kubeconfig_path semantics and behavioral impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter, kubeconfig_path, with 0% schema description coverage, and the description does not mention it at all. An agent cannot determine whether the path identifies the connection, overrides the current context, or is irrelevant when null.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Disconnect') and a clear resource ('currently connected vcluster'). It is unambiguous and clearly distinguishable from sibling tools such as vcluster_list, vcluster_pause, or vcluster_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a vcluster connection exists and should be terminated, but it does not explicitly state prerequisites, when to use this tool versus alternatives, or what 'currently connected' means in practice. Usage is implied rather than instructed.
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 without switching the caller's context.
Returns the path to a private (0600) temp file, not the contents, because it holds client credentials. Pass the path to other tools; delete it after use.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| server | No | API server address to record, when the vcluster is reached via ingress or a load balancer rather than a port forward. | |
| insecure | No | ||
| namespace | No | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the transparency burden. It discloses the nontrivial return convention (path to a 0600 temp file rather than contents), the reason (client credentials), the fact that the caller's context is unchanged, and the need to delete the file afterward. These are the key behavioral details an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core purpose appears in the first sentence, followed by the return convention, security rationale, and cleanup instruction. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool returns, why it returns a file path, and how to handle the result, which is critical given there is no output schema. However, with five parameters and no annotations, it leaves parameter meanings and default behavior under-specified, so an agent may not know how to set `namespace`, `kubeconfig_path`, or `insecure` correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, with just `server` having a description. The description adds no parameter-level detail, leaving `name`, `insecure`, `namespace`, and `kubeconfig_path` to be inferred from their names. This does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation ('Export a vcluster kubeconfig') and adds a distinguishing qualifier ('without switching the caller's context'), which clearly separates it from sibling commands like vcluster_create or vcluster_delete. There is no ambiguity about the resource or the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when another tool needs a vcluster kubeconfig and the current context must be preserved. However, it does not explicitly name alternatives or state when not to use it, so the agent must infer the decision boundary from the context-preservation wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_listB
List all vclusters in the current Kubernetes context.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Also return the absolute Created timestamp, which AgeSeconds otherwise covers. | |
| kubeconfig_path | No |
TDQS
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 the read-only nature implicitly ('List') and the scope ('current Kubernetes context'), but doesn't mention whether it requires a kubeconfig, what happens if no vclusters exist, or any side effects. For a list operation, the lack of explicit read-only confirmation and error behavior is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource. No wasted words. It earns its place by stating the scope ('current Kubernetes context').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 2 optional parameters and no output schema, the description is mostly adequate. However, it doesn't explain the kubeconfig_path parameter's role or how the 'full' flag affects output beyond the schema's own description. The lack of annotations means the description should state that this is a read-only operation, which it only implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the 'full' parameter is described in the schema, but 'kubeconfig_path' has no description. The tool description adds no parameter-level meaning beyond the schema. With 50% coverage, the description should compensate for the undocumented kubeconfig_path parameter, but it doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('vclusters') with a clear scope ('in the current Kubernetes context'). It distinguishes itself from siblings like vcluster_describe (which implies detail on one) and vcluster_create/delete (mutations), though it doesn't explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call it to list vclusters in the current context. It doesn't explicitly state when to use this vs vcluster_describe or when not to use it. The 'current Kubernetes context' phrase gives some context but no exclusions or alternatives.
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, stopping its workloads without deleting state.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| namespace | No | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does add meaningful behavioral context: it stops workloads and preserves state. It is honest about the non-destructive nature, though it could mention reversibility or prerequisites 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence with no filler. The key action and scope are front-loaded, making it easy to scan and quickly understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool, the description captures the core behavior but misses parameter semantics and explicit guidance on when to use it versus resume or delete. Without annotations or an output schema, a bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three parameters. The required 'name' is partially inferable from the tool purpose, but namespace and kubeconfig_path semantics are left completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Pause a running vcluster'), the target resource, and the key behavioral outcome ('stopping its workloads without deleting state'). It distinguishes this tool from siblings like vcluster_delete and vcluster_resume by emphasizing state preservation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for temporarily suspending a vcluster while retaining state, but it does not explicitly say when to choose pause over resume or delete, nor does it mention any exclusions or alternative routing. Usage context is present but left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcluster_resumeC
Resume a paused vcluster.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| namespace | No | ||
| kubeconfig_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure, but it only says 'Resume a paused vcluster.' It does not indicate side effects, required permissions, reversibility, or what state changes occur. An agent would have no idea whether resuming triggers downtime, requires cluster admin rights, or has any other implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence with no redundant words. It is appropriately front-loaded with the core action. However, it is so sparse that it borders on under-specification rather than genuine conciseness, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters (one required), no output schema, and no annotations, the description is severely incomplete. It does not explain what inputs are needed, what happens after calling, or any prerequisites. An agent would need to guess whether 'name' alone suffices or how namespace/kubeconfig_path affect behavior. The description leaves too much to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters, so the description is the only source for parameter meaning. It mentions none of the parameters (name, namespace, kubeconfig_path). The required 'name' is not even flagged as essential, nor are the optional parameters explained. This is a complete failure to compensate for the schema's silence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Resume') and resource ('a paused vcluster'), and naturally contrasts with the sibling 'vcluster_pause'. It is not a tautology and is unambiguous about its primary action. However, it lacks any nuance about what resuming entails (e.g., restoring state) or how it relates to other lifecycle tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. No mention of preconditions (e.g., the vcluster must be paused), no mention of when NOT to use it, and no reference to sibling tools. The only implied usage is that it is the opposite of pause, but that is not explicit.
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.
18 tool updates
v2.0.0- Removed
delete_namespace_annotation - Removed
delete_namespace_label - Removed
get_namespace_annotations - Removed
get_namespace_labels - Added
namespace_metadata_get - Added
namespace_metadata_set - Removed
set_namespace_annotation - Removed
set_namespace_label - Changed
vcluster_call2 fields changed- added
Input schema / properties / command / descriptionAdded value: +"Command to run inside the vcluster, standard shell quoting, e.g. \"kubectl get pods -n default\"." - changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_callOutput", - "type": "object" -}New value: +null
- Changed
vcluster_certs_check1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": {}, - "type": "array" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_certs_checkOutput", - "type": "object" -}New value: +null
- Changed
vcluster_create5 fields changed- added
Input schema / properties / expose / descriptionAdded value: +"Create a load balancer service exposing the vcluster outside the host cluster." - added
Input schema / properties / set_values / descriptionAdded value: +"Inline helm values as dotted keys, e.g. {\"sync.toHost.ingresses.enabled\": \"true\"}." - changed
Input schema / properties / values / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / values / descriptionAdded value: +"Values file paths; later files override earlier ones." - changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_createOutput", - "type": "object" -}New value: +null
- Changed
vcluster_delete3 fields changed- added
Input schema / properties / delete_namespace / descriptionAdded value: +"DESTRUCTIVE: also delete the host namespace, removing every other workload in it. Only for a namespace that exists solely for this vcluster." - added
Input schema / properties / keep_pvc / descriptionAdded value: +"Retain the persistent volume claim so data survives the deletion." - changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_deleteOutput", - "type": "object" -}New value: +null
- Changed
vcluster_describe1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_describeOutput", - "type": "object" -}New value: +null
- Changed
vcluster_disconnect1 field changed- changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_disconnectOutput", - "type": "object" -}New value: +null
- Changed
vcluster_kubeconfig2 fields changed- added
Input schema / properties / server / descriptionAdded value: +"API server address to record, when the vcluster is reached via ingress or a load balancer rather than a port forward." - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "anyOf": [ - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_kubeconfigOutput", - "type": "object" -}New value: +null
- Changed
vcluster_list2 fields changed- added
Input schema / properties / fullAdded value: +{ + "default": false, + "description": "Also return the absolute Created timestamp, which AgeSeconds otherwise covers.", + "title": "Full", + "type": "boolean" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "items": {}, - "type": "array" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_listOutput", - "type": "object" -}New value: +null
- Changed
vcluster_pause1 field changed- changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_pauseOutput", - "type": "object" -}New value: +null
- Changed
vcluster_resume1 field changed- changed
Output schema / (root)Previous value: -{ - "$defs": { - "CommandResult": { - "properties": { - "exit_code": { - "title": "Exit Code", - "type": "integer" - }, - "output": { - "title": "Output", - "type": "string" - } - }, - "required": [ - "exit_code", - "output" - ], - "title": "CommandResult", - "type": "object" - } - }, - "properties": { - "result": { - "anyOf": [ - { - "$ref": "#/$defs/CommandResult" - }, - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "string" - } - ], - "title": "Result" - } - }, - "required": [ - "result" - ], - "title": "vcluster_resumeOutput", - "type": "object" -}New value: +null
4 tool updates
v0.1.1- Added
vcluster_certs_check - Changed
vcluster_create9 fields changed- added
Input schema / properties / chart_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Chart Name" +} - added
Input schema / properties / chart_repoAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Chart Repo" +} - added
Input schema / properties / chart_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Chart Version" +} - added
Input schema / properties / create_namespaceAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Create Namespace" +} - added
Input schema / properties / exposeAdded value: +{ + "default": false, + "title": "Expose", + "type": "boolean" +} - added
Input schema / properties / kube_config_context_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Kube Config Context Name" +} - added
Input schema / properties / namespaceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Namespace" +} - added
Input schema / properties / set_valuesAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Set Values" +} - changed
Input schema / properties / values / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
vcluster_delete4 fields changed- added
Input schema / properties / delete_namespaceAdded value: +{ + "default": false, + "title": "Delete Namespace", + "type": "boolean" +} - added
Input schema / properties / ignore_not_foundAdded value: +{ + "default": false, + "title": "Ignore Not Found", + "type": "boolean" +} - added
Input schema / properties / keep_pvcAdded value: +{ + "default": false, + "title": "Keep Pvc", + "type": "boolean" +} - added
Input schema / properties / waitAdded value: +{ + "default": true, + "title": "Wait", + "type": "boolean" +}
- Added
vcluster_kubeconfig
14 tool updates
v0.1.0- First observed
delete_namespace_annotation - First observed
delete_namespace_label - First observed
get_namespace_annotations - First observed
get_namespace_labels - First observed
set_namespace_annotation - First observed
set_namespace_label - First observed
vcluster_call - First observed
vcluster_create - First observed
vcluster_delete - First observed
vcluster_describe - First observed
vcluster_disconnect - First observed
vcluster_list - First observed
vcluster_pause - First observed
vcluster_resume
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: listing, describing, checking certs, exporting kubeconfig, pausing/resuming, creating, executing commands, deleting, disconnecting, and managing namespace metadata. There is no overlap that would cause misselection, and the two namespace metadata tools are cleanly separated by get/set.
Most tools follow a clean vcluster_<verb> pattern (list, describe, pause, resume, create, call, delete, disconnect). Minor deviations exist: vcluster_certs_check (noun-verb), vcluster_kubeconfig (noun only), and the namespace_metadata_get/set pair uses a different prefix. These are readable but not perfectly uniform.
With 12 tools, the server is well-scoped for vcluster management. Each tool provides a necessary operation, and the count is comfortably within the ideal 3-15 range, neither bloated nor thin.
The toolset covers the full vcluster lifecycle (create, list, describe, delete, pause/resume) plus operational utilities (certs, kubeconfig, command execution, disconnect). Minor gaps exist: no update/modify tool for vcluster configuration and no explicit connect tool to pair with disconnect, though kubeconfig and call can serve access needs.
Maintenance
Related MCP Connectors
Manage Vozora VPS servers, SSH keys, firewalls, DNS and usage from an AI agent.
1Manage Rackspace Spot Kubernetes Cloudspaces, node pools, and VMs from your AI assistant.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables managing Kubernetes clusters through natural language by providing tools to list resources, view logs, port-forward services, scale deployments, and execute kubectl operations via AI assistants.81-
- AlicenseAqualityCmaintenanceEnables 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.97 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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.36 npm3MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to query, validate, and create vCluster YAML configurations directly from GitHub, supporting version-specific queries and automatic validation.46 npm-