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