UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

134 lines (133 loc) 4.13 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './instances'; export interface KubernetesCluster { id: number; label: string; k8s_version: string; region: string; status: 'ready' | 'not_ready' | 'provisioning' | 'deleted' | 'updating' | 'upgrading'; created: string; updated: string; tags: string[]; control_plane: { high_availability: boolean; }; } export interface KubernetesNodePool { id: number; count: number; type: string; tags: string[]; autoscaler?: { enabled: boolean; min?: number; max?: number; }; nodes: KubernetesNode[]; } export interface KubernetesNode { id: string; instance_id: number; status: 'ready' | 'not_ready' | 'provisioning'; } export interface KubernetesVersion { id: string; } export interface KubeConfig { kubeconfig: string; } export interface APIEndpoint { endpoint: string; } export interface KubernetesDashboard { url: string; } export interface KubernetesType { id: string; label: string; price: { monthly: number; hourly: number; }; region_prices?: Record<string, { monthly: number; hourly: number; }>; } export interface CreateKubernetesClusterRequest { label: string; region: string; k8s_version: string; tags?: string[]; node_pools: { type: string; count: number; tags?: string[]; autoscaler?: { enabled: boolean; min?: number; max?: number; }; }[]; control_plane?: { high_availability?: boolean; }; } export interface UpdateKubernetesClusterRequest { label?: string; k8s_version?: string; tags?: string[]; control_plane?: { high_availability?: boolean; }; } export interface CreateNodePoolRequest { type: string; count: number; tags?: string[]; autoscaler?: { enabled: boolean; min?: number; max?: number; }; } export interface UpdateNodePoolRequest { count?: number; tags?: string[]; autoscaler?: { enabled: boolean; min?: number; max?: number; }; } export interface RecycleNodePoolRequest { nodes: string[]; } export interface KubernetesClient { getClusters: (params?: PaginationParams) => Promise<PaginatedResponse<KubernetesCluster>>; getCluster: (id: number) => Promise<KubernetesCluster>; createCluster: (data: CreateKubernetesClusterRequest) => Promise<KubernetesCluster>; updateCluster: (id: number, data: UpdateKubernetesClusterRequest) => Promise<KubernetesCluster>; deleteCluster: (id: number) => Promise<void>; recycleCluster: (id: number) => Promise<void>; upgradeCluster: (id: number) => Promise<void>; getNodePools: (clusterId: number) => Promise<KubernetesNodePool[]>; getNodePool: (clusterId: number, poolId: number) => Promise<KubernetesNodePool>; createNodePool: (clusterId: number, data: CreateNodePoolRequest) => Promise<KubernetesNodePool>; updateNodePool: (clusterId: number, poolId: number, data: UpdateNodePoolRequest) => Promise<KubernetesNodePool>; deleteNodePool: (clusterId: number, poolId: number) => Promise<void>; recycleNodes: (clusterId: number, poolId: number, data: RecycleNodePoolRequest) => Promise<void>; deleteNode: (clusterId: number, nodeId: string) => Promise<void>; recycleNode: (clusterId: number, nodeId: string) => Promise<void>; getKubeconfig: (id: number) => Promise<KubeConfig>; getAPIEndpoints: (id: number) => Promise<APIEndpoint[]>; getDashboardURL: (id: number) => Promise<KubernetesDashboard>; deleteServiceToken: (id: number) => Promise<void>; getVersions: () => Promise<KubernetesVersion[]>; getVersion: (version: string) => Promise<KubernetesVersion>; getTypes: () => Promise<KubernetesType[]>; } /** * Creates a Kubernetes (LKE) client for interfacing with the Linode Kubernetes Engine API */ export declare function createKubernetesClient(axios: AxiosInstance): KubernetesClient;