Kubernetes MCP Server
Manage Kubernetes and OpenShift clusters from an assistant through the cluster's API
Query and, if enabled, manage XCP-ng pools, hosts, VMs and backups through Xen Orchestra
Official · Vates TypeScript Local · stdio Cloud platformsDevOps and monitoring
47 popularity score ★ 996 ↓ 163/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs XO_URL, XO_TOKEN. Replace each <NAME> with your value.
claude mcp add xen-orchestra -e XO_URL=<XO_URL> -e XO_TOKEN=<XO_TOKEN> -- npx -y @xen-orchestra/mcp{
"mcpServers": {
"xen-orchestra": {
"command": "npx",
"args": [
"-y",
"@xen-orchestra/mcp"
],
"env": {
"XO_URL": "<XO_URL>",
"XO_TOKEN": "<XO_TOKEN>"
}
}
}
}{
"mcpServers": {
"xen-orchestra": {
"command": "npx",
"args": [
"-y",
"@xen-orchestra/mcp"
],
"env": {
"XO_URL": "<XO_URL>",
"XO_TOKEN": "<XO_TOKEN>"
}
}
}
}{
"servers": {
"xen-orchestra": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@xen-orchestra/mcp"
],
"env": {
"XO_URL": "<XO_URL>",
"XO_TOKEN": "<XO_TOKEN>"
}
}
}
}[mcp_servers.xen-orchestra]
command = "npx"
args = ["-y", "@xen-orchestra/mcp"]
[mcp_servers.xen-orchestra.env]
XO_URL = "<XO_URL>"
XO_TOKEN = "<XO_TOKEN>"gemini mcp add --scope user -e XO_URL=<XO_URL> -e XO_TOKEN=<XO_TOKEN> xen-orchestra npx -- -y @xen-orchestra/mcpXO_URL |
Required: Address of the Xen Orchestra server, e.g. https://xo.example.com. |
|---|---|
XO_TOKEN |
Required: XO authentication token; or set XO_USERNAME and XO_PASSWORD instead. The token wins when both are set. |
XO_USERNAME |
Optional: XO admin user, used when no token is given. |
XO_PASSWORD |
Optional: Password for XO_USERNAME. |
XO_MCP_ENABLE_ACTIONS |
Optional: Set to 1 to add the write {domain}_action tools; read-only otherwise. |
XO_MCP_DENY_LIST |
Optional: Comma-separated operationIds to drop, e.g. DeleteVm,HardShutdownVm. |
HTTPS_PROXY |
Optional: Outbound proxy for HTTPS requests (HTTP_PROXY and NO_PROXY are also read). |
@xen-orchestra/mcp is Vates' own MCP server for Xen Orchestra (XO), the web management layer for XCP-ng and XenServer. It runs on your machine over stdio and talks to an XO instance through its REST API, so an assistant can answer questions about pools, hosts, VMs, storage repositories, networks, backup jobs, alarms and tasks.
Its tools are not a fixed list. At start it downloads the OpenAPI spec from your XO server (/rest/v0/docs/swagger.json) and creates one {domain}_query tool per resource group, each taking an operation name plus optional id, filter, fields and limit. A newer XO therefore brings new tools without a new package release. Three utility tools are always present: a connection check, a documentation search and an infrastructure summary.
By default it only reads. Setting XO_MCP_ENABLE_ACTIONS=1 adds a {domain}_action tool per group for create, update and delete operations, from snapshots to VM deletion or a pool emergency shutdown. Each action first returns a preview and a one-time confirm_token that must be sent back within five minutes before anything runs. XO_MCP_DENY_LIST removes named operations entirely.
In the code (src/xo-client.mts), every request to XO is cut off after 30 seconds and the start-up check that MCP is enabled on the server after 10 seconds; a token is sent as XO's authenticationToken cookie, a username and password as HTTP Basic auth.
| Runtime | Node.js 20+ |
|---|
Node.js 20 or later (the docs launch it with npx). A running Xen Orchestra 6.5 or later with the REST API enabled; older versions fail at start with 'Unable to verify MCP status (HTTP 404)'. An XO account: either an authentication token (made on the XO /user page or with xo-cli create-token) or a username and password of a user with admin rights. The XO admin must not have turned MCP off in xo-server's config ([mcp] enabled = false).
Read-only unless XO_MCP_ENABLE_ACTIONS=1 is set. Stats endpoints and binary downloads (.xva, .ova, .vhd, .raw exports) are not exposed as tools. The tool list depends on the XO version it connects to, so the domains listed here are those of a current xo-server. One process serves one XO instance; several instances need one entry each. Proxy support is Basic auth only (no NTLM or Kerberos) and NO_PROXY takes no CIDR ranges. If an admin disables MCP on the XO side, the server exits at start with 'MCP disabled by admin'. Each request to XO times out after 30 seconds.
Suits XCP-ng / Xen Orchestra administrators on XO 6.5 or later who want to ask about their infrastructure, inventory and backup status in plain language, with the option to allow guarded changes behind a confirm step. Because it is from Vates and builds its tools from XO's own API spec, it tracks the product closely. Not for older XO releases, for VMware, Proxmox or plain Xen without XO, or for pulling performance stats and disk exports, which it leaves to the REST API directly.
check_connectionsearch_documentationget_infrastructure_summarypools_queryhosts_queryvms_queryvdis_querysrs_queryvbds_querypbds_querynetworks_queryvifs_querypifs_querybackup_jobs_querybackup_logs_queryrestore_logs_querybackup_repositories_querybackup_archives_queryschedules_queryusers_querygroups_queryservers_queryalarms_querymessages_queryevents_querytasks_queryproxies_querypgpus_querypcis_querysms_queryxoa_querydocs_query