UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

162 lines (161 loc) 5.62 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './instances'; export interface DatabaseEngine { id: string; engine: string; version: string; } export interface DatabaseType { id: string; label: string; engines: DatabaseEngine[]; class: string; memory_mb: number; disk_mb: number; vcpus: number; price: { hourly: number; monthly: number; }; regions: string[]; } export interface DatabaseInstance { id: number; status: 'provisioning' | 'active' | 'suspending' | 'suspended' | 'resuming' | 'restoring' | 'failed' | 'degraded'; label: string; region: string; type: string; engine: string; version: string; cluster_size: number; replica_set?: boolean; encrypted: boolean; ssl_connection: boolean; allow_list: string[]; port: number; hosts: { primary?: string; secondary?: string; primary_read_only?: string; }; created: string; updated: string; } export interface MySQLDatabaseInstance extends DatabaseInstance { updates?: { day_of_week: number; duration: number; frequency: string; hour_of_day: number; week_of_month?: number; }; } export interface PostgreSQLDatabaseInstance extends DatabaseInstance { updates?: { day_of_week: number; duration: number; frequency: string; hour_of_day: number; week_of_month?: number; }; } export interface DatabaseCredentials { username: string; password: string; } export interface SSLCertificate { ca_certificate: string; } export interface CreateMySQLDatabaseRequest { label: string; region: string; type: string; engine: string; allow_list?: string[]; cluster_size?: number; encrypted?: boolean; ssl_connection?: boolean; tags?: string[]; updates?: { day_of_week: number; duration: number; frequency: 'weekly' | 'monthly'; hour_of_day: number; week_of_month?: number; }; } export interface UpdateMySQLDatabaseRequest { label?: string; allow_list?: string[]; updates?: { day_of_week?: number; duration?: number; frequency?: 'weekly' | 'monthly'; hour_of_day?: number; week_of_month?: number; }; tags?: string[]; } export interface CreatePostgreSQLDatabaseRequest { label: string; region: string; type: string; engine: string; allow_list?: string[]; cluster_size?: number; encrypted?: boolean; ssl_connection?: boolean; tags?: string[]; updates?: { day_of_week: number; duration: number; frequency: 'weekly' | 'monthly'; hour_of_day: number; week_of_month?: number; }; } export interface UpdatePostgreSQLDatabaseRequest { label?: string; allow_list?: string[]; updates?: { day_of_week?: number; duration?: number; frequency?: 'weekly' | 'monthly'; hour_of_day?: number; week_of_month?: number; }; tags?: string[]; } export interface DatabasesClient { getEngines: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseEngine>>; getEngine: (engineId: string) => Promise<DatabaseEngine>; getTypes: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseType>>; getType: (typeId: string) => Promise<DatabaseType>; getDatabaseInstances: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseInstance>>; getMySQLInstances: (params?: PaginationParams) => Promise<PaginatedResponse<MySQLDatabaseInstance>>; getMySQLInstance: (instanceId: number) => Promise<MySQLDatabaseInstance>; createMySQLInstance: (data: CreateMySQLDatabaseRequest) => Promise<MySQLDatabaseInstance>; updateMySQLInstance: (instanceId: number, data: UpdateMySQLDatabaseRequest) => Promise<MySQLDatabaseInstance>; deleteMySQLInstance: (instanceId: number) => Promise<void>; getMySQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>; resetMySQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>; getMySQLSSLCertificate: (instanceId: number) => Promise<SSLCertificate>; patchMySQLInstance: (instanceId: number) => Promise<void>; suspendMySQLInstance: (instanceId: number) => Promise<void>; resumeMySQLInstance: (instanceId: number) => Promise<void>; getPostgreSQLInstances: (params?: PaginationParams) => Promise<PaginatedResponse<PostgreSQLDatabaseInstance>>; getPostgreSQLInstance: (instanceId: number) => Promise<PostgreSQLDatabaseInstance>; createPostgreSQLInstance: (data: CreatePostgreSQLDatabaseRequest) => Promise<PostgreSQLDatabaseInstance>; updatePostgreSQLInstance: (instanceId: number, data: UpdatePostgreSQLDatabaseRequest) => Promise<PostgreSQLDatabaseInstance>; deletePostgreSQLInstance: (instanceId: number) => Promise<void>; getPostgreSQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>; resetPostgreSQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>; getPostgreSQLSSLCertificate: (instanceId: number) => Promise<SSLCertificate>; patchPostgreSQLInstance: (instanceId: number) => Promise<void>; suspendPostgreSQLInstance: (instanceId: number) => Promise<void>; resumePostgreSQLInstance: (instanceId: number) => Promise<void>; } /** * Creates a databases client for interfacing with the Linode Managed Databases API */ export declare function createDatabasesClient(axios: AxiosInstance): DatabasesClient;