PodWarden
MCP Integration

Available Tools

Complete reference of MCP tools available in PodWarden

PodWarden exposes 121 tools through MCP, organized by category. Tools are classified as read-only, mutating (create/update/deploy), or destructive (delete). The MCP Access Level setting (Settings → MCP) controls which tiers are exposed.

Renamed tools: The list_workload_definitions / get_workload_definition / etc. tools have been renamed to list_stacks / get_stack / etc. Similarly, list_workload_assignments / get_workload_assignment / etc. are now list_deployments / get_deployment / etc. The old names still work as backward-compatible aliases.

Infrastructure overview

ToolTypeDescription
get_infrastructure_overviewReadHigh-level summary: cluster count, host count, GPU totals, workload status, recent deployments
find_gpu_capacityReadFind available GPU capacity across all hosts and clusters, grouped by GPU model
check_cluster_capacityReadCheck available CPU and memory capacity across clusters, compare against deployed workloads
troubleshoot_workloadReadDiagnose issues: fetches deployment, stack, cluster status, pod events, and logs

Clusters

ToolTypeDescription
list_clustersReadList all Kubernetes clusters with node counts, network types, and live status
get_clusterReadDetailed cluster info including nodes, managers, and live Kubernetes status
get_cluster_extendedReadExtended live info: K8s version, namespaces, node details with CPU/memory/GPU, running pods
get_cluster_storage_classesReadList StorageClasses available in a cluster
get_cluster_affectedReadGet resources that would be affected by deleting a cluster (hosts, deployments, endpoints)
create_clusterMutatingCreate a new cluster — provide kubeconfig directly or fetch via SSH from a control-plane node
update_clusterMutatingUpdate cluster settings: name, kubeconfig, namespace, SSH fetch host, protection
delete_clusterDestructiveDelete a cluster record from PodWarden (does NOT uninstall K8s from hosts)
delete_cluster_nodeDestructiveRemove a stale node from a Kubernetes cluster (deletes the K8s node object)

Hosts

ToolTypeDescription
list_hostsReadList all managed hosts with hardware info, status, GPU details, cluster membership
get_hostReadFull host details including hardware specs, GPU info, cluster assignment
update_hostMutatingUpdate host metadata: display name, notes, network types
probe_hostMutatingSSH into a host to gather hardware info (CPU, RAM, disk, GPU) and detect Kubernetes
discover_hostsMutatingTrigger Tailscale host discovery — fetches devices and upserts into PodWarden
set_gateway_roleMutatingEnable or disable the gateway role on a host (ingress entry point)
detect_host_public_ipMutatingDetect the public IP of a host via SSH (for DNS validation)
add_hostMutatingAdd a host manually by IP or hostname (for non-Tailscale hosts)
provision_hostMutatingInstall K3s agent and join the host to a cluster (runs in background)
wipe_hostMutatingRemove K3s from a host and reset to discovered state (runs in background)
register_cluster_from_hostMutatingRegister an existing K3s/K8s installation on a host as a PodWarden cluster
provision_as_control_planeMutatingInstall K3s server on a host and create a new cluster (runs in background)
detach_host_from_clusterMutatingRemove a worker node from its cluster (K8s + PodWarden DB)
delete_hostDestructiveDelete a manually-added host from PodWarden

Stacks

Templates that define what to deploy (image, resources, GPU requirements).

ToolTypeDescription
list_stacksReadList all stacks with resource summaries
get_stackReadFull stack details including env schema, volume mounts, registry credentials
create_stackMutatingCreate a new stack (container template)
update_stackMutatingUpdate an existing stack — only provided fields are changed
delete_stackDestructivePermanently delete a stack

Deployments

Bindings of stacks to clusters — the actual deployments.

ToolTypeDescription
list_deploymentsReadList deployments with status, cluster, stack, and deploy info
get_deploymentReadFull deployment details including env values, resolved volumes, deployment log
get_workload_logsReadGet container logs and pod status from a deployed workload
check_network_compatibilityReadPre-flight check: verify workload network requirements match cluster capabilities
create_deploymentMutatingBind a stack to a cluster (starts in "pending" status)
update_deploymentMutatingUpdate deployment config — changes take effect on next deploy
deploy_workloadMutatingDeploy a deployment to its target Kubernetes cluster (runs in background)
undeploy_workloadMutatingRemove a workload from Kubernetes — deletes Deployment and non-retained PVCs
update_config_templateMutatingUpdate a single config template in a deployment without resending all config_values
run_in_podMutatingExecute a command inside a running pod belonging to a managed deployment
proxy_to_serviceMutatingSend an HTTP request to a deployment's ClusterIP service via in-cluster proxy
migrate_workloadMutatingMigrate a deployed workload to a different node (pre-flight PV affinity checks)
delete_deploymentDestructiveDelete a deployment record (does NOT undeploy — undeploy first)

Apps

ToolTypeDescription
list_appsReadList apps with their stacks, deployments, and current status
get_appReadFull app details including stack config, deployment status, and history
rollback_deploymentMutatingRollback to a previous deployment version — updates the K8s deployment image tag

Ingress rules

ToolTypeDescription
list_ingress_rulesReadList all ingress rules with domain, backend, gateway, and status
get_ingress_ruleReadFull ingress rule details including DNS check results and proxy status
create_ingress_ruleMutatingCreate a new ingress rule — supports managed (K8s) and manual (IP:port) backends
update_ingress_ruleMutatingUpdate an existing ingress rule — only provided fields are changed
check_ingress_dnsMutatingCheck DNS resolution — resolves domain A record and compares to gateway IP
check_ingress_httpMutatingHTTP health check — verifies the full chain: DNS → gateway → ingress → backend
check_ingress_tlsMutatingCheck TLS certificate validity: issuer, expiration date, days remaining
apply_ingress_ruleMutatingGenerate and deploy proxy config for a single ingress rule
apply_all_ingress_rulesMutatingRegenerate and deploy the full proxy config for a gateway host
delete_ingress_ruleDestructivePermanently delete an ingress rule and remove its proxy config

DDNS

ToolTypeDescription
list_ddns_configsReadList all DDNS configurations with provider, status, current IP, and last update
get_ddns_configReadFull DDNS config details (sensitive fields like API tokens are masked)
get_ddns_statusReadCurrent public IP and status summary of all DDNS configurations
create_ddns_configMutatingCreate a new DDNS config (Cloudflare, DuckDNS, Webhook, or Hub provider)
update_ddns_configMutatingUpdate a DDNS config — use "***" for token fields to preserve existing values
test_ddns_configMutatingForce a DNS record update to verify credentials and provider connectivity
delete_ddns_configDestructiveDelete a DDNS config (DNS records are NOT removed — clean up at provider)

Hub catalog

Browse and import stack templates from PodWarden Hub.

ToolTypeDescription
test_hub_connectionReadTest connectivity to the configured PodWarden Hub
list_hub_categoriesReadList template categories (e.g. "AI & Machine Learning", "Databases")
list_hub_templatesReadBrowse templates with search and category filtering
get_hub_templateReadFull template details: image, resources, env schema, ports, volumes
check_hub_updatesReadCheck for updates on Hub-imported stacks
import_hub_templateMutatingImport a Hub template as a local stack

Hub DDNS

Manage DDNS subdomains allocated through PodWarden Hub.

ToolTypeDescription
list_hub_ddns_domainsReadList available DDNS domains from Hub (e.g. vxloc.com)
list_hub_ddns_subdomainsReadList allocated subdomains with current IP addresses
allocate_hub_ddns_subdomainMutatingAllocate a new subdomain (e.g. "myapp.vxloc.com")
update_hub_ddns_subdomain_ipMutatingUpdate the IP address for an allocated subdomain
delete_hub_ddns_subdomainDestructiveRelease a Hub DDNS subdomain (stops resolving, cannot be undone)

Storage

ToolTypeDescription
list_storage_connectionsReadList all storage connections (NFS/S3 backends) with config and status
get_storage_connectionReadStorage connection details including connectivity test results
test_storage_connectionMutatingTest connectivity — NFS: TCP/RPC/export/mount+speed test; S3: endpoint/upload/download speed
create_storage_connectionMutatingCreate a new storage connection (NFS or S3)
update_storage_connectionMutatingUpdate an existing storage connection — only provided fields are changed
create_nfs_storage_classMutatingDeploy NFS provisioner to a cluster and create a StorageClass from an NFS storage connection
delete_storage_connectionDestructiveDelete a storage connection (workloads using it will lose access)

Provisioning jobs

ToolTypeDescription
list_provisioning_jobsReadList provisioning jobs with status, host, playbook, and timing
get_provisioning_jobReadFull job details including stdout and stderr output
cancel_provisioning_jobMutatingRequest cancellation of a running provisioning job

Users

ToolTypeDescription
list_usersReadList system users with role, status, and last active time
get_userReadFull user details
create_userMutatingCreate a new system user with email and role
update_userMutatingUpdate a user's name, email, role, or status
set_user_passwordMutatingSet or change a user's local password (8-72 characters)
delete_userDestructiveRemove a system user

Secrets

ToolTypeDescription
list_secretsReadList all secret keys — values are NOT returned, only key names and metadata
list_ssh_key_pairsReadList SSH key pair names (each pair is {name}_ssh_private + {name}_ssh_public)
get_secretMutatingGet a decrypted secret value by key (handle with care)
set_secretMutatingCreate or update a secret — value is encrypted at rest (AES-256-GCM)
generate_ssh_key_pairMutatingGenerate a new SSH key pair and store both halves in secrets
delete_secretDestructiveDelete a secret by key — cannot delete SSH keys in use by provisioned hosts

Settings

ToolTypeDescription
get_settingsReadGet registry default settings (default registry URL and image tag)
get_tailscale_settingsReadGet Tailscale configuration (tailnet, API key status, discovery tags)
update_settingsMutatingUpdate registry default settings
update_tailscale_settingsMutatingUpdate Tailscale configuration (tailnet, API key, discovery tags)

System configuration

ToolTypeDescription
get_system_configReadGet SMTP, OIDC, and Hub settings (env vars override DB values)
update_system_configMutatingUpdate system config — only pass sections to change (SMTP, OIDC, Hub)
test_smtpMutatingSend a test email using the configured SMTP settings
test_oidcMutatingTest OIDC discovery — validates issuer URL, fetches provider metadata

Role restrictions

Not all tools are available to all token roles. The token's role is enforced on the internal API calls each tool makes:

Actionvieweroperatoradmin
Read tools (list, get, logs)YesYesYes
Mutating tools (create, update, deploy)NoYesYes
Destructive tools (delete, undeploy)NoNoYes
Secret values (get_secret)NoNoYes
System config (update)NoNoYes
User management (create, update, delete)NoNoYes

If a tool is called with insufficient permissions, the internal API returns 403 Forbidden, which the AI assistant sees as a tool error.