UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

337 lines (336 loc) 11.2 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './common'; import { Volume } from './volumes'; import { NodeBalancer } from './nodebalancers'; export interface LinodeInstance { id: number; label: string; region: string; type: string; status: string; ipv4: string[]; ipv6: string; created: string; updated: string; hypervisor: string; specs: { disk: number; memory: number; vcpus: number; transfer: number; }; alerts: { cpu: number; io: number; network_in: number; network_out: number; transfer_quota: number; }; backups: { enabled: boolean; schedule: { day: string; window: string; }; last_successful: string | null; }; image: string | null; group: string; tags: string[]; host_uuid: string; watchdog_enabled: boolean; } export interface LinodeType { id: string; label: string; class: string; disk: number; memory: number; vcpus: number; network_out: number; transfer: number; gpus: number; price: { hourly: number; monthly: number; }; addons: { backups: { price: { hourly: number; monthly: number; }; }; }; successor: string | null; } export interface Backup { id: number; label: string; status: string; type: 'auto' | 'snapshot'; region: string; created: string; updated: string; finished: string; configs: string[]; disks: Record<string, any>; available: boolean; } export interface NetworkTransfer { used: number; quota: number; billable: number; } export interface MonthlyTransfer { used: number; quota: number; billable: number; } export interface CreateLinodeRequest { region: string; type: string; label?: string; group?: string; root_pass?: string; image?: string; authorized_keys?: string[]; authorized_users?: string[]; backups_enabled?: boolean; booted?: boolean; private_ip?: boolean; tags?: string[]; firewall_id?: number; } export interface UpdateLinodeRequest { label?: string; group?: string; tags?: string[]; watchdog_enabled?: boolean; alerts?: { cpu?: number; io?: number; network_in?: number; network_out?: number; transfer_quota?: number; }; } export interface ResizeLinodeRequest { type: string; allow_auto_disk_resize?: boolean; } export interface CloneLinodeRequest { region?: string; type?: string; label?: string; group?: string; backups_enabled?: boolean; private_ip?: boolean; tags?: string[]; } export interface RebuildLinodeRequest { image: string; root_pass: string; authorized_keys?: string[]; authorized_users?: string[]; stackscript_id?: number; stackscript_data?: Record<string, any>; booted?: boolean; } export interface ConfigInterface { id: number; label: string; purpose: 'public' | 'vlan' | 'vpc'; ipam_address: string | null; primary?: boolean; active?: boolean; subnet_id?: number; vpc_id?: number; ipv4?: { vpc?: string; nat_1_1?: string; }; } export interface CreateConfigInterfaceRequest { purpose: 'public' | 'vlan' | 'vpc'; label?: string; ipam_address?: string; primary?: boolean; subnet_id?: number; vpc_id?: number; ipv4?: { vpc?: string; nat_1_1?: string; }; } export interface UpdateConfigInterfaceRequest { label?: string; ipam_address?: string; primary?: boolean; ipv4?: { vpc?: string; nat_1_1?: string; }; } export interface ConfigInterfaceOrderRequest { ids: number[]; } export interface LinodeConfig { id: number; label: string; comments: string; kernel: string; memory_limit: number; root_device: string; devices: Record<string, any>; initrd: string | null; created: string; updated: string; helpers: { updatedb_disabled: boolean; distro: boolean; network: boolean; modules_dep: boolean; }; interfaces: ConfigInterface[]; } export interface CreateLinodeConfigRequest { label: string; kernel?: string; comments?: string; memory_limit?: number; root_device?: string; devices?: Record<string, any>; initrd?: string | null; helpers?: { updatedb_disabled?: boolean; distro?: boolean; network?: boolean; modules_dep?: boolean; }; interfaces?: any[]; } export interface LinodeDisk { id: number; label: string; status: string; size: number; filesystem: string; created: string; updated: string; } export interface CreateLinodeDiskRequest { label: string; size: number; filesystem?: string; read_only?: boolean; image?: string; root_pass?: string; authorized_keys?: string[]; authorized_users?: string[]; stackscript_id?: number; stackscript_data?: Record<string, any>; } export interface CreateSnapshotRequest { label: string; } export interface RestoreBackupRequest { linode_id?: number; overwrite?: boolean; } export interface LinodeIPAllocationRequest { type: 'ipv4' | 'ipv6'; public: boolean; } export interface LinodeIPUpdateRequest { rdns: string | null; } export interface ResetRootPasswordRequest { root_pass: string; } export interface MigrateLinodeRequest { region?: string; } export interface CloneDiskRequest { label?: string; } export interface Kernel { id: string; label: string; version: string; kvm: boolean; architecture: string; pvops: boolean; deprecated: boolean; built: string; } export interface UpdateLinodeFirewallsRequest { ids: number[]; } export interface LinodeInstancesClient { getLinodes: (params?: PaginationParams) => Promise<PaginatedResponse<LinodeInstance>>; getLinodeById: (id: number) => Promise<LinodeInstance>; createLinode: (data: CreateLinodeRequest) => Promise<LinodeInstance>; updateLinode: (id: number, data: UpdateLinodeRequest) => Promise<LinodeInstance>; deleteLinode: (id: number) => Promise<{}>; bootLinode: (id: number, configId?: number) => Promise<{}>; rebootLinode: (id: number, configId?: number) => Promise<{}>; shutdownLinode: (id: number) => Promise<{}>; resizeLinode: (id: number, data: ResizeLinodeRequest) => Promise<{}>; cloneLinode: (id: number, data: CloneLinodeRequest) => Promise<LinodeInstance>; rebuildLinode: (id: number, data: RebuildLinodeRequest) => Promise<LinodeInstance>; rescueLinode: (id: number, devices: Record<string, number>) => Promise<{}>; migrateLinode: (id: number, data?: MigrateLinodeRequest) => Promise<{}>; mutateLinode: (id: number) => Promise<{}>; resetRootPassword: (id: number, data: ResetRootPasswordRequest) => Promise<{}>; getLinodeConfigs: (linodeId: number, params?: PaginationParams) => Promise<PaginatedResponse<LinodeConfig>>; getLinodeConfig: (linodeId: number, configId: number) => Promise<LinodeConfig>; createLinodeConfig: (linodeId: number, data: CreateLinodeConfigRequest) => Promise<LinodeConfig>; updateLinodeConfig: (linodeId: number, configId: number, data: Partial<CreateLinodeConfigRequest>) => Promise<LinodeConfig>; deleteLinodeConfig: (linodeId: number, configId: number) => Promise<{}>; getConfigInterfaces: (linodeId: number, configId: number) => Promise<PaginatedResponse<ConfigInterface>>; getConfigInterface: (linodeId: number, configId: number, interfaceId: number) => Promise<ConfigInterface>; createConfigInterface: (linodeId: number, configId: number, data: CreateConfigInterfaceRequest) => Promise<ConfigInterface>; updateConfigInterface: (linodeId: number, configId: number, interfaceId: number, data: UpdateConfigInterfaceRequest) => Promise<ConfigInterface>; deleteConfigInterface: (linodeId: number, configId: number, interfaceId: number) => Promise<{}>; reorderConfigInterfaces: (linodeId: number, configId: number, data: ConfigInterfaceOrderRequest) => Promise<{}>; getLinodeDisks: (linodeId: number, params?: PaginationParams) => Promise<PaginatedResponse<LinodeDisk>>; getLinodeDisk: (linodeId: number, diskId: number) => Promise<LinodeDisk>; createLinodeDisk: (linodeId: number, data: CreateLinodeDiskRequest) => Promise<LinodeDisk>; updateLinodeDisk: (linodeId: number, diskId: number, data: Partial<CreateLinodeDiskRequest>) => Promise<LinodeDisk>; deleteLinodeDisk: (linodeId: number, diskId: number) => Promise<{}>; resizeLinodeDisk: (linodeId: number, diskId: number, size: number) => Promise<{}>; cloneDisk: (linodeId: number, diskId: number, data?: CloneDiskRequest) => Promise<LinodeDisk>; resetDiskPassword: (linodeId: number, diskId: number, password: string) => Promise<{}>; getBackups: (linodeId: number) => Promise<{ automatic: Backup[]; snapshot: { current: Backup | null; in_progress: Backup | null; }; }>; getBackup: (linodeId: number, backupId: number) => Promise<Backup>; createSnapshot: (linodeId: number, data: CreateSnapshotRequest) => Promise<Backup>; cancelBackups: (linodeId: number) => Promise<{}>; enableBackups: (linodeId: number) => Promise<{}>; restoreBackup: (linodeId: number, backupId: number, data?: RestoreBackupRequest) => Promise<{}>; getLinodeIPs: (linodeId: number) => Promise<any>; allocateIP: (linodeId: number, data: LinodeIPAllocationRequest) => Promise<any>; getLinodeIP: (linodeId: number, address: string) => Promise<any>; updateLinodeIP: (linodeId: number, address: string, data: LinodeIPUpdateRequest) => Promise<any>; deleteLinodeIP: (linodeId: number, address: string) => Promise<{}>; getLinodeFirewalls: (linodeId: number, params?: PaginationParams) => Promise<PaginatedResponse<any>>; applyFirewalls: (linodeId: number) => Promise<{}>; updateLinodeFirewalls: (linodeId: number, data: UpdateLinodeFirewallsRequest) => Promise<{}>; getLinodeStats: (id: number) => Promise<any>; getLinodeStatsByDate: (id: number, year: string, month: string) => Promise<any>; getNetworkTransfer: (id: number) => Promise<NetworkTransfer>; getMonthlyTransfer: (id: number, year: string, month: string) => Promise<MonthlyTransfer>; getKernels: (params?: PaginationParams) => Promise<PaginatedResponse<Kernel>>; getKernelById: (id: string) => Promise<Kernel>; getTypes: (params?: PaginationParams) => Promise<PaginatedResponse<LinodeType>>; getType: (id: string) => Promise<LinodeType>; getLinodeNodeBalancers: (linodeId: number, params?: PaginationParams) => Promise<PaginatedResponse<NodeBalancer>>; getLinodeVolumes: (linodeId: number, params?: PaginationParams) => Promise<PaginatedResponse<Volume>>; } export declare function createInstancesClient(axios: AxiosInstance): LinodeInstancesClient;