UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

192 lines (191 loc) 6.86 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './common'; 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 PostgreSQLConnectionPool { name: string; database: string; user: string; mode: string; size: number; } export interface CreatePostgreSQLConnectionPoolRequest { name: string; database: string; user: string; mode: string; size: number; } export interface UpdatePostgreSQLConnectionPoolRequest { database?: string; user?: string; mode?: string; size?: number; } export interface DatabaseConfig { [key: string]: any; } 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>; getPostgreSQLConnectionPools: (instanceId: number, params?: PaginationParams) => Promise<PaginatedResponse<PostgreSQLConnectionPool>>; getPostgreSQLConnectionPool: (instanceId: number, poolName: string) => Promise<PostgreSQLConnectionPool>; createPostgreSQLConnectionPool: (instanceId: number, data: CreatePostgreSQLConnectionPoolRequest) => Promise<PostgreSQLConnectionPool>; updatePostgreSQLConnectionPool: (instanceId: number, poolName: string, data: UpdatePostgreSQLConnectionPoolRequest) => Promise<PostgreSQLConnectionPool>; deletePostgreSQLConnectionPool: (instanceId: number, poolName: string) => Promise<void>; getMySQLConfig: () => Promise<DatabaseConfig>; getPostgreSQLConfig: () => Promise<DatabaseConfig>; } /** * Creates a databases client for interfacing with the Linode Managed Databases API */ export declare function createDatabasesClient(axios: AxiosInstance): DatabasesClient;