@takashito/linode-mcp-server
Version:
MCP server for Linode API
134 lines (133 loc) • 4.13 kB
TypeScript
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;