create_kubernetes_cluster
Provision a Kubernetes cluster on Civo with defined name, region, network, node count, size, and version.
Instructions
Create a new Kubernetes cluster on Civo
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Cluster name | |
| region | Yes | Region identifier | |
| network_id | Yes | Network ID | |
| nodes | Yes | Number of nodes | |
| node_size | Yes | Node size | |
| kubernetes_version | Yes | Kubernetes version |
Implementation Reference
- src/tools/kubernetes.ts:17-57 (schema)Schema definition for the create_kubernetes_cluster tool, defining input properties (name, region, network_id, nodes, node_size, kubernetes_version) and required fields.
export const CREATE_KUBERNETES_CLUSTER_TOOL: Tool = { name: 'create_kubernetes_cluster', description: 'Create a new Kubernetes cluster on Civo', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Cluster name', }, region: { type: 'string', description: 'Region identifier', }, network_id: { type: 'string', description: 'Network ID', }, nodes: { type: 'number', description: 'Number of nodes', }, node_size: { type: 'string', description: 'Node size', }, kubernetes_version: { type: 'string', description: 'Kubernetes version', }, }, required: [ 'name', 'region', 'network_id', 'nodes', 'node_size', 'kubernetes_version', ], }, }; - src/index.ts:490-523 (handler)Handler for the create_kubernetes_cluster tool - validates arguments, calls the createCluster API function, and returns a formatted response.
case 'create_kubernetes_cluster': { if ( typeof args !== 'object' || args === null || typeof args.name !== 'string' || typeof args.region !== 'string' || typeof args.network_id !== 'string' || typeof args.nodes !== 'number' || typeof args.node_size !== 'string' || typeof args.kubernetes_version !== 'string' ) { throw new Error('Invalid arguments for create_kubernetes_cluster'); } const cluster = await createCluster( args as { name: string; region: string; network_id: string; nodes: number; node_size: string; kubernetes_version: string; } ); return { content: [ { type: 'text', text: `Created Kubernetes cluster ${cluster.name} (ID: ${cluster.id})`, }, ], isError: false, }; } - src/index.ts:87-93 (registration)Registration of the tool in the server's capabilities object, mapping the tool name to the tool definition.
[CREATE_KUBERNETES_CLUSTER_TOOL.name]: CREATE_KUBERNETES_CLUSTER_TOOL, [DELETE_KUBERNETES_CLUSTER_TOOL.name]: DELETE_KUBERNETES_CLUSTER_TOOL, [LIST_KUBERNETES_VERSIONS_TOOL.name]: LIST_KUBERNETES_VERSIONS_TOOL, }, }, } ); - src/index.ts:114-118 (registration)Listing the tool in the ListTools handler so it appears in the available tools list.
CREATE_KUBERNETES_CLUSTER_TOOL, DELETE_KUBERNETES_CLUSTER_TOOL, LIST_KUBERNETES_VERSIONS_TOOL, ], })); - src/api/kubernetes.ts:33-67 (helper)The actual API helper function createCluster that makes a POST request to the Civo API to create a Kubernetes cluster.
export async function createCluster(params: { name: string; region: string; network_id: string; nodes: number; node_size: string; kubernetes_version: string; }): Promise<CivoKubernetesCluster> { checkRateLimit(); const url = `${CIVO_API_URL}/kubernetes/clusters`; const response = await fetch(url, { method: 'POST', headers: { Authorization: `Bearer ${CIVO_API_KEY}`, 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ name: params.name, region: params.region, network_id: params.network_id, nodes: params.nodes.toString(), node_size: params.node_size, kubernetes_version: params.kubernetes_version, }), }); if (!response.ok) { throw new Error( `Civo API error: ${response.status} ${response.statusText}` ); } return response.json(); }